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 student int 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 *p1,int *p2,int *
4、px,int *py) int t,m; t=*px; *px=*py; *py=t; m=*p1; *p1=*p2; *p2=m; void place(struct student stu) int i,j; for(i=1;i10;i+ ) for(j=0;j10-i;j+) if (stuj.gradestuj+1.grade)arrow(&stuj.num,&stuj+1.num,&stuj.grade,&stuj+1.grade); int main(void) struct student stu10,*ptr; int i; char string100,*s; s=strin
5、g;ptr=stu; input(ptr); printout(ptr); place(stu); printf(排序后的成绩单为:n); for(i=0;igradem; num=0; for(q=0;qgradema) a=(p+q)-gradem; num=q; return num;int hanshu_average(struct student *p) int i,m,index; float a; for(m=0;maverage=0; for(i=0;iaverage=p-average+p-gradei; p-average=p-average*1.0/3; a=p-aver
6、age; for(m=0;maveragea) a=p-average; index=m; else index=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+1; stuj+1=stui; stui=t;void main() struct student stu10,*ptr; int i,j,index,m,num; float average; ptr=stu; for(i=0;iN
7、;i+) printf(请输入第%d个学生的学号、姓名及三科成绩:n,i+1); scanf(%ld%s,&stui.number,stui.name); for(j=0;j3;j+) scanf(%f,&stui.gradej); printf(n); for(m=0;m3;m+) num=hanshu_best(ptr,m);printf(学号%ld 姓名:%-10s 最高分% -8.2fn,stunum.number,stunum.name,stunum.gradem); index=hanshu_average(ptr); printf(n三门课平均分最高的学生信息是:n); prin
8、tf(学号%ld 姓名:%-10s 平均分%-8.2fn,stuindex.number,stuindex.name,stuindex.average); printf(n10个学生由高分到低分排名为:n);printf(number name Math Chinese English averagen); hanshu_place(ptr); for(i=0;iN;i+) printf(%-10ld%-10s%,stui.number,stui.name); for(j=0;j3;j+) printf(%-10.2f,stui.gradej); printf(%-10.2fn,stui.av
9、erage);4.运行结果:五、知识点、难点及解决办法。 主要考察的是结构体指针的运用,比较难的地方也就是如何将指针指向结构体并返回我们所要的数值 先定义一个结构体数组,再定义一个结构体指针,令指针指向数组的首地址,在自定义函数中通过指针的运算实现数组的运算,并返回相应的值六、编程小结或体会。在输出我们所需要的数据时候可以通过一些小技巧使程序看起来更好看。掌握结构体指针的技巧可以解决很多问题,使自己的程序具有解决多个复杂问题的能力,以后多练习此类的程序设计问题,使自己更加熟练课题三:学生成绩文件管理一、目的1掌握文件指针的概念和运用2掌握文件的相关操作:打开、读、写、关闭3掌握文件的定位操作二
10、、实习环境个人计算机,Windows操作系统,Turbo C 2.0或 WinTC或Visual C+等编译开发环境三、实习内容与步骤1定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩2从键盘输入10个学生的以上内容,存入文件stud.txt,关闭文件3打开stud.txt文件,将数据读出,查看是否正确写入,关闭文件。4打开文件stud.txt文件,读出数据,将10个学生按照平均分数从高到低进行排序,分别将结果输出到屏幕上和另一文件studsort.txt中。5在实习报告中画出程序流程图,说明程序设计的算法,附主要程序段及运行结果(屏幕截图)。6在实习报告中说明知识点。7在实习报告中说明程序设计过程中的难点、解决