C编程中 scanf("%s",&s)是什么意思

当运行以下程序时,从键盘输入: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);
}
这道题具体是什么意思,初学者什么都不懂,可以给出解题思路与注释吗?

最后那个s是一个变量,scanf是通俗说是赋值语句,得到终端的输入对变量s初始化
相对有一个printf,这个是输出到标准外设显示。
“%s”是格式化转换,这个s代表字符串,%c代表字符, %d代表整数

总体来说,这个语句是要你输入一串字符,对你设置的变量s赋值。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-30
首先你要了解scanf函数在遇到空格,换行时就会停止读取,所以输入Ah2MA A3ha实际上只有Ah2MA保存到了数组中。s[i++]!='\0'就是判断有没有到字符串的末尾,如果没有就判断字符是不是'a'如果是就变为小写,如果是'A'则变为小写。当然因为s[i++]!='\0'判断完之后i已经指向第二个字符了,所以第一个大写的A不会变为小写!本回答被提问者采纳
第2个回答  2010-06-04
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变为大写 大写变为小写
第3个回答  2010-06-04
scanf("%s",&s)

这个是错的,%s说明输入的是字符串,s应该是个数组的首地址。就不需要在&s了
第4个回答  2010-06-04
先找本书看看吧