战地1942进军罗马win10:C语言题目:使用递归法将整数转换成字符串。
来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 06:01:36
题目:使用递归法将整数转换成字符串。例如输入2468时输出字符串为“2468”,n可以是任意位数的整数。
请大家注意,n可以是任意位的整数。
二楼、三楼、四楼的朋友,题错了!运行结果不如题意。
我输入“544488845454545”这么多位整数的时候,结果很奇怪。
请大家注意,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();
}