Problem D: Above Average
It is said that 90% of frosh expect to be above average in their class. You are to provide a reality check.
The first line of standard input contains an integer C, the number of test cases. C data sets follow. Each data set begins with an integer, N, the number of people in the class (1 〈= N 〈= 1000). N integers follow, separated by spaces or newlines, each giving the final grade (an integer between 0 and 100) of a student in the class. For each case you are to output a line giving the percentage of students whose grade is above average, rounded to 3 decimal places.
Sample Input
5
5 50 50 70 80 100
7 100 95 90 80 70 60 50
3 70 90 80
3 70 90 81
9 100 99 98 97 96 95 94 93 91
Output for Sample Input
40.000%
57.143%
33.333%
66.667%
55.556%
題目是英文的˙˙
不知道可不可以幫我介紹幾個中文題目網站>///<
以下是我的Code
int main()
{
int line, N, i, j;
int score[1000];
float sum, average, count, ans;
scanf(〃%d〃&line);
for (i = 1; i〈= line; i )
{
while (scanf(〃%d〃, &N) != EOF)
{
sum = 0;
for (j = 1; j 〈= N; j )
{
scanf(〃%d 〃, &score[j]);
sum = sum score[j];
}
average = sum / N;
count = 0;
for (j = 1; j 〈= N; j )
{
if (score[j] 〉 average)
count ;
}
ans = (count / N) * 100;
printf(〃%.3f%〃, ans);
}
}
return 0;
}
我的輸入的第一筆資料無法算出答案
算完最後一筆程式也不能停止
2007-02-22 17:09:33 · 1 個解答 · 發問者 亭 2 in 電腦與網際網路 ➔ 程式設計
我跑了你的程式
沒有問題啊
當然 我略做修定
因為你貼上來的程式
有些地方被 Yahoo 知識給吃掉了
所以我不知道是你原本就沒有
還是被吃掉的
請注意 ++是全型字
這樣才不會被吃掉
但是放在程式時要改回半型
至於程式不會停止
也已經改了
請注意
換掉 while 時
也要拿掉相對應的 { }
int main()
{
int line, N, i, j;
int score[1000];
float sum, average, count, ans;
scanf("%d", &line);
for (i = 1; i <= line; i++ )
{
scanf("%d", &N);
sum = 0;
for (j = 1; j <= N; j++ )
{
scanf("%d", &score[j]);
sum = sum score[j];
}
average = sum / N;
count = 0;
for (j = 1; j <= N; j++ )
{
if (score[j] > average)
count ;
}
ans = (count / N) * 100;
printf("%.3f%", ans);
}
return 0;
}
如果有問題, 請來函討論. 不然, 我可能會錯失你再補充的疑點.
2007-02-22 21:30:37 · answer #1 · answered by JJ 7 · 0⤊ 0⤋