程式,其中方程中不應該有負數,當輸入為 0 時它將結束
#include <stdio.h>
int main() {
double number, sum = 0;
int average;
int count;
do {
printf("Enter a number: ");
scanf("%lf", &number);
count ;
if (number > 0)
sum = number;
average = sum / (count);
} while (number != 0);
printf("Average is %.1lf", average);
return 0;
}
uj5u.com熱心網友回復:
在您的程式中,您正在計算所有數字,而這些數字是正數還是負數
do {
printf("Enter a number: ");
scanf("%lf", &number);
count ;
//...
此外,在 do while 回圈中計算平均值也沒有意義。
average = sum / (count - 1);
并且不清楚為什么變數average 的型別是float 而不是double。
float average;
而你忘記初始化變數count。
注意用戶不能輸入正數。
正如您的問題標題所遵循的那樣,您將輸入整數而不是兩倍。
該程式可以如下所示
#include <stdio.h>
int main( void )
{
double sum = 0.0;
double average = 0.0;
size_t count = 0;
while( 1 )
{
printf( "Enter a number: " );
int number;
if ( scanf( "%d", &number ) != 1 || number == 0 ) break;
if ( number > 0 )
{
sum = number;
count;
}
}
if ( count != 0 ) average = sum / count;
printf( "Average is %f\n", average );
return 0;
}
uj5u.com熱心網友回復:
首先,您沒有初始化您的計數變數。也就是說,只有在遇到非負值時才應該增加計數變數。無關,但我建議您計算回圈外的平均值,如下所示:
#include <stdio.h>
int main()
{
double number, sum = 0;
float average;
int count = 0;
do
{
printf("Enter a number: ");
scanf("%lf", &number);
if (number > 0)
{
sum = number;
count ;
}
} while (number != 0); //should it stop with 0 or 1? assuming 0
average = sum / count;
printf("Average is %.1lf\n", average);
return 0;
}
uj5u.com熱心網友回復:
首先,始終啟用編譯器的警告。我使用-Wall -Wextra -pedanticgcc 和 clang。如果不出意外,這將解決下面列出的第一個問題。
有很多問題。
count未初始化。負數不包括在您聲稱的總和中,但它們確實會影響平均值,因為您
count也會為負數遞增。作業要求你回圈直到你得到零,但你回圈直到你得到
-1.平均值的公式不是
sum / (count - 1)。average無緣無故地一遍遍地計算。您不處理沒有輸入的情況,導致除以零。
average是 afloat,這很奇怪,因為它是根據double值構建的。您應該檢查回傳的值
scanf是否有錯誤或檔案結尾。您不會在輸出后發出換行符。
#include <stdio.h>
int main(void) {
int count = 0.0;
double sum = 0.0;
while (1) {
printf("Enter a number: ");
double number;
if ( scanf("%lf", &number) < 1 ) // Invalid input or EOF.
break;
if ( number == 0.0 )
break;
if ( number < 0.0 )
continue;
count ;
sum = number;
}
if (count) {
double average = sum / count;
printf("Average is %.1lf\n", average);
} else {
printf("Nothng to average\n");
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/368661.html
標籤:循环
上一篇:來自while回圈的數字相乘
