为了账号安全,请及时绑定邮箱和手机立即绑定

为什么要将itoa(n,str+6);改成itoa(n,str+5) 最后怎么输入STR 谢谢

为什么要将itoa(n,str+6);改成itoa(n,str+5) 最后怎么输入STR 谢谢

C
哔哔one 2023-03-05 19:15:57
/**在考生目录的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 输出 了。

查看完整回答
反对 回复 2023-03-08
?
catspeake

TA贡献1111条经验 获得超0个赞

itoa()函数将整数转换为对应的字符串,保存到指定的字符数组中,
itoa(n,str+5)
将n转换为字符串,保存到str+5字符数组中。

查看完整回答
反对 回复 2023-03-08
?
郎朗坤

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);


查看完整回答
反对 回复 2023-03-08
  • 3 回答
  • 0 关注
  • 132 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号