while循环继续不分手

时间:2012-06-16 11:37:57

标签: c

我已经制作了必须的代码 输入

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

这里我给出了两个输入

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

它一直在继续:告诉我为什么会发生这种情况:

2 个答案:

答案 0 :(得分:1)

你需要检查scanf的返回值,如果你给control-D,它将返回-1,在你的程序中意味着你需要退出,但-1将导致while条件为真

答案 1 :(得分:0)

无论何时结束,输入中都没有更多值。它返回-1;但是你的代码似乎把'0'作为退出,这使得-1变为真,你的代码正在运行。