C语言编程题

编写一个函数,这个函数同时求出 n 个学生成绩的最高分、最低分、平均分以及超过平均分的人数,并编写主函数完成:

① 输入 n 个学生的成绩;

② 调用此函数进行统计;

③ 输出统计结果。(要求使用动态分配)

最好写出完整的能直接运行的源代码

//抱歉用c++写的,你只要把cout,cin改成printf和scanf就好了
#include <iostream.h>//在c语言是stdio.h
#include<malloc.h>
void tongji(int stuNum);

void main()
{ int num;
cout<<"请输入你要输入学生的人数:"<<endl;
cin>>num;
tongji(num);
}

void tongji(int stuNum)
{ int *p,sum=0, overave=0,max=0,min=0;
float ave=0;
p=(int*)malloc(sizeof(int)*stuNum);
for(int i=0;i<stuNum;i++)
{

cout<<"pls input:";
cin>>p[i];
sum+=p[i];
}
for(int m=0;m<stuNum;m++)
cout<<p[m]<<endl;
//平均值
ave=(float)sum/stuNum;
cout<<ave;
max=p[0];
min=p[0];
//求最大最小值
for(int k=1;k<stuNum;k++)
{if(p[k]>=max)
max=p[k];
if(p[k]<min)
min=p[k];
}
cout<<"最高分是: "<<max<<endl;
cout<<"最低分是: "<<min<<endl;
//超过平均分的人数
for(int j=0;j<stuNum;j++)
if(p[j]>ave)
overave++;
cout<<"超过平均分的人数是:"<<endl;
cout<<overave;

}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-08-24
动态分配,用链表好象分少了点.先给个稚形
struct student {
char name[20];
int score;
}
不用链表:

int getstu(int *max,int *min,int *avg,int *overavg,int *arr int n){
int i,j,sum;
*overavg=0;
sum=0;
*max=0;
*min=101;
for(i=0;i<n;i++){
if(arr[i]>*max)
*max=arr[i];
if(*min>arr[i])
*min=arr[i];
sum+=arr[i];
}
*avg=sum/n;

for(i=0;i<n;i++){
if(arr[i]>*avg)
*overavg++;
}

}
相似回答
大家正在搜