/**在考生目录的Paper子目录下,有Modify.c文件,该文件中“/ ***** N ***** /”的下一行中有错误,*请改正(注意:不得加行、减行、加句、减句,否则后果自负)。*该程序功能:用递归法将一个六位整数n转换成字符串,例如输入123456,应输出字符串"123456"。*/#include<stdio.h>void itoa(long i,char *s){if(i==0)return;/****** 1 ******/*s = '0'+i%10;//*s = '1'+i%10;itoa(i/10,s-1);}void main(){long n;char str[7]="";scanf("%ld",&n);/****** 2 ******/itoa(n,str+5);//itoa(n,str+6);printf("%s",str);}itoa(n,str+5)什么意思?
3 回答

隔江千里
TA贡献1906条经验 获得超10个赞
对串“123456”来说, 从str到str+5,因为是从0开始算的,没有到str+6;
因为每次递归的时候都有把s〔k〕赋值啊,当i==0时结束,此时s=str-1;然后回朔,则刚好s=str时,*s='0'+1;
然后s++;
则*s='0'+2;
以此类推。就可以得到串s="123456" 了;因为你str有7个空间,且
str[6]='\0';所以可以%s 输出 了。

郎朗坤
TA贡献1921条经验 获得超9个赞
1 *s = '0'+i%10;//*s = '1'+i%10;
是因为 '0'+3=>'3','0'+4=>'4',('0'的asc码是48)
2 itoa(n,str+5);//itoa(n,str+6);
是因为你输入的123456是六位数,数组char str[7]=""是七位
从str[0]到str[6],但str[6]得存放
字符串'123456'后的'\0'结束字符,所以有效的是str[0]到str[5],
所以得是itoa(n,str+5)而不是itoa(n,str+6);
- 3 回答
- 0 关注
- 132 浏览
添加回答
举报
0/150
提交
取消