C语言 · 分数统计

算法提高 分数统计

时间限制:1.0s   内存限制:512.0MB

问题描述

  2016.4.5已更新此题,此前的程序需要重新提交。

问题描述

  给定一个百分制成绩T,将其划分为如下五个等级之一:
  90~100为A,80~89为B,70~79为C,60~69为D,0~59为E
  现在给定一个文件inp,文件中包含若干百分制成绩(成绩个数不超过100),请你统计五个等级段的人数,并找出人数最多的那个等级段,按照从大到小的顺序输出该段中所有人成绩(保证人数最多的等级只有一个)。要求输出到指定文件oup中。

输入格式

  若干0~100的正整数,用空格隔开

输出格式

  第一行为5个正整数,分别表示A,B,C,D,E五个等级段的人数
  第二行一个正整数,表示人数最多的等级段中人数
  接下来一行若干个用空格隔开的正整数,表示人数最多的那个等级中所有人的分数,按从大到小的顺序输出。

样例输入

100 80 85 77 55 61 82 90 71 60

样例输出

2 3 2 2 1
3
85 82 80

作者注释:蓝桥杯的后台编译时其实有N——表输入N个0~100的正整数即分数。

正确代码:

 1 #include <algorithm>
 2 #include <iostream>
 3 #include <string.h>
 4 int num[1005];
 5 using namespace std;
 6 int main()
 7 {
 8     int n,i = 0,sum;
 9     int temp[5][1005],dp[5] = {90,80,70,60,0};
10     memset(temp,0,sizeof(temp));
11     cin>>sum;
12     for(;i < sum;i++)
13     {
14         cin>>num[i];
15         for(int j = 0;j < 5;j++)
16         {
17             if(num[i] >= dp[j])
18             {
19                 temp[j][++temp[j][0]] = num[i];
20                 break;
21             }
22         }
23     }
24     int maxn = 0,maxl = 0;
25     for(int t = 0;t < 5;t++)
26     {
27         cout<<temp[t][0]<<" ";//输出每个等级的人数
28         if(maxn < temp[t][0])
29         {
30             maxn = temp[t][0];
31             maxl = t;
32         }
33     }
34     cout<<endl<<maxn<<endl;
35     sort(temp[maxl]+1,temp[maxl]+temp[maxl][0]+1);
36     for(int t = temp[maxl][0];t >= 1;t--)
37         cout<<temp[maxl][t]<<" ";
38     return 0;
39 } 

错误代码:

 1 #include<stdio.h>
 2 int main(){
 3     int n;
 4     int a=1,b=1,c=1,d=1,e=1;
 5     scanf("%d",&n);
 6     int score[n];
 7     int a1[5][n];
 8     for(int i=0;i<5;i++){
 9         a1[i][0]=0;
10     }
11     for(int i=0;i<n;i++){
12         scanf("%d",&score[i]);
13         if(score[i]>=90){
14             a1[0][a]=score[i];
15             a1[0][0]++;
16             a++;
17         }
18         else if(score[i]>=80 && score[i]<90){
19             a1[1][b]=score[i];
20             a1[1][0]++;
21             b++;
22         }
23         else if(score[i]>=70 && score[i]<80){
24             a1[2][c]=score[i];
25             a1[2][0]++;
26             c++;
27         }
28         else if(score[i]>=60 && score[i]<70){
29             a1[3][d]=score[i];
30             a1[3][0]++;
31             d++;
32         }
33         else if(score[i]<60){
34             a1[4][e]=score[i];
35             a1[4][0]++;
36             e++;
37         }
38     }
39     printf("%d %d %d %d %d\n",a1[0][0],a1[1][0],a1[2][0],a1[3][0],a1[4][0]);
40
41     /*对各个等级人数进行冒泡降序*/
42     for(int i=0; i<5-1; i++){
43         for(int j=0; j<5-1-i; j++){
44             /*降序*/
45             if(a1[j][0]<a1[j+1][0]){
46                 int t = a1[j][0];
47                 a1[j][0] = a1[j+1][0];
48                 a1[j+1][0] = t;
49             }
50         }
51     }
52     printf("%d\n",a1[0][0]);
53     for(int i=1;i<=a1[0][0];i++){
54         printf("%d ",a1[1][i]);
55     }
56 }
时间: 2024-11-03 22:13:45

C语言 · 分数统计的相关文章

本周团队分数统计

 团队分数统计: 团队名称 第一周作业 团队作业3 团队作业4 scrum(1113) 当前总分 Sevens 8 6 8 75 97 ourteam 8 6 8 60 82 C705 7 8 8 45 68 666666 7 8 10 20 45 dxteam 5 5 8 55 73 Echo 8 7 10 9 34 newbe 2 6 8 75 91 hots 7 6 10 55 78

算法竞赛入门经典 习题3-1 分数统计 习题 3-2 单词的长度

习题3-1 分数统计 输入一些学生的分数,哪个分数出现的次数最多?如果有多个并列,从小到大输出. 任务1:分数均不超过100的非负整数 任务2:分数均不超过100的非负实数,但最多保留两位小数. 任务1 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAXN 101 + 10 int a[MAXN]; int main(int argc, char *argv[]) { int n,

用C语言实现统计一个文件夹中各种文件的比例

<UNIX环境高级编程>中的程序清单4-7就介绍了如何实现递归地统计某个目录下面的文件!我刚开始看过它的代码后,觉得照着敲太没意思了,所以就合上书自己写了一遍!为此还写了一篇博文,这是博文地址:在linux下用C语言实现递归查看某个目录中的所有文件[CSDN]! 今天做<Unix环境高级编程>的课后题,看到题目4.11这里提供了一种新的实现这个程序的思路,那就是每回读到一个目录,就通过chdir函数进入到这个目录,然后再通过opendir函数和readdir函数来读取这个目录中的文

C语言词频统计设计

项目需求: 1.设计一个词频统计小软件,对给定的英文文章进行单词频率的统计. 2.文章中相应的标点不计入统计. 3.将统计结果以从大到小的排序方式输出. 设计: 1.因为功能相对简单,采用C语言直接进行编写. 2.项目包含的统计功能利用定义的结构体分别对单词和次数进行统计. 3.以字符串的形式读取单词,并对其中的每个字符进行标点分析. 4.统计完成后采用冒泡排序的方式对次数进行排序. 5.将整个统计结果循环输出. 部分核心代码: 结构体定义: typedef struct addup { cha

编码用命令行执行的C语言词语统计程序

需求介绍 程序处理用户需求的模式为: wc.exe [parameter][filename] 在[parameter]中,用户通过输入参数与程序交互,需实现的功能如下: 1.基本功能 支持 -c  统计文件字符数 支持 -w 统计文件单词数 支持 -l  统计文件总行数 2.拓展功能 支持 -a 返回高级选项(代码行 空行 注释行) 支持 -s 递归处理符合条件的文件 3.高级功能 支持 -x 程序以图形界面与用户交互 [filename] 是待处理文件名. 设计历程及感想 初次看到这个题目,

编码用命令执行的C语言词语统计程序

需求介绍 程序处理用户需求的模式为: wc.exe [parameter][filename] 在[parameter]中,用户通过输入参数与程序交互,需实现的功能如下: 1.基本功能 支持 -c  统计文件字符数 支持 -w 统计文件单词数 支持 -l  统计文件总行数 2.拓展功能 支持 -a 返回高级选项(代码行 空行 注释行) 支持 -s 递归处理符合条件的文件 3.高级功能 支持 -x 程序以图形界面与用户交互 [filename] 是待处理文件名. 设计历程及感想 初次看到这个题目,

C语言实现统计字符个数

#include<stdio.h> int main() {     int sz[10]={0},zm[26]={0},z[26]={0},i,space=0,e=0,t=0;     char c;     printf("请输入一段字符,统计其中各字符的数量\n");     while((c=getchar())!='\n')     {         if(c<='z'&&c>='a')             zm[c-'a']++

【c语言】统计一个数二进制中的1的个数

// 统计一个数二进制中的1的个数 #include <stdio.h> int count(int a) { int count = 0; while (a) { count++; a = a & (a - 1); } return count; } int main() { printf("%d\n", count(10)); printf("%d\n", count(0)); printf("%d\n", count(-

c语言之统计元音

统计元音 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 45249    Accepted Submission(s): 18458 Problem Description 统计每个元音字母在字符串中出现的次数. Input 输入数据首先包括一个整数n,表示测试实例的个数,然后是n行长度不超过100的字符串. Output 对于每个测