编写一个用c语言写递归函数,将一个正整数的每一位取出来由高到低的顺序输出,数字之间加短横线
时间: 2023-12-03 13:47:32 浏览: 52
以下是用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++编写一个递归函数,逆序输出一个正整数每个数位上的数字。
可以的,这是一个技术问题,我可以回答。下面是代码实现:
```
#include <stdio.h>
void reverse(int num) {
if(num == 0) {
return;
} else {
printf("%d", num % 10);
reverse(num / 10);
}
}
int main() {
int num;
printf("请输入一个正整数:");
scanf("%d", &num);
printf("逆序输出:");
reverse(num);
printf("\n");
return 0;
}
```
希望对您有所帮助。另外,我也可以告诉您更多关于C语言和计算机编程方面的知识,如果您有需要的话。