求C语言程序答案 15
现有一个班级,50人,共学习三门课程,设计一个学生成绩管理程序要求如下:(1)完成三门课程及录入;或单门课程录入、或同时录入三门课。(2)完成成绩统计和排序:按单科分段统...
现有一个班级,50人,共学习三门课程,设计一个学生成绩管理程序要求如下:
(1) 完成三门课程及录入;或单门课程录入、或同时录入三门课。
(2) 完成成绩统计和排序:按单科分段统计和排序、平均分分段统计和排序;.
(3) 完成成绩输出:按单科输出、输出所有成绩、按平均分由高到低输出.. 展开
(1) 完成三门课程及录入;或单门课程录入、或同时录入三门课。
(2) 完成成绩统计和排序:按单科分段统计和排序、平均分分段统计和排序;.
(3) 完成成绩输出:按单科输出、输出所有成绩、按平均分由高到低输出.. 展开
展开全部
刚好做了类似的题,你拿着改一下吧。这个是放在一个工程的两个文件里的。。。
//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));
}
//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));
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个不难的不用文件的话,书上都有类似的例子
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询