编写一个学生多科成绩处理程序(C语言)
发布网友
发布时间:2024-08-23 16:25
我来回答
共1个回答
热心网友
时间:2024-10-29 11:17
#include<stdio.h>
#include<stdlib.h> //这里只有system函数用到这个头文件
#define STU_NUM 3 //学生数
#define KM_NUM 2 //科目数
//学生信息结构,可扩展
struct stu_info{
//char stu_no[10]; //学生姓名,扩展项
//char stu_km[KM_NUM][10]; //科目名称,扩展项
double stu_score[KM_NUM]; //学生成绩
};
typedef struct stu_info STU_INFO;
//学生结构变量
//该函数用来输入输入各个学生各个科目的成绩
int init( STU_INFO* stu ) {
int i = 0;
int j = 0;
for( i=0; i<STU_NUM; i++ ) {
printf( "学号[%d]\n", i+1 );
for( j=0; j<KM_NUM; j++ ) {
printf( "科目[%d]\n", j+1 );
printf( "成绩:" );
scanf( "%lf", &stu[i].stu_score[j] ); //获得学生成绩
system("cls"); //每个学生成绩输完清一下屏幕
}
}
return 0;
}
//学生成绩信息输出
int show( STU_INFO* stu ) {
int i=0;
int j=0;
double p_tot = 0.00;
double p_avg = 0.00;
double k_tot = 0.00;
double k_avg = 0.00;
//此处是打印表头及表头项(提示信息)
printf( "\t学生成绩管理\t人数[%d]\n", STU_NUM );
printf( "----------------------------------------------------\n\n" );
printf( "学号\t" );
for( j=0; j<KM_NUM; j++ ) {
printf( "科目[%d]\t", j+1 );
}
printf( "个人平均\t" );
printf( "\n" );
//此处是打印每个学生的成绩信息(表体)
for( i=0; i<STU_NUM; i++ ) {
p_tot = 0.00;
printf( "[%d]\t", i+1 );
for( j=0; j<KM_NUM; j++ ) {
printf( "%.2lf\t", stu[i].stu_score[j] );
p_tot+=stu[i].stu_score[j];
}
printf( "%.2lf\t", p_tot/KM_NUM );
printf( "\n" );
}
printf( "----------------------------------------------------\n\n" );
//此处是打印单科平均分(表尾)
printf( "单科\t" );
for( i=0; i<KM_NUM; i++ ) {
k_tot=0.00;
for( j=0; j<STU_NUM; j++ ) {
k_tot+=stu[j].stu_score[i];
}
printf( "%.2lf\t", k_tot/STU_NUM );
}
printf( "\n\n" );
return 0;
}
int main() {
STU_INFO stu[STU_NUM]; //学生变量
init( stu ); //初始化
show( stu ); //显示
return 0;
}
因为我想复习一下结构体,所以就用结构体写了一个,没用二维数据,思想是一样的,希望对你有所帮助