解题思路:
定义 int s[1000],m[5]={0},t,p[5][1000],a[5]={0}; //a[]为p[ ][a]]的位置,用数组m[ ]每个等级的统计个数
输入
对每个等级统计个数并保存到另一个数组,把个数统计到m[]数组
找出个数最多的数组m[max]
排序
输出
注意事项:
参考代码:
#include <stdio.h>
void px(int a[],int x)
{
int i,j,max,t;
for(i=0;i<x;i++)
{
max=i;
for(j=i;j<x;j++)
if(a[j]>a[max])
max=j;
t=a[max];a[max]=a[i];a[i]=t;
}
}
int main()
{
int s[1000],m[5]={0},t,p[5][1000],a[5]={0};//a[]为p[][a]]的位置,m[]每个等级的统计个数
int n,j,i,max;//max找出个数最多的数组m[]的位置
scanf("%d",&n);//输入
for(j=0;j<n;j++)
scanf("%d",&s[j]);
for(i=0,j=0;i<n;i++)
{
if(s[i]>=90 && s[i]<=100)//统计
{
m[0]++;//统计个数
p[0][a[0]]=s[i];//用数组p[][a]]保存
a[0]++;//数组a[0]改变p[][a]]的位置
}
else if(s[i]>=80 && s[i]<=89)
{
m[1]++;
p[1][a[1]]=s[i];
a[1]++;
}
else if(s[i]>=70 && s[i]<=79)
{
m[2]++;
p[2][a[2]]=s[i];
a[2]++;
}
else if(s[i]>=60 && s[i]<=69)
{
m[3]++;
p[3][a[3]]=s[i];
a[3]++;
}
else if(s[i]>=0 && s[i]<=59)
{
m[4]++;
p[4][a[4]]=s[i];
a[4]++;
}
else
;
}
max=0;
for(i=1;i<5;i++)//找出个数最多的等级的位置
if(m[max]<m[i])
{
max=i;
}
printf("%d %d %d %d %d\n",m[0],m[1],m[2],m[3],m[4]);
printf("%d\n",m[max]);
px(p[max],m[max]);//对等级最多的位置进行排序
for(i=0;i<m[max];i++)//输出
printf("%d ",p[max][i]);
}
0.0分
5 人评分
C语言训练-8除不尽的数 (C语言代码)暴力解法,答案只有一个,直接输出就好了浏览:1045 |
C语言训练-求素数问题 (C语言代码)浏览:989 |
C语言训练-谁家孩子跑最慢* (C语言代码)浏览:1544 |
C语言训练-排序问题<1> (C++代码)浏览:632 |
大小写转换 (C语言代码)浏览:904 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:611 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:956 |
简单的a+b (C语言代码)浏览:661 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:672 |
母牛的故事 (C语言代码)浏览:1451 |