C编程中 scanf("%s",&s)是什么意思
当运行以下程序时,从键盘输入:Ah2MAA3ha,请写出输出结果。main(){chars[80],c='a';inti=0;inti=0;scanf("%s",s);w...
当运行以下程序时,从键盘输入:Ah2MA A3ha,请写出输出结果。
main()
{ char s[80], c='a';
int i=0;
int i=0;
scanf("%s",s);
while(s[i++]!='\0')
if(s[i] == c) s[i]=s[i]-32;
else if(s[i]==c-32) s[i]=s[i]+32;
puts(s);
}
这道题具体是什么意思,初学者什么都不懂,可以给出解题思路与注释吗? 展开
main()
{ char s[80], c='a';
int i=0;
int i=0;
scanf("%s",s);
while(s[i++]!='\0')
if(s[i] == c) s[i]=s[i]-32;
else if(s[i]==c-32) s[i]=s[i]+32;
puts(s);
}
这道题具体是什么意思,初学者什么都不懂,可以给出解题思路与注释吗? 展开
5个回答
展开全部
首先你要了解scanf函数在遇到空格,换行时就会停止读取,所以输入Ah2MA A3ha实际上只有Ah2MA保存到了数组中。s[i++]!='\0'就是判断有没有到字符串的末尾,如果没有就判断字符是不是'a'如果是就变为小写,如果是'A'则变为小写。当然因为s[i++]!='\0'判断完之后i已经指向第二个字符了,所以第一个大写的A不会变为小写!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Ah2MA A3ha之间是空格,现在是字符数组,空格也会被存入 ,所以Ah2MA A3ha整个都存入数组吧? 我记得好像是啊??
s[i++]!='\0 现在判断的不是字符串尾,是判断是不是空格,遇到空格就终止循环
if(s[i] == c) s[i]=s[i]-32;
else if(s[i]==c-32) s[i]=s[i]+32;
这是让小写a变为大写 大写变为小写
s[i++]!='\0 现在判断的不是字符串尾,是判断是不是空格,遇到空格就终止循环
if(s[i] == c) s[i]=s[i]-32;
else if(s[i]==c-32) s[i]=s[i]+32;
这是让小写a变为大写 大写变为小写
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
scanf("%s",&s)
这个是错的,%s说明输入的是字符串,s应该是个数组的首地址。就不需要在&s了
这个是错的,%s说明输入的是字符串,s应该是个数组的首地址。就不需要在&s了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先找本书看看吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询