程序不适用于数组中的10个值

火鸡

基本上,数组的最大大小为10,并且允许用户输入最多10个值。如果用户输入-1或0,则在输入十个值之前,循环将停止并进入下一个循环。我的问题是,直到输入10个值,它才能正常工作。结果将除以9而不是10,并打印出数组中有9个值。

#include <stdio.h>

int main(void)
{
    float numbers[10];
    int i;
    int n;
    int count =0;
    for(i = 0; i<10; i++)
    {
        scanf("%f", &numbers[i]);
        if(numbers[i] == -1)
            break;
        if(numbers[i] == 0)
            break;
        count++;
    }


    n = count-1;
    float sum = 0;
    float average;

    for(i = 0; i<=n; i++)
    {
        sum = sum + numbers[i]; 
    }
    average = sum/count;

    printf("The average price of the %d products is %.2f.\n", count, average);  
    return 0;

} //this is the fixed solution.
约旦威利斯

我很确定这是因为这条线

n = count-1

您能解释一下为什么要减去1吗?在您输入10个数字的情况下,count将等于10。在减去1之后,您将仅循环访问数组中的前9个索引。

如果需要减去1(以说明用户输入0或-1),则将最后一个for循环中的条件改为<=。

for(i = 0; i<=n; i++)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章