求C语言程序答案 15

现有一个班级,50人,共学习三门课程,设计一个学生成绩管理程序要求如下:(1)完成三门课程及录入;或单门课程录入、或同时录入三门课。(2)完成成绩统计和排序:按单科分段统... 现有一个班级,50人,共学习三门课程,设计一个学生成绩管理程序要求如下:
(1) 完成三门课程及录入;或单门课程录入、或同时录入三门课。
(2) 完成成绩统计和排序:按单科分段统计和排序、平均分分段统计和排序;.
(3) 完成成绩输出:按单科输出、输出所有成绩、按平均分由高到低输出..
展开
 我来答
萧暮岚
2012-05-30
知道答主
回答量:18
采纳率:0%
帮助的人:6.6万
展开全部
刚好做了类似的题,你拿着改一下吧。这个是放在一个工程的两个文件里的。。。
//prog_main.c //主文件
#include < stdio.h >

#define m 10 //学生

#define n 5 //课程

float str[ m ][ n ], str1[ m ], str2[ n ], t;

float str3[ m ][ 3 ];

int count=0;

extern void _AVEs(float arr[][5] ,float str1[],int M, int N);

extern void _AVEc(float arr[][5] ,float str2[],int M, int N);

extern void _SearchMax(float arr[][5] ,float str3[][3],int M, int N);

extern float _Variance(float str1[], float T, int M);

int main ()
{
int i, j;

for( i = 0; i < m; i++ ){

for ( j = 0; j < n; j++ ){

scanf("%f", &str[ i ][ j ]);

}

}

_AVEs(str,str1,m,n);

_AVEc(str,str2,m,n);

_SearchMax(str,str3,m,n,count);

_Variance(str1,t,m);

printf("每个学生的平均分:\n");

for( i = 0; i < m; i++){

printf("%f ",str1[ i ]);

if( i == m-1 ){

printf("\n");

}
}

printf("每门课的平均分:\n");

for( i = 0; i < n; i++ ){

printf("%f ",str2[ i ]);

if( i == n-1 ){

printf("\n");

}
}

printf("最高分(顺序为:学生+课程+成绩):\n");

for(i=0;i<count;i++)
{
printf("%1.0f %1.0f %4.2f\n",str3[i][0],str3[i][1],str3[i][2]);
}

printf("平均分方差:\n");

printf("%f\n",_Variance(str1,t,m));

return 0;

}

//prog_fun.c //程序文件
#include<stdio.h>

extern count;

void _AVEs( float arr[][5] ,float str1[],int M, int N) //学生平均分
{
int i, j;

float sum = 0;

for( i = 0; i < M; i++ ){

for ( j = 0; j < N; j++ ){

sum += arr[ i ][ j ];
}

str1[ i ] = (float)sum/N;

sum = 0;

}

}

void _AVEc( float arr[][5] ,float str2[],int M, int N ) //课程平均分
{
int i, j;

float sum = 0;

for( i = 0; i < N; i++ ){

for( j = 0; j < M; j++ ){

sum += arr[ j ][ i ];

}

str2[ i ] = (float)sum/M;

sum = 0;

}
}

void _SearchMax(float arr[][5] ,float str3[][3],int M, int N)
{
int i, j, k;

float max;

for( i = 0; i < N; i++ ){

max=arr[0][i];

for( j = 0; j < M; j++ ){

if(arr[j][i]>max)

max=arr[j][i];

if(arr[j][i]==max){

str3[count][0]=j;

str3[count][1]=i;

str3[count][2]=max;

count++;
}
}
}
}

float _Variance(float str1[], float T, int M)
{
int i;
float sum1, sum2;
sum1 = 0, sum2 = 0;
for( i = 0; i < M; i++ ){
sum1 += str1[i]*str1[i];
sum2 += str1[i];
}
return (sum1/M - (sum2/M)*(sum2/M));
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
计10电
2012-05-29 · TA获得超过128个赞
知道小有建树答主
回答量:254
采纳率:0%
帮助的人:127万
展开全部
这个不难的不用文件的话,书上都有类似的例子
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
柳树林001
2012-05-30
知道答主
回答量:19
采纳率:0%
帮助的人:3万
展开全部
不知道
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式