C語言的scanf怎麼沒執行?
#include <stdio.h>
#include <ctype.h>
void main()
{
char answer='N';
double total=0.0;
double value=0.0;
int count=0;
printf("\nThis program calculates the average of"" any number of values");
for(;;)
{
printf("\nEnter a value:");
scanf("%lf",&value);
total+=value;
++count;
printf("Do you want to enter another value?(Y or N):");
scanf("%c",&answer); //沒有執行呀
if(tolower(answer)=='n')
break;
}
printf("\nThe average is %.2lf\n",total/count);
}
scanf("%c",&answer);
一般都會停下來讓我們輸入的!可是有直接跳回去循環了!
最佳回答:
這是因為你在上一次使用scanf後沒有清空輸入緩存, 這樣你再次使用scanf的時候函數就可能會認為你已經輸入過了. 改進的辦法很簡單, 就是在scanf語句之前使用fflush();函數stdin/stdout
fflush(stdin);//清空輸入緩存.
.
改進之後的程序為:
#include <stdio.h>
#include <ctype.h>
void main()
{
char answer='N';
double total=0.0;
double value=0.0;
int count=0;
printf("\nThis program calculates the average of"" any number of values");
for(;;)
{
printf("\nEnter a value:");
fflush(stdin);//清空輸入緩存.
scanf("%lf",&value);
total+=value;
++count;
printf("Do you want to enter another value?(Y or N):");
fflush(stdin);//清空輸入緩存.
scanf("%c",&answer); //沒有執行呀
if(tolower(answer)=='n')
break;
}
printf("\nThe average is %.2lf\n",total/count);
}
//已經調試成功, 希望對你有幫助