码迷,mamicode.com
首页 > 其他好文 > 详细

1038 统计同成绩学生

时间:2018-07-28 15:18:26      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:amp   using   输入格式   mes   版本   stdio.h   直接   顺序   正整数   

一、题目:

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

输入格式:

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

输出格式:

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

输入样例:

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

输出样例:

3 2 0

二、题解:
因为分数在0到100之间,所以直接开一个数组用于存放分数的个数即可。用C++语言实现会超时,而C语言版本完美通过,我也没弄明白咋回事。


三、代码:
(C++版运行超时):
 1 #include<iostream>
 2 using namespace std;
 3 
 4 int main(){
 5     int b[101]={0};
 6     int n,m;
 7     cin>>n;
 8     for(int i=0;i<n;i++){
 9        int tmp=0;
10        cin>>tmp;
11        b[tmp]++;
12     }
13     cin>>m;
14     for(int i=0;i<m;i++){
15         int cnt;
16         cin>>cnt;
17         cout<<b[cnt];
18         if(i!=m-1) cout<<" ";
19     }
20     return 0;
21 }

(C语言版答案正确):

 1 #include<stdio.h>
 2 
 3 int main(){
 4   int b[101]={0};
 5     int n,m;
 6     scanf("%d",&n);
 7     for(int i=0;i<n;i++){
 8        int tmp=0;
 9        scanf("%d",&tmp);
10        b[tmp]++;
11     }
12     scanf("%d",&m);
13     for(int i=0;i<m;i++){
14         int cnt;
15         scanf("%d",&cnt);
16         printf("%d",b[cnt]);
17         if(i!=m-1) printf(" ");
18     }
19     return 0;
20 }

 

1038 统计同成绩学生

标签:amp   using   输入格式   mes   版本   stdio.h   直接   顺序   正整数   

原文地址:https://www.cnblogs.com/Gzu_zb/p/9381673.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!