另一种终止循环的方法?

时间:2016-04-20 03:26:14

标签: c

我正在课堂上学习循环,对于其中一个实验室,我必须找出一种方法让用户输入一个未指定数量的整数来计算平均值。我知道我可以让用户输入要求平均的整数数,以便循环终止,如下所示:

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;

所以基本上我可以让用户输入要平均的整数个数以便循环终止,但是必须有另一种方法使循环终止而不需要用户输入它吗?

3 个答案:

答案 0 :(得分:1)

通常情况下,您使用的是预定的&#34;非法&#34;数字(比如-1)

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

答案 1 :(得分: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;
}

如果用户反复按下Enter Key,则scanf将继续提示输入。实际上,您可能希望将scanf替换为fgets。看看here

答案 2 :(得分:0)

如果您确定用户输入的数字太多,请使用字符串。 字符串的长度,您可以根据您的选择并使用空格分割它来获取数字