2. 输入10个学生的成绩到一个数组里,编写函数求学生的平均成绩和最高分,并用冒泡法这学生成绩进排序后输出.

2025-02-24 01:15:27
推荐回答(2个)
回答1:

#include
void score(int n)
{
double res[100];
double sum=0;
double ave;
for (int i=0;i {
cin>>res[i];
}
for (i=0;i {
sum+=res[i];
}
ave=sum/n;
cout<<"总分为:"< cout<<"平均分为:"< double max=res[0];
for (i=0;i {

if(res[i]>=max)
{
max=res[i];
}
}
cout<<"最高分为:"< for(i=0;i {
for(int j=0;j<=i;j++)
{
if(res[i]>res[j])
{
double temp=res[i];
res[i]=res[j];
res[j]=temp;
}
}
}
cout<<"成绩由高到低排序:";
for(i=0;i {
cout< }

}
void main()
{
int n=10;
cout<<"请输入"< score(n);
cout<}

回答2:

//统计分数频率 并排序3——1
#include
#include
#define max 100
int main()
{
int i,j,k,t,s,x,n,M;
bool flag;
float a[max],b[max],c[max],m[max];
s=0;
k=0;
x=0;
while(scanf("%f",&a[s])!=EOF)
{
s++;
}
for(i=0;i {
flag=1;
for(j=i+1;j {
if(a[j]==a[i])
{
flag=0;
break;
}
}
if(flag)
b[x++]=a[i];
}
// for(i=0;i // printf("%f ",b[i]);

for(n=0;n {
k=1;
for(i=0;i if(b[n]==a[i])
c[n]=k++;
//for(k=0;k // printf("%f ",c[k]);
}
M=c[0];
for(k=1;k {
if(M {
M=c[k];
// m[0]=b[k];
}
//printf("%f\n\n",M);
}
k=0;
for(i=0;i {
if(M==c[i])
m[k++]=b[i];
}
for(i=0;i {
for(j=0;j if(m[j]>m[j+1])
{
t=m[j];m[j]=m[j+1];m[j+1]=t;
}
}
for(i=0;i printf("%.2f ",m[i]);
return 0;
}
//分六步骤

首先存储随机的学生分数 使用一个累加器S

其次for循环存储出现的各个分数代表运用到“锁”flag用法一定得记住(怎么设flag初值,一定在满足条件后就跳出break)

用c[x]存各个分数出现的频率,累加器k注意在每次大循环前赋值k=1;

再比较法 找到C[x]中最大值M

再顺序查找出c[x]中和M一样大的分数b[x]存到m[k++]中,

冒泡排序法对m[k]进行升序排序
输出