帮帮忙啦~~在线等

来源:百度知道 编辑:UC知道 时间:2024/06/18 14:15:18
我要编一个程序,统计输入的行数,用!号结束输入,!号所在行不计入。
这是我编的代码
#include<stdio.h>
main()
{
int n = 0;
char a = 0;
while(a != '!')
{
printf("Enter a number");
scanf("%c",&a);
n ++;
}
printf("%d",n);
getch();
}
本人是初学者,大家多多帮忙啦!
忘了,我编得程序没错,只是不知道为什么用的时候一下出两个 Enter a number 这是为什么???

这是因为程序运行到第二次输入的时候,上一次输入完成后输入的结束符'回车'留在了缓存区,而被当成了字符赋给了a,

scanf(" %c",&a); ,%c前面加一个空格.
或者清空缓存区.
fflush(stdin);
scanf(" %c",&a);

你按了enter后,scanf识别到\n,并计入统计
在scanf后面加getchar来吃掉回车就好了

#include<stdio.h>
#include<conio.h>
main()
{
int n = 0;
char a = 0;
while(a != '!')
{
printf("Enter a number");
scanf("%c",&a);getchar();
n ++;
}
printf("%d",n);
getch();
}