C语言编程,小写字母转换为大写字母。

编写一个程序,使用户输入的小写字母转换为大写字母,而其它字符不变。
#include
main()
{
char c;
while ((c=getchar() )!='\n')
{
if(c>='a'&&c<='z')
c=c-('a'-'A') ;
putchar(c) ;
}
}
上面程序能编译并且能执行。改成下面程序程序后为什么不一样呢?求教啊!我是C语言初学者。
#include
main()
{
char c;
c=getchar();
while (c!='\n')
{
if(c>='a'&&c<='z')
c=c-('a'-'A') ;
putchar(c) ;
}
}

5个回答

#include
using namespace std;
int main()
{
char c1,c2;
c1='a';
c2='b';
c1=c1-32;
c2=c2-32;
cout< return 0;
}......
答案就在这里:将小写字母转换为大写字母
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

zuoxuening
zuoxuening 回复Robot-C: count<我还没学到,不过还是谢谢啦!
大约 4 年之前 回复

当使用getchar函数的时候程序就等着输入.输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).比如输入(acasd)回车
缓存区保存的东西就为(acasd‘n’)当用户输入完毕并且检测到回车后,才开始再stdio缓冲流中一个一个读出来,首先就读第一个数据就是a
此时的c的值就为a a肯定不是'\n'啊 就无限进入了你的while循环中 一直putchar a 出来

c=getchar()放在外面和里面不一样,放在里面那么加了括号之后优先级高先执行,执行完一次后getchar()没接受到数据不作出反应;放在外面就不一样了,c=getchar()后,c的值就是先前输入的数据,while循环一直执行,因为c的值!=回车,所以一直在执行,你就没办法输入下一个数据了,你按ctrl+C可以终止

建议你在c=getchar();之后加上一句cout<<c;观察一下,你会发现你输入的一串字符其实只读取了第一个哦,之后的循环就变成无限循环咯

zuoxuening
zuoxuening 回复岳麓山车神: cout<<c我还没学到,我先学习一下知识点。不过还是谢谢啦!
大约 4 年之前 回复

看你代码,应该是第一次等你输入完后,while循环会一直运行。原因是,getchar()会等待你输入,而你把它拿到循环外之后,程序不会被中断了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问