-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;
}

上記は、行数、各行の数をユーザーに尋ね、各行の平均を出力する私のコードです。これをMicrosoftVisualC ++ 2010 Expressで実行しようとすると、プログラムがクラッシュします。-1を入力して2番目の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

&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 に答える
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 に答える