1、C语言程序设计综合实习报告用指针优化学生成绩排名一、 目的1.熟悉变量的指针和指向变量的的指针变量的概念和使用2.熟悉数组的指针和指向数组的的指针变量的概念和使用3.掌握冒泡法或选择法排序的算法4.掌握函数的定义、调用、声明,以及参数的两种传递方式二、 实习环境个人计算机Windows操作系统,Turbo C 2. 0或WinTC或Visual C+等编译开发环境三、实习内容与步骤1.定义一个数组stu10存放10个学生的成绩,从键盘输入数据,要求用指针实现2.将数组stu10的内容输出到屏幕上,要求用指针实现3.将成绩数组按照从高到低进行排序,要求用指针实现4.将第三步内容放在函数中实现,在
2、主函数中调用实现排序,用指针实现,输出排序 后的成绩单5.采用指针方法,输入字符串student score ”,复制该字符串并输出(复制字符串采用库函数或用户自定义函数)6.在实习报告中画出程序流程图,说明程序设计的算法,附主要程序段运行结果(屏 幕截图)。7.在实习报告中说明知识点。8.在实习报告中说明程序设计过程中的难点、解决办法及编程小结或体会。四、程序流程图、算法及运行结果1.程序流程图:开始2.算法:先定义一个函数接收10个学生的成绩,利用指针将数据保存在数组中,再定义第 二个函数输出所以学生的成绩,同样也是使用指针,最后定义一个函数用选择排序法 对成绩进行由大到小的排序,将指针指
3、向的是数组中的第一个地址,在主函数中依次 调用这两个函数;定义一个字符指针指向字符串,利用库函数中的strcpy将student score复制给 字符指针,输出字符串3.程序:#includestdio. h#includestring. hstruct studentint grade;int num;stu10;void input(struct student *p) int i;for(i=0;inum, &p-grade) ; void printout (struct student *p)int i;for(i=0;igrade);void arrow (int *pl, in
4、t *p2,int *px, int *py) int t, m;t二*px; *px二*py; *py二t;m二*p1; *pl=*p2; *p2=m;void place (struct student stu) int i,j;for(i=l;i10;i+ )for(j=0;j10-i;j+)if (stuj gradestuj+1 grade)arrow(&stuj num, &stuj+1 num, &stuj grade, &stuEj+1 grade);int main(void) struct student stu10, *ptr;int i;char stringLlOO,
5、*s;s二string;ptr二stu;input (ptr);printout (ptr);place (stu);printf C排序后的成绩单为:n);for(i=0;igradem;num二0;for (q=0; qNT ; q+)if (p+q)-gradema) a= (p+q)-gradem;num二q; return num;int hanshu_average(struct student *p) int i,m, index;float a;for(m=0;maverage=O;for(i=0;iaverage+p-gradei; p-average=p-average*1
6、 0/3; a=p-average;for(m=0;maveragea) a=p-average;index二m; elseindex二0;return index;void hanshu_place(struct student stu) int i, j;struct student t;for(i=0;iN;i+)for(j=i;jstui average) t二stuj+l; stuj+l=stui; stui=t;void main()struct student stu10, *ptr;int i, j, index, m, num;float average:ptr=stu;fo
7、r(i=0;iN;i+) printf(/z请输入第%d个学生的学号、姓名及三科成绩:rT,i+l);scanf (z,%ld%s,z, &stui number, stui name);for(j=0;j3;j+)scanf (”%f,&stui. gradej) ; printf(n);for(m=0;m3;m+) num二hanshu_best(pt m);printf (z, 学号 %ld 姓名 : %10s 最高分一8 2fn,z, stu num number, stuEnum name, stunum grade m) ; index二hanshu_average(ptr);pr
8、intf Cn三门课平均分最高的学生信息是:n);printf C 学 号Id 姓 名: %-10s 平 均分%一8 2fn, stuindex number, stuindex name, stuEindex avera ge);printf (nl0个学生由高分到低分排名为:n);printf(number name Math Chinese English averagen);hanshuplace(ptr);for(i=0;iN;i+) printf (“%一 101d%-10s%, stui number, stui name);for(j=0;j3;j+)printf 2f, st
9、ui. gradej);printf (“%一 10. 2fn, stui average) ;4.运行结果:五、 知识点、难点及解决办法。主要考察的是结构体指针的运用,比较难的地方也就是如何将指针指向结构体并返回我 们所要的数值先定义一个结构体数组,再定义一个结构体指针,令指针指向数组的首地址,在自定义 函数中通过指针的运算实现数组的运算,并返回相应的值六、 编程小结或体会。在输出我们所需要的数据时候可以通过一些小技巧使程序看起來更好看。掌握结构体指针的技巧可以解决很多问题,使自己的程序具有解决多个复杂问题的能 力,以后多练习此类的程序设计问题,使自己更加熟练课题三:学生成绩文件管理一、 目
10、的1.掌握文件指针的概念和运用2.掌握文件的相关操作:打开、读、写、关闭3.掌握文件的定位操作二、 实习环境个人计算机,Windows操作系统,Turbo C 2. 0或WinTC或Visual C卄等编译开发环境三、 实习内容与步骤1.定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩2.从键盘输入10个学生的以上内容,存入文件stud, txt,关闭文件3.打开stud, txt文件,将数据读出,查看是否正确写入,关闭文件。4.打开文件stud, txt文件,读出数据,将10个学生按照平均分数从高到低进行排序, 分别将结果输出到屏幕上和另一文件studsort, txt中。5.在
11、实习报告中画出程序流程图,说明程序设计的算法,附主要程序段及运行结果(屏幕 截图)。6.在实习报告中说明知识点。7.在实习报告中说明程序设计过程中的难点、解决办法及编程小结或体会。四、 程序流程图、算法及运行结果1.程序流程图:2.算法:首先创建一个可读可写的新文件stud, txt,键入十个学生的信息并储存在文件中, 关闭程序;打开文件stud, txt,读出文件中的信息并输出,检查有无错漏,并按照平 均分通过选择排序法对学生由高到低排序,关闭程序;将排好序的信息输出并存储在 新的可写文件studsort, txt中3 程序:ttincludestdio. httincludestdlib
12、httdefine N 10struct studentlong num;char name20;int grade3:stu10;int main(void) FILE *fp,*fpp;struct student stu10,t:float average100:int i二0, j;if (fp二fopen (stud, txt, w+)二二NULL) printfC该文件打开失败! );exit (0); for(i=0;iN;i+) printf(第-2d个学生的学号、姓名及三门课成绩:n,i+l); scanf (,z%ld%s,z, &stui num, stui name);fprintf (fp,第%-2d个学生的学号、姓名及三门课成绩:n,i+l); fprin
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1