0

入力する必要があるコードを作成しました

1 . no of questions
2.  difficulty for every question
3 . no. of queries( query is to find median of difficulty questions between questions no. given in next line) 
4 . question no.s to find median

入力がなくなるまでループが続きます。

#include<stdio.h>

int main()
{
    int ques,count=0;
    while(scanf("%d",&ques))
    {
        int i,diff,se,fi,j,query,arr[100];
        for(i=0;i<ques;i++)
        {
            scanf("%d",&diff);
            arr[i] = diff;
        }
        count++;
        printf("Case %d:\n",count);
        scanf("%d",&query);
        for(i=0;i<query;i++)
        {

            int sum = 0;
            scanf("%d %d",&fi,&se);
            for(j=fi-1;j<se;j++)
            {
                sum = sum+ arr[j];
            }
            sum = sum/((se-fi)+1);
            printf("%d\n",sum);
        }
    }
    return 0;
}       

ここで私は2つの入力を与えます

5
5 3 2 4 1
3
1 3
2 4
3 5
5
10 6 4 8 2
4
1 3
2 4
3 5
2 3
6
2 56 2 3 5 4
1
2 5

しかし、私の出力はケース3のみになるはずです:

Case 1:
3
3
2
Case 2:
6
6
4
5
Case 3:
16
Case 4:
4
Case 5:
4
Case 6:
4
Case 7:
4
Case 8:
4
Case 9:
4
Case 10:
4
Case 11:
4
Case 12:
4
Case 13:
4
Case 14:
4
Case 15:
4

それは延々と続く : どうしてこうなったのか教えてください:

4

2 に答える 2

1

の戻り値を確認する必要がありscanfます。control-D を指定すると、プログラムで -1 が返されます。これは終了する必要があることを意味しますが、-1 を指定すると while 条件が true になります。

于 2012-06-16T11:57:46.037 に答える
0

あなたが終了しているときはいつでも、あなたの入力にはそれ以上の値はありません。-1 を返します。しかし、あなたのコードは「0」をquitとして取るようで、-1がtrueになり、コードが実行されています。

于 2012-06-16T19:03:39.870 に答える