2016-04-20 55 views
-2

我正在学习课程和其中一个实验室的循环,我必须找出一种方法让用户输入未指定数量的整数来计算平均值。我知道我可以让用户输入整数才能被平均到循环的数量将被终止象下面这样:终止循环的另一种方法?

int count = 0, value = 0, sum = 0, numberofintegers = 0; 
double avg = 0; 

printf("enter the number of integers you wish to average\n"); 
scanf("%d",&numberofintegers); 
//loop 
while (count < numberofintegers) 
{ 
printf("enter a positive integers\n"); 
scanf("%d",&value); 
sum = sum + value; 
count = count + 1; 
} 

avg = (double) sum/count; 

所以基本上我可以有一个用户输入整数的个数来进行平均,以为了终止循环,但是必须有另一种方式来让循环终止而不需要用户输入它?

+0

你想终止循环,而不采取numberofintegers值? – iOS

+1

'printf(“输入正整数\ n”);'关键词有*“正面”*。不要问用户他们想输入多少个号码。只需计算输入了多少个数字,直到用户输入负数。 – user3386109

+0

@ user3386109:我会假设用户非常直言不讳,因此他不知道如何输入负整数。 – sjsam

回答

1

通常你会使用像预定的“非法”号(比如-1)

input = read_a_value(); 
while(input != -1) 
{ 
    // do something with input 
    input = read_a_value(); 
} 
1

scanf成功返回的条目数。

这可能会解决您的问题。

#include<stdio.h> 

int main(void) 
{ 
    int number, total = 0, count = 0; 
    char c; 
    printf("Enter a number to continue, a character to exit\n"); 

    while (scanf("%d", &number) == 1) 
    { 
     total+= number; 
     count++; 
    } 

    /* You need to handle the case where no valid input is entered */ 
    (count > 0) ? printf("Average : %.2f\n", (float)total/count) : printf("No valid numbers entered\n"); 
    /* I have casted the average to float to keep the precision*/ 
    while (getchar() != '\n') 
     ;; 
    printf("Press any key to continue.."); 
    getchar(); 
    return 0; 
} 

甲倒台在于scanf函数将继续提示输入如果用户按下Enter Key反复。事实上,您可能希望用fgets替换scanf。看看here

0

如果您确定用户没有输入太多数字,请使用字符串。 字符串的长度,你可以根据你的选择和使用空格分割得到的数字

+0

请提供示例代码来演示和阐明您的观点。 – dYale