用递归法将一个整数n转换成字符串。例如,输人483,应输出字符串”483”。n的位数不确定,可以是任意位数的整数。
#include <stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #define N 20 void change(int a,char *p); int main(void) { int number; char num[N]; puts("请输入一个数字"); scanf("%d", &number); if (number < 0)//考虑负数 { putchar('-'); //先输出一个负号'-' number = -number; } change(number, num); int n = strlen(num);//实际长度 for (int i = n - 2; i >= 0; i--) {//注意从n-2反向输出 printf("%c", num[i]); } return 0;
}// puts("");
void change(int a, char* p) { int i = 0; while (a % 10 > 0) { *(p + i) = a % 10+'0';//+'0' 字符0 a /= 10; i++; } *(p + i+1) = '\0'; }
题目解析及答案:
递归法求解...
用户登录可进行刷题及查看答案
递归法求解主要要有结束条件,此题为n/10 == 0时就直接输出,其次本题还要考虑如果整数位负数的情形,此时需要输出一个字符串的负号。
#include<stdio.h> void Convert(int n) { int i; if ((i = n / 10) != 0) Convert(i); putchar(n % 10 + '0'); } int main() { int number; printf("input an integer: "); scanf("%d", &number); printf("output: "); if (number < 0) { putchar('-'); //先输出一个负号'-' number = -number; } Convert(number); printf("\n"); return 0; }
登录后提交答案