c语言 编程 字符型数据
答案:3 悬赏:80
解决时间 2021-02-06 06:42
- 提问者网友:冥界祭月
- 2021-02-05 17:57
#include
main( )
{ char s[80],c='a';
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;
i++; }
puts(s); }
从键盘输入AhaMA(空格)Aha
为什么输出时ahAMa ,求详细解答
最佳答案
- 二级知识专家网友:一身浪痞味
- 2021-02-05 18:09
这个程序的目的是接收一个字符串 将里面的字符'A'进行大小写转换,即大写变小写 小写变大写
接收字符串时如果有空格 scanf函数会认为前一字符串已结束,所以你输入的数据读到s变量的是AhaMA。转换后当然就是ahAMa了!
所有小写字母都比对应大写字母大32 即'a' - 'A' = 32
全部回答
- 1楼网友:高冷不撩人
- 2021-02-05 18:56
读一行用gets,scanf的%s遇到空格就会停了
哦对了scanf和gets一起用好像比较容易遇上初学者所谓的“人品问题”
- 2楼网友:堕落奶泡
- 2021-02-05 18:26
在scanf函数中,可以使用 %c来读取一个字符,使用 %s 读取一个字符串,但
是读取字符串时不忽略空格,读字符串时忽略开始的空格,并且读到空格为止,因此只能读取一个单词,而不是整行字符串,因此一般使用fgets来读取一个字符串。其实scanf函数也可完成这样的功能,而且还更强大。这里主要介绍一个参数,%[ ],这个参数的意义是读入一个字符集合。[ ]是个集合的标志,因此%[ ]特指读入此集合所限定的那些字符, 比如 %[A-Z] 是输入大写字母,一旦遇到不在此集合的字符便停止。如果集合的第一个字符是" ^ ", 这说明读取不在" ^ " 后面集合的字符,既遇到" ^ " 后面集合的字符便停止.注意此时读入的字符串是可以含有空格的。
我要举报
大家都在看
推荐资讯