解题思路:
定义 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语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:1514 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:1432 |
C语言程序设计教程(第三版)课后习题9.2 (Java代码)浏览:608 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:664 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:627 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:636 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:460 |
母牛的故事 (C语言代码)浏览:940 |
蛇行矩阵 (C语言代码)浏览:498 |
简单的a+b (C语言代码)浏览:818 |