首页 > 试题广场 >

统计同成绩学生(20)

[编程题]统计同成绩学生(20)
  • 热度指数:11334 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
本题要求读入N名学生的成绩,将获得某一给定分数的学生人数输出。

输入描述:
输入在第1行给出不超过105的正整数N,即学生总人数。随后1行给出N名学生的百分制整数成绩,中间以空格分隔。最后1行给出要查询的分
数个数K(不超过N的正整数),随后是K个分数,中间以空格分隔。


输出描述:
在一行中按查询顺序给出得分等于指定分数的学生人数,中间以空格分隔,但行末不得有多余空格。
示例1

输入

10
60 75 90 55 75 99 82 90 75 50
3 75 90 88

输出

3 2 0
推荐
典型的“计数排序”的应用。由于是百分制成绩(0~100),可以设一个数组freq[101],其中freq[0]代表分数0出现的次数,freq[1]代表分数1出现的次数,。。。,freq[100]代表分数100出现的次数。
再设一数组fen[ ], 先输入n, 然后依次输入n个成绩,存入数组fen[ ], 同时统计该成绩出现的次数,即freq[ fen[ i ] ]++, 其中fen[i]代表输入的第i个成绩。
再设一个数组cha[ ], 输入k,然后输入要查询的k个成绩。
最后遍历数组cha[ ] , 在遍历的同时输出数组freq[ cha[i] ]的值即可。
参考代码如下:

#include<stdio.h>

#define N 100000
int fen[N]; //分数
int cha[N]; //要查询的分数

int main()
{
    int n;
    while(scanf("%d",&n)==1)
    {
        int i,k;
        int freq[101]={0};  //0分~100分分别出现的次数
        for(i=0;i<n;i++)
        {
            scanf("%d",&fen[i]);    //输入某个分数
            freq[fen[i]]++;         //统计某个分数出现的次数
        }
        scanf("%d",&k);
        for(i=0;i<k;i++)scanf("%d",&cha[i]);    //输入要查询的分数
        for(i=0;i<k;i++)
        {   //要查询的分数出现的次数
            if(i==0)printf("%d",freq[cha[i]]);  //第1个数
            else printf(" %d",freq[cha[i]]);    //从第2个数开始,每个数前面有1个空格
        }
        printf("\n");   //最后一个数后面换行
    }
    return 0;
}

编辑于 2015-08-18 22:33:18 回复(2)
import java.util.Scanner;
public class Main{
 public static void main(String[] args) {
  Scanner in=new Scanner (System.in);
  int n=in.nextInt();
  int []num=new int[101];
  for(int i=0;i<n;i++) {
   num[in.nextInt()]++;
  }
  int m=in.nextInt();
  for(int i=0;i<m;i++) {
   if(i==m-1) {
    System.out.println(num[in.nextInt()]);
    break;
   }
   System.out.print(num[in.nextInt()]+" ");
  }
 }
}

发表于 2019-03-24 10:45:15 回复(0)
//本代码思路:使用map装入数据,key装成绩,value装人数,然后按查询输出结果
import java.util.Scanner;
import java.util.Map;
import java.util.TreeMap;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
            Map<Integer,Integer> map = new TreeMap<>();
            for(int i=0;i<n;i++){
                int k = sc.nextInt();
                if(map.containsKey(k)){
                    map.put(k,map.get(k)+1);
                }else{
                    map.put(k,1);
                }
            }
            int num = sc.nextInt();
            for(int i=0;i<num;i++){
                int key = sc.nextInt();
                if(map.containsKey(key)){
                    System.out.print(map.get(key));
                }else{
                    System.out.print(0);
                }
                if(i != num-1){
                    System.out.print(" ");
                }
            }
        }
    }
}

发表于 2018-10-13 15:57:59 回复(0)

import java.util.HashMap;
import java.util.Scanner;
public class Pat_1028 {  private int N;    private int[] numbers;  //保存所有分数  private int n;   //记录需要查看的分数个数  private int[] targets; //保存查看的分数  private HashMap<Integer,Integer> map; //键-值:分数-次数     //构造器初始化所有变量  public Pat_1028() {   Scanner sc = new Scanner(System.in);   N = sc.nextInt();   numbers = new int[N];   map = new HashMap<>();   for(int i=0;i<N;i++) {    numbers[i] = sc.nextInt();   }   n = sc.nextInt();   targets = new int[n];   for(int i=0;i<n;i++) {    targets[i] = sc.nextInt();   }   sc.close();  }  //将所有的分数保存在Map中,键为分数,值为出现次数  public void getMap() {   for(int i=0;i<N;i++) {    if(map.containsKey(numbers[i])) {     map.put(numbers[i], map.get(numbers[i])+1);    }else {     map.put(numbers[i], 1);    }   }  }  //查看分数并输出  public void printResult() {   for(int i=0;i<n;i++) {    if(map.containsKey(targets[i])) {     System.out.print(map.get(targets[i]));    }else {     System.out.print("0");    }    if(i<n-1)     System.out.print(" ");   }  }  public static void main(String[] args) {   Pat_1028 main = new Pat_1028();   main.getMap();   main.printResult();  } }

发表于 2018-03-18 14:49:17 回复(0)
为什么过不了。。。。。好气啊
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bff = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(bff.readLine());
        String[] str = bff.readLine().split(" ");
        String s = "";
        String[] str1 = bff.readLine().split(" ");
        int n1 = Integer.parseInt(str1[0]);
        int n11[] = new int[n1+1];
        for (int i = 0; i < n; i++) {
            int num = Integer.parseInt(str[i]);
            for (int j = 1; j <=n1; j++) {
                if (num == Integer.parseInt(str1[j])) {
                    n11[j] += 1;
                }
            }
        }
        for(int i=1;i<n1;i++){
            s+=n11[i]+" ";
        }
        System.out.println(s+n11[n1]);
    }
}

发表于 2018-03-01 14:03:17 回复(0)
import java.util.*;
public class Main{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		int count =0;
		int n = sc.nextInt();
		int[] a = new int[n];
		for(int i =0 ;i <n;i++)
			a[i] = sc.nextInt();
		int k = sc.nextInt();
		for(int j = 1;j <= k;j++){
			count =0;
			int b = sc.nextInt();
			for(int j1 = 0;j1 < n;j1++){
				if(a[j1] == b )
					count++;
			}
			if(count >= 0){
				if(j < k)
				System.out.print(count + " ");
				else
					System.out.println(count);
			}
		}
	}
}

发表于 2017-03-24 15:42:49 回复(1)
import java.util.Scanner;

public class Main4 {


public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int []scores = new int[N];
for(int i=0;i<N;i++){
scores[i] = sc.nextInt();
}
int k  = sc.nextInt();
int[]seach_score = new int[k];
int[] score_count = new int[100000];
for(int i=0;i<score_count.length;i++){
score_count[i]=0;
}
for(int i=0;i<k;i++){
seach_score[i] = sc.nextInt();
}
for(int i=0 ; i<k;i++){
for(int j=0 ; j<N ; j++){
if(scores[j]==seach_score[i]){
//System.out.println("seach_score:"+seach_score[j]);
score_count[i]++;
}
}
}
for(int i=0;i<k;i++){
if(i==k-1){
System.out.print(score_count[i]);
}
else{
System.out.print(score_count[i]+" ");
}
}
}

}

发表于 2017-02-01 01:07:02 回复(0)
importjava.util.Scanner;
 
publicclassMain {
 
    publicstaticvoidmain(String[] args) {
        Scanner in = newScanner(System.in);
        intN = in.nextInt();
        int[] Num = newint[N];
        for(inti = 0; i< N; i++){
            Num[i] = in.nextInt();
        }
        intn = in.nextInt();
        int[] num = newint[n];
        for(inti = 0; i< n; i++){
            num[i] = in.nextInt();
        }
        indexScore(Num, num);
    }
    publicstaticvoidindexScore(int[] Num, int[] num){
        boolean[] checked = newboolean[Num.length];
        intacount = 0;
        for(inti = 0; i < num.length; i++){
             
            if( i >=1&& num[i]==num[i-1]){
                System.out.print(acount);
                if(i != num.length-1)
                    System.out.print(" ");
                continue;
            }
                 
            acount = 0;
            for(intj = 0; j < Num.length; j++){
                if(!checked[j]){
                    if(Num[j] == num[i]){
                        acount++;
                        checked[j] = true;
                    }
                }
            }
            System.out.print(acount);
            if(i != num.length-1)
                System.out.print(" ");
        }
    }
 
}

编辑于 2016-09-16 23:09:07 回复(0)