我已经制作了必须的代码 输入
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
它一直在继续:告诉我为什么会发生这种情况:
答案 0 :(得分:1)
你需要检查scanf
的返回值,如果你给control-D,它将返回-1,在你的程序中意味着你需要退出,但-1将导致while条件为真
答案 1 :(得分:0)
无论何时结束,输入中都没有更多值。它返回-1;但是你的代码似乎把'0'作为退出,这使得-1变为真,你的代码正在运行。