高手求教C语言 功能说明:编写程序,实现以下成绩处理功能(输出格式参见示例):
- 提问者网友:寂寞梧桐
- 2021-02-17 20:39
- 二级知识专家网友:七十二街
- 2021-02-17 22:06
#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
");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----------------------
");
printf("sum: %f
",sum);
printf("ave: %f
",ave);
printf("numbers of level A people: %d A rate: %f%%
",n-i,100*(float)((n-i)/(n-0.000001)));
printf("numbers of level B people: %d B rate: %f%%
",i,100*(float)(i/(n-0.000001)));
printf("lowest scores: %f distance from ave: %f
",a[0],a[0]-ave);
printf("highest scores: %f distance from ave: %f
",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;
}
}
效果:
- 1楼网友:洒脱疯子
- 2021-02-17 23:36
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<n;i++)
{scanf("%f",&num[i]);}
sum=0;
for(i=0;i<n;i++)
{sum=sum+num[i];};
ave=sum/n;
printf("总成绩:%.2f\n",sum);
printf("平均成绩:%.2f\n",ave);
j=0;
k=0;
for(i=0;i<n;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<x;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<x;i++)
{if(mi[i]<t) t=mi[i];};
return(t);
}
- 2楼网友:想偏头吻你
- 2021-02-17 22:40
#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]<avg) j++;
printf("低于平均分人数:%d",j);
return 0;
}