高手求教C语言 功能说明:编写程序,实现以下成绩处理功能(输出格式参见示例):

2025-03-04 04:33:05
推荐回答(3个)
回答1:

应该很好写的,给你一个参考的(在VC6.0上面调试过):

#include 

#include 

void insert_sort(float *x, int n);

void main(void)

{

int i=0,j=0,n=0;

float sum=0;

float ave=0;

//申请数组空间

printf("how many people? n=");

scanf("%d",&n);

float *a=(float *)malloc(n*sizeof(float));

//---------end

printf("input n scores\n");

float *p=a;

for (i=0;i

{

printf("NO.%d:",i+1);

scanf("%f",p);

sum+=*p;//求总和

}

ave=sum/n;//求平均分

insert_sort(a,n);//分数由小到大排序,重塑数组

//找到大于或等于平均分的分界点

p=a;

for (i=0;i

{

if (*p>=ave)

{

break;

}

}

//-------------------------end

printf("--------------------all informations below----------------------\n");

printf("sum: %f\n",sum);

printf("ave: %f\n",ave);

printf("numbers of level A people: %d\tA rate: %f%%\n",n-i,100*(float)((n-i)/(n-0.000001)));

printf("numbers of level B people: %d\tB rate: %f%%\n",i,100*(float)(i/(n-0.000001)));

printf("lowest  scores: %f\tdistance from ave: %f\n",a[0],a[0]-ave);

printf("highest scores: %f\tdistance from ave: %f\n",a[n-1],a[n-1]-ave);

free(a);//释放数组空间

}

void insert_sort(float *x, int n)//直接插入排序

{

int i, j;

float t;

for (i=1; i

{

t=*(x+i);

for (j=i-1; j>=0 && t<*(x+j); j--) 

{

*(x+j+1) = *(x+j);

}

*(x+j+1) = t; 

}

}

效果:

回答2:


#include"stdio.h"
int mian(){
int a[10],sum=0,avg,i;
for(i=0,;i<10;i++)//输入并累计总分
{
scanf("%d",&a[i]);
sum=sum+a[i];
}
avg=sum/10.0;
printf("平均分:%d",avg);
for(i=0,j=0;i<10;i++)
if(a[i] printf("低于平均分人数:%d",j);
return 0;
}

回答3:

#include
void main()
{int n,i,j,k;
float a,b;
float sum,ave,num[50];
float adang[50],bdang[50];
float max(float ma[],int x);
float min(float mi[],int x);
printf("请输入n的值\n");
scanf("%d",&n);
printf("请输入n个数值\n");
for(i=0;i {scanf("%f",&num[i]);}
sum=0;
for(i=0;i {sum=sum+num[i];};
ave=sum/n;
printf("总成绩:%.2f\n",sum);
printf("平均成绩:%.2f\n",ave);

j=0;
k=0;
for(i=0;i {if(num[i]>=ave) {adang[j]=num[i];j++;}
else {bdang[k]=num[i];k++;};
}

printf("A档人数:%d\t所占比例:%.1f%%\n",j,(((float)j/n)*100));
printf("B档人数:%d\t所占比例:%.1f%%\n",k,(((float)k/n)*100));

a=min(adang,j);
b=max(bdang,k);
printf("A档最低分:%.2f\n",a);
printf("B档最高分:%.2f\n",b);
}

float max(float ma[],int x)
{int i;
float t;
t=ma[0];
for(i=0;i{if(ma[i]>t) t=ma[i];};
return(t);
}

float min(float mi[],int x)
{int i;
float t;
t=mi[0];
for(i=0;i{if(mi[i]return(t);
}