簡體   English   中英

C中輸入數字的平均值-總和始終為0

[英]Average of entered numbers in C - sum always 0

這是一個代碼,用於評估10個輸入數字的平均值。 問題是退出循環后,似乎不能正確打印總和(始終等於0),其他所有工作都很好。

int count=0, n=10, c;
float sum=0, x;
do{
    printf("x=");
    scanf("%f", &x);
    count++;
    sum+=x;
}
while(count<n);
printf("Sum is %d", sum);
printf("\nCount is: %d", count);
printf("\nThe Average of the numbers is : %0.2f", sum/count);
getch();
}

另一個問題是到達符號后如何退出循環(即,不對要輸入的整數數設置限制)。

%f格式說明符用於浮點數。

printf("Sum is %f", sum);

要退出符號循環,可以檢查scanf的返回值。 scanf返回讀取的項目數。 如果返回0,則用戶未輸入有效數字。

while (1) {
    printf("x=");

    if (scanf("%f", &x) != 1) {
        break;
    }

    ...
}

break退出當前循環。

要回答您的第一個問題,應使用printf(“%f”,sum)來打印正確的總和。 由於使用的是float,因此必須使用%f,如果使用int則為%d。 對於第二個問題,您可以執行以下操作(相應地進行修改):

int main(){ 
// Declare Variables 
int count = 0; float sum = 0, currentNum = 0;

// Ask user for input 
while(currentNum > -1)
{ 
   printf("Enter integer to be averaged (enter -1 to get avg):"); 
   scanf("%f",&currentNum); 
   if(currentNum == -1)
       break; 

   // Check the entered number and computed sum
   printf("You entered: %0.2f\n", currentNum); 
   sum += currentNum; 
   printf("Current sum: %0.2f\n", sum);
   count++; 
}

// Print Average
printf("Average is: %0.2f\n", sum/count); 

return 0; 
}

要回答第二個問題,您可以這樣做:

scanf("%f", &x);
if (x==0) {
  break;
}

如果輸入0,這會讓您跳出循環,那么循環可以是無限的:

do {

} while(true)

對於第二個問題,我認為EOF可能是更好的解決方案:

while(scanf("%f", &x) != EOF)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM