-2
#include<stdio.h>

int main()
{
    int line,linex;

    printf("Enter number of lines: ");
    scanf("%d",&line);
    linex=line;

    while(line!=0)
    {
        int input=0,total=0,number=0;

        printf("Enter line %d: ",(linex-line+1));
        scanf("%d",input);

        while (input!=-1)
        {
            total+=input;
            number++;
        }
        printf("Average = %f\n",(total/number));
        line-=1;
    }
    return 0;
}

以上是我的代码,它将询问用户行数、每行中的数字,然后打印出每行的平均值。问题是,当我尝试在 Microsoft Visual C++ 2010 express 中运行它时,程序崩溃了。在我输入 -1 以中断第二个 WHILE 循环后,它崩溃了。

4

5 回答 5

4
    scanf("%d",input);

应该:

    scanf("%d",&input);
于 2013-01-18T08:22:16.670 回答
3

无关,但

    while (input!=-1)
    {
        total+=input;
        number++;
    }

是一个无限循环。如果你第一次输入 -1 然后

 printf("Average = %f\n",(total/number));

是除以零。两者都需要修复

于 2013-01-18T08:24:55.023 回答
0

由于无限循环而发生崩溃

 while (input!=-1)   
 {    
        total+=input;
        number++;
 }

修复我们所做的这个循环。

还有更多潜在的错误:

scanf("%d",input); //& missing

printf("Average = %f\n",(total/number)); // may cause divide by zero
于 2013-01-18T10:34:25.447 回答
0

它崩溃是因为您忘记将地址传递给 scanf 函数,即您忘记&在 scanf 时写入。肯定是

scanf("%d",&input);
于 2013-01-18T08:24:06.320 回答
0
scanf("%d",input);

应该

scanf("%d",&input);

并检查是否number != 0在除法之前

printf("Average = %f\n",(total/number));
于 2013-01-18T08:25:57.617 回答