编写一个程序,使用户输入的小写字母转换为大写字母,而其它字符不变。
#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) ;
}
}
#include
using namespace std;
int main()
{
char c1,c2;
c1='a';
c2='b';
c1=c1-32;
c2=c2-32;
cout< return 0;
}......
答案就在这里:将小写字母转换为大写字母
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。
c=getchar()放在外面和里面不一样,放在里面那么加了括号之后优先级高先执行,执行完一次后getchar()没接受到数据不作出反应;放在外面就不一样了,c=getchar()后,c的值就是先前输入的数据,while循环一直执行,因为c的值!=回车,所以一直在执行,你就没办法输入下一个数据了,你按ctrl+C可以终止
当使用getchar函数的时候程序就等着输入.输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).比如输入(acasd)回车
缓存区保存的东西就为(acasd‘n’)当用户输入完毕并且检测到回车后,才开始再stdio缓冲流中一个一个读出来,首先就读第一个数据就是a
此时的c的值就为a a肯定不是'\n'啊 就无限进入了你的while循环中 一直putchar a 出来
建议你在c=getchar();之后加上一句cout<<c;观察一下,你会发现你输入的一串字符其实只读取了第一个哦,之后的循环就变成无限循环咯
看你代码,应该是第一次等你输入完后,while循环会一直运行。原因是,getchar()会等待你输入,而你把它拿到循环外之后,程序不会被中断了
#include<stdio.h>
main()
{
char x,y;
printf("等待用户输入字母:");
scanf("%c,",&x);
if(x>='A'&&x<='Z')
{
x=x+32;
}
else
if(x>='a'&&x<='z')
{
x=x-32;
}
printf("结果:%c",x);
}