c语言程序综合实习,《C语言程序设计》综合实习报告

本报告介绍了一个使用C语言实现的学生成绩排序程序,重点介绍了如何使用指针来优化排序算法,并通过实际案例展示了单向链表的创建、输出及删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

1、用指针优化学生成绩排名一、目的1 熟悉变量的指针和指向变量的的指针变量的概念和使用2熟悉数组的指针和指向数组的的指针变量的概念和使用3. 掌握冒泡法或选择法排序的算法4. 掌握函数的定义、调用、声明,以及参数的两种传递方式二、实习环境个人计算机,Windows操作系统,Turbo C 2.0或WinTC或Visual C+等编译开发环境三、实习内容与步骤1 定义一个数组stu1O存放10个学生的成绩,从键盘输入数据,要求用指针实现2将数组stu10的内容输出到屏幕上,要求用指针实现3 将成绩数组按照从高到低进行排序,要求用指针实现4将第三步内容放在函数中实现,在主函数中调用实现排序,用指针实现。

2、,输出排序 后的成绩单5采用指针方法,输入字符串“ student score ” ,复制该字符串并输出(复制字符串 采用库函数或用户自定义函数)6 在实习报告中画出程序流程图,说明程序设计的算法,附主要程序段运行结果(屏 幕截图)。7.在实习报告中说明知识点。8在实习报告中说明程序设计过程中的难点、解决办法及编程小结或体会。四、程序流程图、算法及运行结果1. 程序流程图:开始对成绩排序I输出排序好的成结束复 制比较成绩的n um,&p-grade); void prin tout(struct stude nt *p) int i;for(i=0;igrade);void arrow (in。

3、t *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=0;for(i=0;iaverage=p-average。

4、+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 i,j,index,m,num;float average。

5、;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=nu mber)prin tf(%15sn,p- name);p=p-next; while(p!=NULL);void cdelete(struct student *q) struct stu。

6、dent *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 number,NUM;p。

7、rin tf( 请输入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;else tail-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(%-。

8、15ld%-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、付费专栏及课程。

余额充值