main()
{
char mima; 1
scanf("%c",&mima); 2
while(mima!='a') 3
{
printf("qing chong xin shu ru\n"); 4
scanf("%c",&mima); 5
}
printf("good\n"); 6
getch();
}
帮你分析下,你本意是当键盘上输入字符'a'时,屏幕给你输出"good",如果输入的不是字符'a',如b,c等,则提示重新输入。
你试验时,先输入'b',然后按回车,实际上这个时候你输入了两个字符,一个是'b',另一个是换行符即'\n',因为你按了回车了,你的输入流内容是"b\n"。所以程序运行下去,到第3行时判断while(mima!='a') 值为真(因为此时mima=='b'),则直接运行到第4行输出第一次"qing chong xin shu ru\n",然后跳到第5行将你输入的'\n'赋值给mima,然后程序重新回到第3行判断while(mima!=a)为真(因为此时mima=='\n'),于是又跳到第4行接着第二次输出"qing chong xin shu ru\n",然后再等你再次输入字符。
由此才会两次重复输出。
所以,直接把scanf改成getch()获得的键盘输入直接赋值给mima即可。
#include<stdio.h>
main()
{
char mima;
mima=getch();
printf("%c\n",mima); //这行可以省略
while(mima!='a')
{
printf("qing chong xin shu ru\n");
mima=getch();
printf("%c\n",mima); //这行可以省略
}
printf("good\n");
getch();
}
|