战地1942进军罗马win10:C语言题目:使用递归法将整数转换成字符串。

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 06:01:36
题目:使用递归法将整数转换成字符串。例如输入2468时输出字符串为“2468”,n可以是任意位数的整数。

请大家注意,n可以是任意位的整数。
二楼、三楼、四楼的朋友,题错了!运行结果不如题意。
我输入“544488845454545”这么多位整数的时候,结果很奇怪。

优化一下楼上XD的代码呵呵,加入负数的支持:

main()

{void dtos(int);

int n;

scanf("%d",&n);

dtos(n);

}

void dtos(int n)

{
if(n/10)dtos(n/10); /* 逐位分离 */
else
{ if(n<0)printf("- ");
printf("%c ",n%10+'0');
return;
}

printf("%c ",n%10+'0'); /* 取个位转换为字符 */

}

程序:

main()

{void dtos(int);

int n;

scanf("%d",&n);

dtos(n);

}

void dtos(int n)

{int m;

if(m=n/10)!=0)dtos(m); /* 逐位分离 */

printf("%c ",n%10+’0’); /* 取个位转换为字符 */

}

char *dtos(int n,char *s)

{
if(n<10) {*(s++)=n+48;*s='\0';return s;}

dtos(n%10,dtos(n/10,s));

}
main()

{

int n;
char *s=(char*)malloc(sizeof(char)*20);
printf("please input n\n");
scanf("%d",&n);
if(n<0) {*s='-'; n*=-1; dtos(n,s+1);}
else if(n==0) {*s=48;*(s+1)='\0';}
else dtos(n,s);

printf("result:\n%s\n",s);

getch();

}