应该很好写的,给你一个参考的(在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; } } 效果:
#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]
return 0;
}
#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
sum=0;
for(i=0;i
ave=sum/n;
printf("总成绩:%.2f\n",sum);
printf("平均成绩:%.2f\n",ave);
j=0;
k=0;
for(i=0;i
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
return(t);
}
float min(float mi[],int x)
{int i;
float t;
t=mi[0];
for(i=0;i
}