c语言问题 #include "stdio.h" int main() { char a,b; scanf("%c",&a); a=a+32; printf("%c\n

c语言问题
#include "stdio.h"
int main()
{
char a,b;
scanf("%c",&a);
a=a+32;
printf("%c\n",a);
scanf("%c\n",&b);
b=b-32;
printf("%c\n",b);
return 0;
}
大小写字母互换,不考虑判断输入是否正确,想知道为什么第二次输入小写字母时输出结果完全不正确?

你的第二个输入b其实没有被读取
参见以下解释,来自 http://bbs.csdn.net/topics/380055507
scanf()和getchar()函数是从输入流缓冲区 中读取值的,而并非从键盘(也就是终端)缓冲区读取。而读取时遇到回车(\n)而结束的,这个\n会一起读入输入流缓冲区的,所以第一次接受输入时取走字 符后会留下字符\n,这样第二次的读入函数直接从缓冲区中把\n取走了,显然读取成功了,所以不会再从终端读取!因此后面只要加上fflush(stdin)函数释放缓冲区数据就可以了.

解决办法:可以在scanf()函数之 后加个fflush(stdin);,还有加getch(); getchar();也可以
温馨提示:内容为网友见解,仅供参考
第1个回答  2017-03-11
把scanf("%c\n",&b);改成scanf(" %c",&b);——注意在%前加一个空格。scanf("%c",&a);也改成scanf(" %c",&a);。追问

按您说的改了,的确是正确的,但您能说一下引发错误的原因以及更改的依据吗?

按您说的改了,的确是正确的,但您能说一下引发错误的原因以及更改的依据吗?

追答

%c是什么字符都接收的。scanf("%c",&a);遗留在输入缓冲区里的'\n'被scanf("%c",&b);接收了,所以b不能得到预期的值而出错。那个空格指示scanf在接收字符时跳过输入缓冲区里的'\n'。

本回答被提问者采纳
第2个回答  2017-03-11
当成int类型了,强制转换一下

~~~~~~~~

...stdio.h" int main() { char a,b; scanf("%c",&a); a=a+32; pr...
scanf()和getchar()函数是从输入流缓冲区 中读取值的,而并非从键盘(也就是终端)缓冲区读取。而读取时遇到回车(\\n)而结束的,这个\\n会一起读入输入流缓冲区的,所以第一次接受输入时取走字 符后会留下字符\\n,这样第二次的读入函数直接从缓冲区中把\\n取走了,显然读取成功了,所以不会再从终端...

c语言编程。从键盘输入一个大写字母,要求改用小写字母输出。
代码如下:include<stdio.h>int main(){char a; printf("请输入一个大写英语字母:");scanf("%c",&a);printf("转换成小写字母为%c",a+32);} 运行结果如下:

在C语言中编写一程序,实现从键盘输入一个大写字母,要求改用小写字母输...
include<stdio.h>int main(){char a;scanf("%c",&a);printf("%c",a+32);}执行效果如下:

从键盘输入三个大写英文字母,把它们转换成小写字母,然后输出(c语
include <stdio.h>int main(){ char a,b,c; scanf("%c%c%c",&a,&b,&c); printf("%c%c%c",a+32, b+32, c+32); return 0;}

2.从键盘输入一个大写字母,要求转换成小写字母输出,并输出这个小写字母...
include<stdio.h> int main(){ char a;printf("请输入一个大写字母:");scanf("%c",&a);a=a+32;printf("%c,%d",a,a);return 0;} 这个程序可以满足你的要求,你看看可不可以

c语言 将一个字母大写改小写
如果有多个加循环 include<stdio.h> int main(){ char a;scanf("%c",&a);if(a>='A'&&a<='Z')a=a+32;printf("%c\\n",a);return 0;}

C语言输入一个小写字母要求输出一个大写字母。
include<stdio.h> int main(){ int one;int two;printf("please enter one char:\\n");one = getchar();two = one - 32;putchar(two);printf("%c\\n",two);putchar('\\n');return 0;}

已知字符A,通过ascii运算得到他的小写字母,并输出小写字母的字符和as...
include<stdio.h> int main(){ char a,b;scanf("%c",&a);b=a+32;printf("%c %d\\N",b,(int)b);return 0;} 给个采纳吧~·

#include <stdio.h> int main() { char str(char x); char a,b; scan...
char a;scanf("%c", &a); \/\/ 你漏写 & 号。--- char str(char x){ char z;if ( (65<=x) &&( x<=91)) \/\/ 不用 大写的 X, 用小写 { z=x+32; \/\/ 这里用 + 转小写 printf("%c",z);}else printf("%c",x);return z;} ...

c语言编程:“输入大写字母输出小写若输入小写则输出大写输数字就输出逗...
下面是我编的一段,仅供参考:include<stdio.h> int main(){ char a;scanf("%c",&a);do { if(a<='z'&&a>='a')putchar(a-32);else if(a<='Z'&&a>='A')putchar(a+32);else if(a<='9'&&a>='0')putchar(',');else putchar(a);scanf("%c",&a);}while(a != '...

相似回答