编写一个用c语言写递归函数,将一个正整数的每一位取出来由高到低的顺序输出,数字之间加短横线
时间: 2023-12-03 22:47:32 浏览: 156
以下是用C语言编写的递归函数,可以将一个正整数的每一位取出来由高到低的顺序输出,数字之间加短横线:
```c
#include <stdio.h>
void printDigits(int n) {
if (n < 10) {
printf("%d", n);
} else {
printDigits(n / 10);
printf("-%d", n % 10);
}
}
int main() {
int num = 12345;
printDigits(num);
return 0;
}
```
在上面的代码中,函数 `printDigits` 使用递归的方式将数字的每一位取出来,并且在输出数字之间加上了短横线。当输入的数字小于 10 时,函数直接输出该数字;否则,函数先递归调用自身,将除最后一位之外的数字输出,然后再输出最后一位数字,并在前面加上一个短横线。运行上述代码会输出:`1-2-3-4-5`。
相关问题
编写一个递归函数,将一个正整数的每一位取出来并按从高位到低位的顺序依次输出,数字之间加上短横线。c语言
以下是一个递归函数实现:
```c
#include <stdio.h>
void printDigits(int num) {
if (num < 10) { // 递归结束条件
printf("%d", num);
} else {
printDigits(num / 10); // 递归调用
printf("-%d", num % 10);
}
}
int main() {
int num;
printf("请输入一个正整数:");
scanf("%d", &num);
printf("该数的每一位按从高到低顺序依次输出为:");
printDigits(num);
printf("\n");
return 0;
}
```
函数printDigits接受一个正整数作为参数,先判断该数是否小于10,如果是,则直接输出该数;如果不是,则递归调用自身,将num除以10作为新的参数传入,直到num小于10为止。在递归回溯的过程中,每次输出num模10的结果,并在数字之间加上短横线。最后在主函数中调用该函数并输出结果。
c语言编写函数,利用递归方法实现正整数各位从高到低位顺序输出
在 C 语言中,你可以使用递归函数来实现将一个正整数转换成字符串并按位序输出。递归是一种通过解决较小规模的问题来逐步解决问题的技术。下面是一个简单的示例,展示了如何使用递归来实现这个功能:
```c
#include <stdio.h>
#include <stdlib.h>
// 用于递归的函数,传入数字的每一位
void print_digits(int num, int index) {
// 基本情况:当数字为0时停止递归
if (num == 0) {
return;
}
// 输出当前位数值
printf("%d", num % 10);
// 继续处理下一位,index加1是因为数组是从0开始的
print_digits(num / 10, index + 1);
}
int main() {
int number = 12345; // 需要转换的正整数
int digits[] = {0}; // 存储每位的临时数组
// 获取数字的位数
int i = 0;
while (number > 0) {
digits[i] = number % 10;
number /= 10;
i++;
}
// 使用递归反转数组元素
print_digits(digits[0], 0);
// 如果需要输出的是完整的字符串,可以添加连接操作
// char str[10];
// for (i = 0; i < sizeof(digits)/sizeof(digits[0]); i++) {
// str[i] = digits[i] + '0';
// }
// str[i] = '\0'; // 结束字符串
// printf("String representation: %s\n", str);
return 0;
}
```
在这个例子中,`print_digits` 函数会递归地处理数字的每一位,并通过 `digits[]` 数组存储。然后在主函数里,我们先手动计算了数字的位数,再用递归倒序输出。注意这只是一个基本版本,如果需要完整字符串,还需要额外处理数组元素。
阅读全文