洛阳理工学院实验报告
系部 计算机系 班级 B130503 学号 姓名
课程名称 高级语言程序设计 实验日期
实验名称 学生成绩管理程序设计 成绩
实验目的:
1. 掌握 C 语言的基本知识,包括 C 语言的功能和语法。
2. 基本具备 C 语言程序设计能力,能熟练地阅读、理解和编写简短的 C 程序。
3. 掌握一种 C 语言的编译和编程环境,能熟练地调试程序。
4. 熟练掌握结构化程序设计的方法。
实验条件:
电脑一台, VC++6.0
实验内容与步骤:
内容:
1. 编写一个学生成绩管理程序。在程序中,要求能够能输入并显示 n 个学生的 m
门考试科目的成绩、总分和平均分;要求按总分进行排序;任意输入一个学号,
能显示该学生的姓名、各门功课的成绩。
步骤:
Step1: 建立结构体类型;
Step2: 输入学生数,科目数,输入学生信息;
Step3: 求每个学生的平均成绩;
Step4: 比较平均成绩高低重新排序,并输出;
Step5: 输入学号,判断学号是否相等,相等则输出;
运行结果:
实验总结:
1. 一开始没有加头文件 #include,之后使用了 strcmp 函数,使得程序错
误;
2.在判断输入学号是否等于学生学号时, 使用了 ”==”结,果错误,因为学号定义为 char
型所以不能像数字那样判断,之后改为 if(strcmp(stu[i].num,no)==0) ;
3. 在比较完平均分高低后换位时使用中间变量 temp 一开始定义为 float 型,
之后结果错误,因为平均分为结构体类型故不能将值赋给 float 型的 temp,之后
将 temp 定义为结构体类型就对了;
4.在做循环比较平均分高低并换位时,循环条件错误, i
循环到最后使得最后一个数和后面比较,使得程序错误,改正后正确;
附:源程序:
#include
#include
struct student
{
char num[8];
char name[8];
float score[50];
float avr;
}stu[10],temp;
void main()
{
int i,j,n,m;
char no[8];
float sum;
printf(" 请输入学生数目: ");
scanf("%d",&n);
printf(" 请输入科目数: ");
scanf("%d",&m);
for(i=0;i
{
printf(" 请输入第%d 位学生信息 :\n",i+1);
printf("No.:");
scanf("%s",stu[i].num);
printf("name:");
scanf("%s",stu[i].name);
for(j=0;j
{
printf(" 第%d 科成绩:",j+1);
scanf("%f",&stu[i].score[j]);
}
printf("\n");
}
for(i=0;i
{
sum=0;
for(j=0;j
sum=sum+stu[i].score[j];
stu[i].avr=sum/m;
}
for(j=0;j
for(i=0;i
if(stu[i].avr
{
temp=stu[i];
stu[i]=stu[i+1];
stu[i+1]=temp;
}
printf(" No. name");
for(i=0;i
printf(" score%d",i+1);
printf(" average\n");
for(i=0;i
{
printf("%5s%7s",stu[i].num,stu[i].name);
for(j=0;j
{
printf("%9.2f",stu[i].score[j]);
}
printf("%8.2f\n",stu[i].avr);
}
printf(" 请输入学生学号: \n");
scanf("%s",no);
for(i=0;i
if(strcmp(stu[i].num,no)==0)
printf("%s %s",stu[i].num,stu[i].name);
for(i=0;i
{
for(j=0;j
if(strcmp(stu[i].num,no)==0)
printf("%8.2f",stu[i].score[j]);
}
printf("\n");
}