c语言程序综合实习学生成绩,《C语言程序设计》综合实习报告.doc

本文档详细介绍了C语言程序设计的实习任务,包括使用指针操作数组实现学生成绩排序,以及使用指针实现字符串复制。通过冒泡排序或选择排序算法,实现了成绩从高到低的排列,并将此功能封装到函数中。同时,还展示了如何使用指针创建和操作单向链表,包括链表的输出、节点插入和删除。在编程过程中,重点掌握了指针、数组、函数调用及链表操作等知识。
摘要由CSDN通过智能技术生成

《《C语言程序设计》综合实习报告.doc》由会员分享,可在线阅读,更多相关《《C语言程序设计》综合实习报告.doc(17页珍藏版)》请在装配图网上搜索。

1、17 - 17 -课题一:用指针优化学生成绩排名一、目的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.程序流程图:开始由键盘输入成绩输出成绩比较成绩的高低复制student score对成绩排序输出字符串输出排序好的成绩结束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;fo。

4、r(i=0;igrade);void arrow (int *p1,int *p2,int *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;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。

5、=0;for(i=0;iaverage=p-average+p-gradei;p-average=p-average*1.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;istui.average) t=stuj+1; stuj+1=stui; stui=t;void main()struct student stu10,*ptr;int 。

6、i,j,index,m,num;float average;ptr=stu;for(i=0;iaveragei) t=stuj+1; stuj+1=stui; stui=t; if(fclose(fp) printf(该文件无法正常关闭!n);exit(0); if(fpp=fopen(studsort.txt,w+)=NULL) printf(该文件打开失败!);exit(0); printf(n由高到低排序为:n);for(i=0;inum=number)printf(%-15sn,p-name);p=p-next; while(p!=NULL);void cdelete(struct s。

7、tudent *q) struct student *p1,*p2;long count;printf(请输入你要删除的学生学号:);scanf(%ld,&count);p1=q;while(count!=p1-num&p1-next!=NULL) p2=p1; p1=p1-next; ;if(count=p1-num) if(p1=q)q=p1-next;elsep2-next=p1-next;printf(delete :%ldn,p1-num); int main(void) struct student *head,*tail,*p,*p1,*p2,*q;int n=0,i;long 。

8、number,NUM;printf(请输入%d个学生的信息:n,N);p=tail=(struct student *)malloc(len);head=NULL;scanf(%ld%s,&p-num,p-name);while(p-num!=0) n+=1;if(n=1)head=p;elsetail-next=p;tail=p;p=(struct student *)malloc(len);scanf(%ld%s,&p-num,p-name); ;tail-next=NULL;printf(n这10个学生的信息为:n);p=head;if(head!=NULL)do printf(%-15。

9、ld%-15sn,p-num,p-name);p=p-next; while(p!=NULL);search(head);q=head;cdelete(q);do printf(%-15ld%-15sn,q-num,q-name);q=q-next; while(q!=NULL);4.运行结果:五、知识点、难点及解决办法。主要考察利用指针制作单向链表,难点在于各个结点的链接以及对于链表的输出,删除结点时如何不让链表断开定义一个头指针和一个尾指针,通过尾指针的移动实现结点的链接,删除结点时先将要删除结点两端的结点链接上,再删除。六、编程小结或体会。制作单向链表是对指针的充分运用,可以节省内存,但是要熟练掌握还是有。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值