C语言:输入一批字符,以#结束,并将其中的大写字母改成小写字母?
来源:百度知道 编辑:UC知道 时间:2024/06/24 06:47:23
main()
{char chm,chn;
scanf("%c",&chm);
for(;chm!='#';)
{ chn=chm+32;
if(chm>='A'&&chm<='Z')
printf("%c\n",chn);
else printf("error\n");
scanf("%c",&chm);
}
}
我这个为什么输出时老多了个error,哪位能告诉我出错在哪?
如果你输入的是大写呢..再加32就不能满足你的判断条件了.所以就ERROR了..建议用GETCHAR,如果用SCANF的话就会牵扯FFLUSH的问题,而且你应该先判断大小写,然后再改变,按你这输入的已经被改变,再做判断就不对了
#include "stdio.h"
void main()
{
char chm,chn;
for(;chm!='#';)
{
scanf("%c",&chm);
chn=getchar();/*因为回车也是一个字符,用此语句接受回车*/
if(chm>='A'&&chm<='Z')
{
chn=chm+32;
printf("%c\n",chn);
}
else
printf("error\n");
}
}
你老多error因为你没有接收回车造成的。
需要向你说明一点,输入的回车符 '\n' 也是会被scanf()函数收集到的。
如果程序中没有对此进行判断,那么每次输入中断确认时,都会以回车结束,那
么当scanf读到回车时,chm也会被赋值为'\n' = 10,这不在你的判断范围之
内,所以会提示error。
另外,不太确定你想要的结果,所以给出两个程序:
1、可以将任意长度输入的字母序列中的大写变成小写,小写不变,将所有小写
(含改写的)一起输出。输入的其它字符,则提示error。
---------------------------------------------------------------
#include <stdio.h>
main()
{
char chm,chn;