程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言問答 >> C語言的scanf怎麼沒執行?

C語言的scanf怎麼沒執行?

編輯:C語言問答

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);
}



//已經調試成功, 希望對你有幫助
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved