C语言编程题 请问为什么无输出结果?

#include<stdio.h>
void main()
{
char c1,c2;
scanf("%c",&c1);
while(c1<65||c1>90) scanf("%c",&c1);
c2=c1+32;
printf("%c,%c\n",c1,c2);
}

你没有清空键盘缓冲区,导致用户最后敲的回车被当做下一次的输入给读取了

#include<stdio.h>
void main()
{
char c1,c2;
scanf("%c",&c1);
fflush(stdin);//在这里清空键盘缓冲区
while(c1<65||c1>90)
{
scanf("%c",&c1);
fflush(stdin);//在这里清空键盘缓冲区
}
c2=c1+32;
printf("%c,%c\n",c1,c2);
}追问

但是比如第一次输入的是65,不满足while条件,不是应该直接跳到c2=c1+32;,然后有输出吗?

追答

我用VC6,第一次输入"A",输出为"A,a"是对的,没问题啊

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-08
#include<stdio.h>
void main()
{
char c1,c2;
scanf("%c",&c1);
while(c1<65||c1>90) scanf("%c",&c1);//当c1的ASCII值大于90或小于65时的时候才会出循环
c2=c1+32; //大写字母的ASCII值好像在其之间,输入一个大写字母。就会有输出结果了。
printf("%c,%c\n",c1,c2);
}
第2个回答  2012-03-08
这个程序有 2个错误,1,C语言中或运算的运算符是“|”,而不是“||”,2,while语句后面的 scanf("%c",&c1);不需要了,因为,while语句之前,scanf("%c",&c1);已经给C1分配了地址空间了,所以会出错。记得要加分哦
第3个回答  2012-03-08
#include<stdio.h>
void main()
{
char c1,c2;
scanf("%c",&c1); //没有清缓冲,当这里输入完字符后,按下enter,
print(“\n");
while(c1<65||c1>90) scanf("%c",&c1); //上一次按下的'\n'被当作这次的输入字符,所以
printf("\n");
c2=c1+32;
printf("%c,%c\n",c1,c2);
}个人认为OK

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网