C语言:输入一批字符,以#结束,并将其中的大写字母改成小写字母?

来源:百度知道 编辑:UC知道 时间:2024/06/24 06:47:23
要求用循环结构。即执行后,在屏幕输入D显示d后可继续输入其他大写字母,输入非大写字母则输出"RROR",输入#退出。
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;

请教c语言编程:从键盘输入一批数据,以0结束输入,统计其中的正数和负数的个数 c语言题:输入若干字符由”#”结束,用指针变量把输入字符中的大写字母转化为小写字母,并输出 从键盘上输入一行字符(以ENTER为结束),将其中的大写字母改为小写字母,其他字符不边,然后逆序输出 汇编 从键盘上输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示出计数结果 用VC++6.0输入一批整数,以0结束,输出其中的偶数。 C语言编写: 利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。 编写一程序让用户输入一串字符(以回车键结束),将其中的字母用小写方式输出个数 输入一串字符,以“?”结束。统计其中字母个数,数字个数,其它符号个数。 C语言输入一个字符 输入一串字符,以“ ?”结束,分别统计其中每个数字字符0,1,2,….9出现的次数。