C语言期末大作业.docx
《C语言期末大作业.docx》由会员分享,可在线阅读,更多相关《C语言期末大作业.docx(8页珍藏版)》请在冰点文库上搜索。
C语言期末大作业
伊犁师范学院计算机科学系
实验训项目报告
一、小组成员及分工:
姓名:
张雁
学号:
二、指导老师:
王慧玲
三、说明程序编制要点,以及自己在项目制作中的难点及解决办法:
编写的要点:
编写N个函数分别用来求平均分;总分按降许序排列;按姓名查找学生的成绩;找出各科最高分的学生姓名,学号等。
编写主函数提供不同的选择途径。
难点:
函数之间的调用,姓名的比较和交换。
解决办法:
通过参数的传递;用字符串处理函数。
四、说明项目中所涉及的知识点及难点:
知识点:
基础知识,结构体,选择结构程序设计,循环结构程序设计,数组,字符数组,常用的字符串处理函数,函数的调用。
难点:
函数的调用,循环程序设计。
五、附录源程序:
注:
必须有一定的注释,说明函数功能以及主要语句所起的作用
#include"stdio.h"#include"string.h"
#definem5
voidsearch();
/*
声明按姓名查找学生的信息*/
voidave();
/*
声明turnoutaverage*/
voidpaixu();
/*
声明scorepaimingci*/
voidmaxandmin();/*
声明maxandminscorestudent'snumber,name
andeverycoursescore*/
structstudent/*声明defineastruct*/
intnum;/*student
'snumber*/
charname[10];
intmath,english,chinese;
/*threecoursescore*/
intno;
/*studentmingci*/
floatsum;
floatave;
}stu[m];
main()
{
inti;
intq=0,p;
for(i=0;i{printf("num:
");
scanf("%d",&stu[i].num);
printf("name:
");
scanf("%s",stu[i].name);
printf("inputscore:
");
scanf("%d,%d,%d",&stu[i].math,&stu[i].chinese,&stu[i].english);printf("\n");
}
system("cls");
while(q==0)
{
printf("\n");
printf("1findaveragescore\n");
printf("2findsumscorepaiming\n");
printf("3findstudentnameoutputaboutstudentmessage\n");
student's
printf("4findthemaxscoreandminscoremessage\n");
printf("othernumberexit!
\n");
printf("\n");
printf("pleaseinputnumber:
\n");
scanf("%d",&p);
switch(p)
/*
用开关语句SWITCH进行选择*/
选择1,求平均分*/
case1:
ave(stu);break;/*
case2:
paixu(stu);break;/*选择2,求总分按降序排列*/
case3:
search(stu,m);break;/*选择3,求按姓名查找学生的信
息*/
case4:
maxandmin(stu,m);break;/*选择4,求各科的最高分和
最
defult:
q=1;exit(0);
}
}
getch();
}
voidave(structstudentstu[])/*求学生的平均分*/
{
inti;
printf("1findaveagescore:
\n");
printf("num\tname\tsum\tave\n");
for(i=0;i{stu[i].sum=0;
stu[i].sum+=stu[i].math;
stu[i].sum+=stu[i].chinese;
stu[i].sum+=stu[i].english;
stu[i].ave=stu[i].sum/3;
printf("%d\t%s\t%.0f\t%.1f\n",stu[i].num,stu[i].name,stu[i].sum,stu[i].ave);
}
}
voidpaixu(structstudentstu[])/*sumscoreline*/
{
inti,j,a;floatt;charb[10];
printf("2findsumscorepaiming\n");
for(i=0;istu[i].no=i+1;/*geimingcifuchuzhi*/for(i=0;ifor(j=i+1;jif(stu[i].sum{a=stu[i].num;stu[i].num=stu[j].num;stu[j].num=a;t=stu[i].sum;stu[i].sum=stu[j].sum;stu[j].sum=t;
strcpy(b,stu[i].name);
strcpy(stu[i].name,stu[j].name);
strcpy(stu[j].name,b);/*运用字符串复制函数交换学生的姓名*/
printf("num\tname\tsum\tno\n");
for(j=0;j{printf("%3d\t%s\t",stu[j].num,stu[j].name);
printf("%.0f",stu[j].sum);
printf("\t%d\n",stu[j].no);
}
}
voidsearch(structstudentstu[])/*searchstudent'sname*/
{
inti;
charn[10];
printf("3findstudentnameoutputaboutstudentmessage\n");
printf("inputname:
\n");
scanf("%s",n);
for(i=0;iname*/
if(strcmp(n,stu[i].name)==0)/*用字符串比较函数进行比较*/
{
printf("num\tname\tsum\tave\tmath\tchinese\tenglish\n");
printf("%d\t%s\t%.0f\t%.1f",stu[i].num,stu[i].name,stu[i].sum,stu[i].ave);
printf("\t%d\t%d\t%d",stu[i].math,stu[i].chinese,stu[i].english
);
break;/*分别输出要查找的学生的学号,姓名,总分,平均分,和各科的成绩*/
}
}
Voidmaxandmin(structstudentstu[])
/*输出各科学生的最高分和最低分*/
{
inti,a=0,b=0,c=0,d=0,e=0,f=0;
intmaxm,maxc,maxe,minm,minc,mine;
printf("4findthemaxscoreandminscorestudent's
for(i=0;i{
if(stu[a].mathstu[i].math)b=i;minm=stu[b].math;if(stu[c].chinesestu[i].chinese)d=i;minc=stu[d].chinese;if(stu[e].englishstu[i].english)f=i;mine=stu[f].english;
}
printf("the
message\n");
max
score\n\nnum\tname\tmath\tchinese\tenglish:
\n");
printf("%d\t%s\t%d\n",stu[a].num,stu[a].name,maxm);
printf("%d\t%s\t\t%d\n",stu[c].num,stu[c].name,maxc);
printf("%d\t%s\t\t\t%d",stu[e].num,stu[e].name,maxe);
printf("\n");
printf("theminscore
\n\nnum\tname\tmath\tchinese\tenglish:
\n");
printf("%d\t%s\t%d\n",stu[b].num,stu[b].name,minm);
printf("%d\t%s\t\t%d\n",stu[d].num,stu[d].name,minc);
printf("%d\t%s\t\t\t%d",stu[f].num,stu[f].name,mine);
}
《一》输入学生信息(学号,姓名,各科的成绩)
《二》编译成功进入主菜单:
《三》选择1对学生的成绩求总分,平均分:
《四》选择2对学生信息排序
《五》选择3输入要查找的学生的姓名(这里找的是zj)
《六》选择4求各科成绩的最高分和最低分的学生的信息:
六、感想
现在,我终于把大作业做好了,虽然做这次作业我花了很多时间但是我十分的高兴,因为收获很多,从开始思路的模糊混乱,到最终的清晰整齐。
我认为本次作业综合了本学期几乎所有的知识点,要想顺利的完成这次作业必须要牢固的掌握所学的知识点,细节决定成败,编程的过程中一定要仔细,避免出现基础的错误,比如根据不同的数据类型,输入输出的格式控制符也不同。
当编程过程中遇到困难的时候要多看一些书,与同学进行讨论,多请教老师,多思考,通过不断的交流学习,就能对知识的理解更加深刻,并提高自己的编程能力。