实验报告实验.docx
《实验报告实验.docx》由会员分享,可在线阅读,更多相关《实验报告实验.docx(10页珍藏版)》请在冰点文库上搜索。
实验报告实验
课程名称
程序设计基础
实验项目名称
实验3学生管理系统V1.0
实验时数
7
实验类型
□操作性 □验证性 □设计性 □综合性
指导老师
卢敏
实验地点
(包括机号)
6号机房
实验日期
2015年12月7日
学生姓名
邓高峰
班 级
网络15
学 号
15
同组成员
无
教师评阅
(教师根据实际情况在两种成绩的评定方法中确定其一)
等级制成绩:
□优□良□中□及□不及格
百分制成绩:
(具体的教师批阅,教师可在符合的选项中勾选,同时根据具体情况补充其它评语,特别是必须指出实验过程存在的问题与不足之处。
)
□实验目的明确;□操作方法与步骤正确;
□设计文稿(表格、程序、数据库、网页)符合要求;□界面美观;□布局合理;
□程序结构合理;□算法正确;□语法、语义正确;□题解正确;
□实验结果正确;□保存路径正确;
□实验分析总结全面;□解析完整;□文字流畅;□实验报告规范;
其他:
评阅教师签名
实验报告内容
(不同类型的实验课对实验报告可有不同要求,各个课程的实验报告可以根据自己的学科特点做适当的调整,由任课教师确定填写的内容,学生进行勾选,具体内容用附页填写。
)
□实验目的和要求
□实验内容和原理
□主要仪器设备
□操作方法与实验步骤
□实验数据记录和处理
□实验结果与分析
□讨论、心得
丽水学院计算机实验报告
丽水学院计算机实验报告
一、实验目的
1.掌握数组的定义和初始化的方法;
2.掌握排序、统计分析等常用算法;
3.培养在程序中加注释的习惯;
4.进一步掌握循环嵌套的应用;
5.掌握C语言中定义函数的方法;
6.掌握函数传值调用的方法;
7.掌握数组作函数参数的使用方法;
8.掌握排序、查找、统计分析等常用算法。
二、实验环境
硬件:
Pentium以上的计算机。
软件:
WindowsXP操作系统、VisualC++6.0和C-Free等集成环境。
三、实验内容和结果
1.学生管理系统V1.0。
程序1学生成绩统计。
从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能:
(1)统计不及格人数并打印不及格学生名单;
(2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单;
(3)统计各分数段的学生人数及所占的百分比。
程序1源程序:
#include
#defineN30
intmain()
{
intnum[N],score[N],i,j=0,k,count=0,sum=0,t=0,stu[N]={0};
floatave=0;
for(i=0;i{
printf("第%d个同学的成绩:
",i+1);
scanf("%d%d",&num[i],&score[i]);
sum=sum+score[i];
if(num[i]<0)
break;
}
k=i;
ave=sum/k;
for(i=0;i{
if(score[i]<60)
{
count++;
printf("不及格学生学号:
%d分数:
%d\n",num[i],score[i]);
}
}
printf("不及格人数为:
%3d\n",count);
for(i=0;i{
if(score[i]>ave)
{
t++;
printf("高于平均分学生学号%d分数%d\n",num[i],score[i]);
}
}
printf("高于平均分人数:
%d\n",t);
for(i=0;i{
if(score[i]<60)
{
j=0;
}
else
{
j=((int)score[i]-50)/10;
}
stu[j]++;
}
for(j=0;j<1;j++)
printf("0到59分数段人数比例:
%.2f\n",(float)stu[j]/k);
for(j=1;j<5;j++)
printf("%d到%d分数段人数比例:
%.2f\n",50+10*j,59+10*j,(float)stu[j]/k);
for(j=5;j<6;j++)
printf("100分人数比例:
%.2f\n",(float)stu[j]/k);
return0;
}
程序1运行结果:
思考题:
在编程实现对数据的统计任务时,需要注意什么问题?
注意输入输出格式,以及对班级人数的统计。
程序2成绩排名次。
某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有最多不超过30人参加考试。
考试后要求:
(1)计算每个学生的总分和平均分;
(2)按总分成绩由高到低排出成绩的名次;
(3)打印出名次表,表格内包括学生编号、各科分数、总分和平均分;
(4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数。
程序2源程序:
#include
#defineM3
#defineN30
voidInput(longnum[],intscore[][M],intn);
voidGetSumAver(intscore[][M],intn,intsum[],floataver[]);
voidSort(longnum[],intscore[][M],intn,intsum[],floataver[]);
voidPrint(longnum[],intscore[][M],intn,intsum[],floataver[]);
intSearch(longnum[],intn,longx);
intmain()
{
intn,i,j,k,r,score[N][M],sum[N];
longnum[N],x;
floataver[N];
printf("期末考试的学生人数(不超过30人):
");
scanf("%d",&n);
Input(num,score,n);
GetSumAver(score,n,sum,aver);
Sort(num,score,n,sum,aver);
Print(num,score,n,sum,aver);
printf("查询的考生的学号:
");
scanf("%d",&x);
i=Search(num,n,x);
if(i!
=-1)
printf("学号:
%d\n排名:
第%d\n数学:
%d分\n英语:
%d分\n物理:
%d分\n",num[i],i+1,score[i][0],score[i][1],score[i][2]);
else
printf("此人未参加此次考试!
\n");
}
voidInput(longnum[],intscore[][M],intn)
{
inti,j;
for(i=0;i{
printf("请输入第%d个学生的学号及数学、英语和物理考试的成绩:
\n",i+1);
scanf("%ld",&num[i]);
for(j=0;jscanf("%d",&score[i][j]);
}
}
voidGetSumAver(intscore[][M],intn,intsum[],floataver[])
{
inti,j;
for(i=0;i{
sum[i]=0;
for(j=0;jsum[i]=sum[i]+score[i][j];
aver[i]=(float)sum[i]/M;
}
}
voidSort(longnum[],intscore[][M],intn,intsum[],floataver[])
{
intt,t1,i,j,k,m;
longt2;
floatt3;
for(i=0;i{
k=i;
for(j=i+1;j{
if(sum[j]>sum[i])
{
k=j;
for(m=0;m{
t=score[k][m];
score[k][m]=score[i][m];
score[i][m]=t;
}
t1=sum[k];sum[k]=sum[i];sum[i]=t1;
t2=num[k];num[k]=num[i];num[i]=t2;
t3=aver[k];aver[k]=aver[i];aver[i]=t3;
}
}
}
}
voidPrint(longnum[],intscore[][M],intn,intsum[],floataver[])
{
inti,j;
printf("\n----------------------------------------------------------------------\n");
printf("学生期末考试三门科目成绩汇总(按总分排名)\n");
printf("┏━━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━┓\n");
printf("┃学号┃数学┃英语┃物理┃总分┃平均分┃名次┃\n");
printf("┣━━━━━╋━━━━╋━━━━╋━━━━╋━━━━╋━━━━╋━━━┫\n");
for(i=0;i{
printf("┃%6d┃",num[i]);
for(j=0;j{
printf("%3d┃",score[i][j]);
}
if(aver[i]==100.0)
printf("%3d┃100┃1┃\n",sum[i]);
else
printf("%3d┃%4.1f┃%d┃\n",sum[i],aver[i],i+1);
if(iprintf("┣━━━━━╋━━━━╋━━━━╋━━━━╋━━━━╋━━━━╋━━━┫\n");
}
printf("┗━━━━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━┛\n");
printf("\n----------------------------------------------------------------------\n");
}
//在学号数组中顺序查找学生的学号
intSearch(longnum[],intn,longx)
{
inti;
for(i=0;iif(num[i]==x)
return(i);
return(-1);
}
}
程序2运行结果:
思考题:
(1)如果增加一个要求:
要求按照学生的学号由小到大对学号、成绩等信息进行排序,那么程序如何修改呢?
……
(2)如果要求程序运行后先打印出一个菜单,提示用户选择:
成绩录入、成绩排序、成绩查找,在选择某项功能后执行相应的操作,那么程序如何修改呢?
……
四、实验心得
函数模功能将程序开发模块化,减少了代码的长度,有利于从事代码开发工作的人,以后尽量使用函数写代码。