c语言实验报告12 文件,C语言实验报告12课件.doc

洛阳理工学院实验报告

系部 计算机系 班级 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");

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值