输入:
测试输入包含若干测试用例,每个测试用例的格式为
第1行:N
第2行:N名学生的成绩,相邻两数字用一个空格间隔。
第3行:给定分数
当读到N=0时输入结束。其中N不超过1000,成绩分数为(包含)0到100之间的一个整数。
输出:
对每个测试用例,将获得给定分数的学生人数输出。
样例输入:
4
70 80 90 100
80
3
65 75 85
55
5
60 90 90 90 85
90
0
样例输出:
1
0
3
#include<stdio.h>
int main()
{
int n,aim_score;
while(scanf("%d",&n) != EOF) //多次输入
{
int score[1000+5],account;
for(int i=0;i<n;i++)
{
scanf("%d",&score[i]); //读取学生成绩
}
scanf("%d",&aim_score); //获得目标分数
account = 0;
for(int i=0;i<n;i++)
{
if(score[i] == aim_score) //当读到学生分数跟目标分数一致时计数
account ++;
}
printf("%d\n",account);
}
}
如果问题解决了的话还请采纳!!
读入n,如果n=0,跳出循环,结束程序。
否则,初始化计数器count为0。
遍历n名学生成绩,读入每个学生的成绩,如果该成绩等于给定分数target,则计数器加1。
读入给定分数target,输出计数器的值,即为等于给定分数的学生人数。
重复1-4,直到输入结束。
#include <stdio.h>
int main() {
int n, score, target, count;
while (1) {
scanf_s("%d", &n);
if (n == 0) {
break;
}
count = 0;
for (int i = 0; i < n; i++) {
scanf_s("%d", &score);
if (score == target) {
count++;
}
}
scanf_s("%d", &target);
printf("%d\n", count);
}
return 0;
}
采用边读边计数的方式,避免了遍历整个数组。