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);
}
这道题具体是什么意思,初学者什么都不懂,可以给出解题思路与注释吗?
展开
 我来答
wwwsky089
推荐于2017-10-12 · TA获得超过456个赞
知道小有建树答主
回答量:163
采纳率:75%
帮助的人:37.4万
展开全部
最后那个s是一个变量,scanf是通俗说是赋值语句,得到终端的输入对变量s初始化
相对有一个printf,这个是输出到标准外设显示。
“%s”是格式化转换,这个s代表字符串,%c代表字符, %d代表整数

总体来说,这个语句是要你输入一串字符,对你设置的变量s赋值。
seven_qj
推荐于2017-09-30 · TA获得超过152个赞
知道小有建树答主
回答量:143
采纳率:0%
帮助的人:0
展开全部
首先你要了解scanf函数在遇到空格,换行时就会停止读取,所以输入Ah2MA A3ha实际上只有Ah2MA保存到了数组中。s[i++]!='\0'就是判断有没有到字符串的末尾,如果没有就判断字符是不是'a'如果是就变为小写,如果是'A'则变为小写。当然因为s[i++]!='\0'判断完之后i已经指向第二个字符了,所以第一个大写的A不会变为小写!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1f1d830
2010-06-04 · TA获得超过785个赞
知道小有建树答主
回答量:124
采纳率:0%
帮助的人:208万
展开全部
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变为大写 大写变为小写
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
南坪中学校帅
2010-06-04 · TA获得超过3413个赞
知道小有建树答主
回答量:1201
采纳率:100%
帮助的人:1070万
展开全部
scanf("%s",&s)

这个是错的,%s说明输入的是字符串,s应该是个数组的首地址。就不需要在&s了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
犹悦沅Ql
2010-06-04 · TA获得超过525个赞
知道小有建树答主
回答量:476
采纳率:0%
帮助的人:169万
展开全部
先找本书看看吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式