读入N名学生的成绩,将获得某一给定分数的学生人数输出。

输入:
测试输入包含若干测试用例,每个测试用例的格式为
第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;
}

采用边读边计数的方式,避免了遍历整个数组。