C语言程序设计实习报告
程序设计实训实验报告(热门20篇)

程序设计实训实验报告(热门20篇)c语言是在国内外广泛使用的一种计算机语言。
其语言功能丰富、表达能力强、使用灵活方便、既具有高级语言的优点,又具有低级语言的许多特点,适合编写系统软件。
其功能强大,不仅用在计算机上广泛用在电子,机械等方面上,而且,所有的windows,unix,linux,mac,os/2,无一例外,哪一个不是c 语言写的?很多新型的语言如,c++,java,c,j,perl...都是衍生自c语言。
掌握了c语言,可以说你就掌握了很多门语言。
学习c程序这门课一年了,这是我们学的第一门专业课,在大学里c语言不但是计算机专业的必修课程而且也是非计算机专业学习计算机基础的一门必修课程。
所以作为我这个计算机专业的学生来说当然十分重要,老师在第一节课说过,c语言是计算机的基础,大多数软件都需要用c语言来编写,通过一个年的学习,使我由初步掌握简单的应试知识到完成高难度的深入编程,如我们在编写一个较大的程序时应该把它分开成几个小程序来看,这样会容易得多。
同时,我觉得c语言应该是操作和理论相结合的课程,在不断地编写中去思考,两者是不可分割的。
在学习一年c语言的过程中我也在慢慢探索怎样才能学好c语言,并总结了一点经验:要了解c语言就要从语法规为基础来学习起,首先要是要了解它的结构,比如变量,首先要了解变量的定义方式(格式),其意义是什么(定义变量有什么用);其次就是要我要怎么去运用它(我要用什么型式去应用它)。
在c语言的命令行中所有的语句都是有它自己的一定格式和形式出现在我们面前,所以我们在学习某种语句或命令时你首先要了解的就是它的规则是什么、有什么用、怎么实现等。
这些都是语法基础也是c语言的基础如果把它们都了解很好了,那么你编起程序来就很得心应手了。
比如说ifelse和switchcase这两种条件语句都是用来判断执行功能的,那我要什么时侯用if什么时侯用switch呢?如果你很好地了解它们的结构和作用的话那么就知道:若它的条件分支是多个而且条件的值是整数或是一个字符值时就会选switch而不会选if。
C语言见习报告6篇

C语⾔见习报告6篇C语⾔是⼀种计算机程序设计语⾔,属⾼级语⾔范畴。
它既具有⾼级语⾔的特点,⼜具有汇编语⾔的特点。
通过见习做⼀报告,本⽂是C语⾔见习的报告,仅供参考。
C语⾔见习报告⼀:班级:姓名:实验名称:电话订餐信息处理实验⽬的:题⽬要求:⼀个⼩饭馆的⽣意⾮常红⽕,要想⽤餐必须提前⼀天打电话预订,假设我们是饭馆负责接受电话预订的服务员,我们需要做些什么呢?⾸先,需要准备⼀张⼤⼩适当的⽩纸,等待顾客的电话。
李红最先打进了电话,她预约第2天中午12点⽤餐,⽤餐⼈数5⼈,服务员在纸上做了如下记录:“李红 12点 5⼈”;接着,刘娜、汪涵、孙杰和赵君分别来了电话,服务员根据他们的要求做了记录,此时纸上记录的内容是:李红 12点 5⼈刘娜 11点 2⼈汪涵 11点20分 3⼈孙杰 10点30分 5⼈赵君 13点20分 6⼈孙杰随后⼜来电话,将⽤餐时间推后⼀个⼩时,那么记录的内容也应该做相应的修改。
刘娜来⽤餐以后,可以将其信息从纸上划去编写程序处理电话订餐的情况实验步骤:⾸先建⽴结构体类型,然后函数声明,编写主函数,定义函数,调⽤函数。
完成后,对程序进⾏调试,确定所编写的程序是否能够运⾏。
实验内容:#include#include#define max 30struct guest{ intnum;char name[40];char time[20];int sum;}guestlink[max];void insert(int _p);void inquire(int);void change(int);void dele(int _p);void show(int);void main(){ inti;int count=0;do{0printf("1.......插⼊\n");printf("2.......查询\n");printf("3.......修改\n");printf("4.......删除\n");printf("5.......显⽰\n");printf("6.......退出\n");scanf("%d",&i);switch(i){case 1: insert(&count);break; case 2: inquire(count);break; case 3: change(count);break; case 4: dele(&count);break; case 5: show(count);break; case 6:break;default:printf("输⼊错误!");break; }}while(i!=6);}void insert(int _p){ inti,number;if(_p==max){ printf("⽤餐已满\n");return;} printf("请输⼊编号:");scanf("%d",&number);for(i=0;i<_p;i++)if(guestlink[i].num==number) { printf("已有相同的编号");return;} guestlink[i].num=number;printf("请输⼊姓名:");scanf("%s",guestlink[i].name); printf("请输⼊⼈数:");scanf("%d",&guestlink[i].sum); printf("请输⼊⽤餐时间:");scanf("%s",guestlink[i].time); (_p)++;}void inquire(int p){ inti,number,flag=1;printf("请输⼊要查询的编号");scanf("%d",&number);for(i=0;iif(guestlink[i].num==number){ printf("姓名:%s",guestlink[i].name);printf("⽤餐时间:%s",guestlink[i].time);printf("⼈数:%d\n",guestlink[i].sum);flag=0;}if(i>=p&&flag==1) printf("所查询的编号不存在"); }void change(int p){ inti,number,flag=1;printf("请输⼊要修改的编号");scanf("%d",&number);for(i=0;iif(guestlink[i].num==number){ printf("请输⼊姓名:");scanf("%s",guestlink[i].name);printf("请输⼊⽤餐时间:");scanf("%s",guestlink[i].time);printf("请输⼊⼈数:");scanf("%d",&guestlink[i].sum);flag=0;}if(i>=p&&flag==1) printf("所查询的编号不存在"); }void dele(int _p){ inti,j,number,flag=1;printf("请输⼊要删除的编号");scanf("%d",&number);for(i=0;i<_p&&flag;i++)if(guestlink[i].num==number){for(j=i;j<_p-1;j++)guestlink[j]=guestlink[j+1];flag=0;(_p)--;}if(i>=_p&&flag==1) printf("输⼊的编号不存在");}void show(int p){ inti;printf("编号姓名⽤餐时间⼈数\n ");for(i=0;i{ printf("%d",guestlink[i].num);printf("%8s",guestlink[i].name);printf("%8s",guestlink[i].time);printf("%8d\n",guestlink[i].sum);}}实验结果:实验体会:通过这次实践让我觉得⽤C语⾔在⽣活中的应⽤占有很⼤的⽐重,这次编程,让我体会到了学习C语⾔的乐趣,以及运⽤c语⾔给⼈们带来的⽅便。
c语言实践报告模板3篇

c语言实践报告模板3篇C language practice report template汇报人:JinTai Collegec语言实践报告模板3篇前言:社会实践报告是进行社会实践后需要完成的报告,是指有目的、有组织、有计划的深入实际、深入社会,对完成的社会实践活动的一个总结报告。
本文档根据社会实践报告内容要求展开说明,具有实践指导意义,便于学习和使用,本文档下载后内容可按需编辑修改及打印。
本文简要目录如下:【下载该文档后使用Word打开,按住键盘Ctrl键且鼠标单击目录内容即可跳转到对应篇章】1、篇章1:c语言实践报告范本2、篇章2:c语言实践报告例文3、篇章3:c语言实践报告范文(标准版)篇章1:c语言实践报告范本在科技高速发展的今天,计算机互联网在人们之中的作用越来越突出。
而c语言作为一种计算机的语言,我们学习它,有助于我们更好的了解计算机,与计算机进行交流,因此,c语言的学习对我们尤其重要。
在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。
在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。
学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。
因为学时所限,课程不能安排过多的统一上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。
为此,我们结合课堂讲授的内容和进度,安排了12次上机实验。
课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:1、加深对课堂讲授内容的理解课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。
然而要使用c语言这个工具解决实际问题,又必须掌握它。
c语言实验报告5篇

c语言实验报告c语言实验报告5篇随着社会一步步向前发展,我们使用报告的情况越来越多,我们在写报告的时候要注意涵盖报告的基本要素。
其实写报告并没有想象中那么难,以下是小编收集整理的c语言实验报告,欢迎阅读与收藏。
c语言实验报告1学号:__________ 姓名:__________ 班级:__________ 日期:__________指导教师:__________ 成绩:__________实验六综合实验一、实验目的1、掌握C语言中的变量、数组、函数、指针、结构体等主要知识点。
2、掌握C程序的结构化程序设计方法,能使用C语言开发简单的应用程序。
3、掌握C程序的运行、调试方法等。
二、实验内容编写一个学生信息排序程序。
要求:1、程序运行时可输入n个学生的信息和成绩(n预先定义)。
2、学生信息包括:学号、英文姓名、年龄;学生成绩包括:语文、数学、计算机。
3、给出一个排序选择列表,能够按照上述所列信息(学号、姓名、年龄、语文、数学、计算机)中的至少一个字段进行排序,并显示其结果。
1、使用函数方法定义各个模块。
三、实验步骤与过程物理实验报告·化学实验报告·生物实验报告·实验报告格式·实验报告模板四、程序调试记录c语言实验报告2第一章基础掌握1.1 实验目的掌握C程序设计编程环境Visual C++,掌握运行一个C程序的基本步骤,包括编辑、编译、链接和运行。
(]1.2 实验要求在报告中记录建立、保存C程序实习过程。
1.3 实验基本内容编写程序,在屏幕上显示一个短句“Hello World”(1)程序:1)编译如下程序:#includeVoid main(){printf (“Hello World! ”);}2)链接。
执行Build-命令。
3)运行。
执行Build Execute 命令。
显示结果。
4)关闭程序工作区。
(2)运行结果:输出结果:Hello World!总结:掌握C语言程序设计的基本框架,能够编写简单的程序。
C语言实训总结报告范文(通用5篇)

C语言实训总结报告范文(通用5篇)在经济飞速发展的今天,报告的适用范围越来越广泛,报告包含标题、正文、结尾等。
一听到写报告马上头昏脑涨?以下是小编整理的C语言实训总结报告范文,仅供参考,希望能够帮助到大家。
C语言实训总结报告篇1这个星期,我们迎来了C语言实训——一次至为重要的实训。
在这个星期里,同学们都很认真的做着那20多道实训题目,遇到不懂的互相请教,或请问老师。
非常感谢老师对我们的帮助,这次实训使我受益匪浅,收获了很多。
通过C语言实训,让我加深了对C语言的了解,而不只是单单的在课本中学到的那些理论,平时乏味的课程,通过自己动手亲自编写,变的生动有趣,而在自己动手的过程中,出现的问题很多,比理论要难的多,当一个程序写完以后,经常会有很多错误而没法解决。
不过,通过几天的实训,逐渐积攒了一些经验,有些错误可以很快就看出来。
这次实训有很大的收获,让我对C语言有了更深的认识,平时在课堂上学到的东西可以自己动手编写,将其转化成一些实用的技能。
如果是一个程序写完一处错误也没有,会有种成就感,于是兴趣就来了,兴趣来了,自然学的东西也就多了,能把理论变成实际的技能,让我对C语言有了浓厚的兴趣和更深层的认识。
C语言是一个有序的学习,学了最基本的替换,然后扩展到循环,嵌套,条理很清楚,不是一个零散的知识,实际上所有的课程都如此,不过通过实训我也知道了自己的不足,存在的很多问题。
比如自己写的写的小程序出了问题,不会解决了就叫老师帮忙,虽然说一定意义上增加了师生之间的感情,但是会养成一种依赖的心理,碰到问题了第一个想到的是求助而不是自己独立解决,所以以后要多多锻炼自己的信心和增加自己的能力,争取做到老师不在身边的时候也可以完成一些简单的程序编写与错误排除。
还有自己的基础知识不扎实,遇到的问题,没有很好的逻辑思维,亲自编写一个陌生的程序的时候会有种无法下手的感觉,找不到突破口。
通过实训,逐渐理清了顺序,对于简单的程序和一些相对比较繁琐的嵌套,循环,不在是看着一头雾水。
C语言程序设计实习报告

C语言程序设计实习报告第一篇:C语言程序设计实习报告实习报告题目: C语言程序设计所属系、部 : 电气工程学院班级: 电子商务131 姓名:贺道君学号: 20***5 指导教师: 费玲玲2014年6月一、实习目的加深理解C语言基础知识及其编程技术,了解高级程序设计语言的结构,熟练掌握程序设计方法和技巧,掌握基本的分析和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。
二、实习时间、地点6月16日(星期一)上午:微机室5下午:微机室56月17日(星期二)3、4:微机室5下午:微机室36月18日(星期三)上午:微机室5下午:学校6月19日(星期四)上午:微机室5下午:微机室36月20日(星期五)上午:C101下午:学校三、实习内容综合四、实习总结在学C语言的一个学期后,我们进行了C语言实训阶段,尝试自己编写一个比较复杂的程序系统。
在为期一周周的时间中,我们同组的同学共同的感受是:C语言实训和平时上课所接触的程序是有很大不同的,所经受的考验和克服的困难是平时所无法比拟的。
好在同组的搭档们精诚合作,分工明确,有问题共同解决,攻克了C语言实训的复杂程序。
在这里,我作为其中的参与者,自然感触良多刚开始接触到C的时候,我已经学过一些有关VB的内容,这个在算法和思维上稍微有点帮助。
回想本学期的学习,首先,最基本的,是C的数据格式,让我们知道整数,浮点数以及字符常量在C中的运用。
然后,在学会了数据转化,以及熟练的可以对各种数据处理之后,我开始进行有关数据结构,像数组,结构体等的学习,因为有的东西从现有的知识来看都是非常简单的,还没有联系到指针等等一些复杂的概念。
可是,仅仅学会这些是远远不够的,C语言中,还有很多更加经典、重要、实用的知识。
说说函数。
虽说很多程序语言都有函数这一内容,但我觉得C语言的函数是最有魅力的了。
学习函数的方法是比较简单的,只有两个字“牢记”,即:牢记函数的功能,牢记函数的用途以及如何输入输出。
C语言课程实习(优秀范文5篇)

C语言课程实习(优秀范文5篇)第一篇:C语言课程实习课程实习一、C程序上机操作方法及运行环境编写一个C程序,输入a, b, c,d四个值,输出其中最小者。
#includemain(){int a,b,c,d,t;printf(“Please input numbers:”);scanf(“%d,%d,%d,%d”,&a,&b,&c,&d);t=min(min(min(a,b),c),d);printf(“min number is:%dn”,t);}int min(int x,int y){int z;if(xz=x;elsez=y;return(z);}运行结果:Please input numbers:4,6,3,9min number is:3课程实习二、C程序上机操作方法及运行环境从键盘输入三个字符,要求输出这三个字符,并输出它们的ASCII 码及其ASCII码的平方根和的平方。
#include#includevoid main(){char ch1,ch2,ch3;float t;scanf(“%c,%c,%c”,&ch1,&ch2,&ch3);t=sqrt(ch1)+sqrt(ch2)+sqrt(ch3);printf(“%c,%dn”,ch1,ch1);printf(“%c,%dn”,ch2,ch2);printf(“%c,%dn”,ch3,ch3);printf(“%fn”,t*t);}运行结果:a,b,ca,97b,98c,99881.984683课程实习三、循环结构程序设计1)输入两个正整数m和n;2)如果m=n输出最大公约数m程序结束;3)若m>n则m=m-n否则n=n-m;4)返回到2)(循环)。
#includevoid main(){int m,n;scanf(“%d%d”,&m,&n);while(m!=n){if(m>n)m=m-n; else n=n-m;}printf(“%dn”,m); }运行结果:34,24课程实习四、循环结构程序设计打印下面的图案# # # # ## # # ## # ## ##includevoid main(){int i,j;for(i=1;i<=4;i++) {for(j=1;jprintf(“ ”);for(j=5;j>=i;j--) printf(“*”); putchar('n');}}课程实习五、数组的应用输入一个0到150之间的十进制整数,要求把此数转化为二进制形式。
C语言程序设计实习报告

C语言程序设计实习报告一、实习目的1. 巩固和加深对C语言程序设计的理解。
2. 掌握C语言编程的基本技巧和方法。
3. 提高分析问题、解决问题的能力。
4. 学会将理论知识应用于实际编程中。
二、实习内容XXX语言基础语法练习变量、数据类型、运算符、表达式等基础语法练习。
控制结构(顺序、分支、循环)的实现。
函数的定义和调用方式练习。
2. 模块化程序设计将一个大的程序分解成多个模块,每个模块完成特定的功能。
通过模块间的调用和传递数据来实现整个程序的功能。
3. 文件操作与文件读写文件的打开、关闭、读写操作练习。
文件格式的转换和数据统计处理。
4. 预处理指令与宏定义使用预处理指令进行条件编译和宏定义替换。
练习使用常见的预处理指令如include、define、ifdef等。
5. 结构体、链表与指针结构体的定义和使用。
链表的创建、插入、删除、遍历等操作。
指针的概念和指针运算。
深入理解指针与数组、结构体等数据结构的关系。
6. 位运算与嵌入式系统编程学习位运算符的使用和位段操作的实现。
嵌入式系统的基本概念和编程方法。
7. 综合项目实践参与或独立完成一个综合性C语言程序设计项目。
项目可以包括基于命令行参数的程序设计、基于文件操作的程序设计、基于网络编程的程序设计等。
三、实习过程1. 理论学习:通过教材、网络资源等途径学习C语言的基础知识和编程技巧。
2. 上机实践:在计算机上编写和调试C语言程序,不断巩固所学知识。
3. 问题解决:遇到问题时,通过查阅资料、请教老师或同学等方式解决问题。
4. 团队合作:在小组项目中与他人协作,共同完成任务。
四、实习收获1. 知识技能方面:深入理解了C语言的基本概念和编程技巧,掌握了模块化程序设计和文件操作等常用算法。
2. 解决问题能力方面:学会了如何分析问题、寻找解决方案并通过实践验证解决方案的正确性。
3. 团队协作能力方面:学会了与他人合作,共同完成任务,提高了团队协作能力。
4. 职业素养方面:培养了耐心、细致的工作态度和勇于尝试、敢于创新的探索精神。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用链表实现简单的学籍管理一、系统概况系统名称:用链表实现简单的学籍管理系统软件要求: Turbo c 2.0硬件要求:PC机具体概况:学籍管理系统是用turboc2.0 C语言编辑器设计一个学籍管理系统,该系统能很好的实现学籍管理,能按照设计菜单对其进行信息输入建立学籍档案,也能对系统进行编辑如插入学生信息、删除信息等操作,并能输出整个学籍信息,也可以按照学号或者总分进行排序输出。
本系统就是运用C程序设计中的结构体、指针、函数(系统库函数、自定义函数)、用指针处理链表、文件操作等知识编写的一个简单的方便查询和管理学籍的应用系统。
二、需求分析●总体功能要求:(1)链表的建立:每个节点包括:学号、姓名、性别、语文、数学、英语、总分;(2)节点的插入:按学号的顺序插入;(3)删除链表中的节点:按学号或者姓名;(4)链表的输出:按学号排序、按总分排序。
●性能的要求:(1)各个功能分别用函数实现;(2)节点信息让用户通过键盘输入;(3)总分通过计算获得;(4)有简单的操作界面;●功能模块图、流程图:创建动态链表:链表的插入的操作流程图:输出链表操作的流程图:链表排序操作的流程图:三、设计程序代码:#include<stdio.h>………………/*输入输出函数*/#include<malloc.h>#define NULL 0………………/*宏定义*/#define LEN sizeof (struct student)int add(int a,int b,int c)……/*定义一个函数,计算语文数学英语成绩的总和*/ {int s;s=a+b+c;return(s);}struct student…………/*定义一个结构体变量管理信息*/{long num;int score[3];char name[20];char sex[2];int sum;struct student *next;};int n;……………… /*定义一个全局变量*/struct student *sort(struct student *m) /*排序函数(从小到大按学号排序)*/ {int k=0;struct student *p,*q,*t,*l;l=m->next;……………… /*将原表头指针所指的下一个结点作为头指针*m->next=NULL;……………… /*第一个结点为新表的头结点*/while(l!=NULL) ………/*当原表不为空时进行排序*/{t=l; ………/*取原表的头结点*/l=l->next;………/*原表头结点指针后移*/p=m; ……/*设定移动指针P,从头指针开始*/q=m;………/*设定移动指针q作为p的前趋,初值头指针*/while(t->num>p->num&&p!=NULL)……………/*进行学号比较*/ {q=p;……/*待排序点值大,往后插,所以新表指针后移*/p=p->next;}if(p==q) …… /*p= =q说明待排序点值小,应排在首位*/ {t->next=p;……………/*待排序点的后继为P*/m=t;……/*新头结点为待排序点*/}else/*待排序点插入在中间某个位置p和q之间,如果P为空则是尾部*/ {t->next=p;…… /*t的后继是p*/q->next=t;……/*q的后继是t*/}}p=m;while(p!=NULL){k++;p=p->next;}return(m);}struct student *sorts(struct student *m) /*排序函数(从低到高总分排序)*/ {int k=0;struct student *p,*q,*t,*l;l=m->next;……………… /*将原表头指针所指的下一个结点作为头指针*m->next=NULL;……………… /*第一个结点为新表的头结点*/while(l!=NULL) ………/*当原表不为空时进行排序*/{t=l; ………/*取原表的头结点*/l=l->next;………/*原表头结点指针后移*/p=m; ……/*设定移动指针P,从头指针开始*/q=m;………/*设定移动指针q作为p的前趋,初值头指针*/while(t->sum>p->sum&&p!=NULL)……………/*进行总分比较*/ {q=p;……/*待排序点值大,往后插,所以新表指针后移*/p=p->next;}if(p==q) …… /*p= =q说明待排序点值小,应排在首位*/ {t->next=p;……………/*待排序点的后继为P*/m=t;……/*新头结点为待排序点*/}else/*待排序点插入在中间某个位置p和q之间,如果P为空则是尾部*/ {t->next=p;…… /*t的后继是p*/q->next=t;……/*q的后继是t*/}}p=m;while(p!=NULL){k++;p=p->next;}}struct student *creat(void) /*定义函数,此函数带回一个指向链表头的指针*/ {int j;struct student *head;struct student *p1,*p2;n=0;p1=p2=(struct student *)malloc(LEN);……… /*开辟一个新单元*/printf("No.:");scanf("%ld",&p1->num);printf("\nname:");scanf("%s",p1->name);printf("\nsex:");scanf("%s",p1->sex);for(j=0;j<3;j++){printf("score %d:",j);scanf("%d",&p1->score[j]);}head=NULL;while (p1->num!=0){n=n+1;if(n==1)head=p1;elsep2->next=p1;p2=p1;p1=(struct student *)malloc(LEN);printf("No.:");scanf("%ld",&p1->num);printf("\nname:");scanf("%s",p1->name);printf("\nsex:");scanf("%s",p1->sex);for(j=0;j<3;j++){printf("score %d:",j);scanf("%d",&p1->score[j]);}}p2->next=NULL;}void print(struct student *head)…………/*定义一个函数,完成输出功能 */ {int add(int a,int b,int c);struct student *p;printf(" No. name sex Chinese Math English sum");p=head;if(head!=NULL)do{p->sum=add(p->score[0],p->score[1],p->score[2]);printf("\n%5ld%9s%4s%8d%5d%8d%5d",p->num,p->name,p->sex,p->score[0],p->score[1],p->score[2],p->sum);p= p->next;}while(p!=NULL);}struct student *del(struct student *head,long num)…………/*定义一个函数,完成输出功能 */{struct student *p1,*p2;if(head==NULL){printf("\nlist null!\n");goto end;}p1=head;while(num!=p1->num &&p1->next!=NULL)…………/p1指向的不是所要找的结点*/{p2=p1;p1=p1->next;}…………/*p1后移了一个结点 */if(num= =p1->num)…………/*找到了 */{if(p1==head)head=p1->next;…………/*若p1指向的是首结点,把第二个结点的地址赋予head */elsep2->next=p1->next;…………/*否则将下一个结点地址赋给前一结点地址 */printf("delete :%ld\n",num);n=n-1;}elseprintf("%ld not been found!\n",num);…………/*找不到该结点 */end:return(head);}struct student *insert(struct student *head,struct student *stud)…………/*定义一个函数,完成插入数据的功能 */ {struct student *p0,*p1,*p2;p1=head;…………/*使p1指向第一个结点 */p0=stud;………………/*使p0指向要插入的结点*/if(head==NULL)………………/*原来的链表是空表*/{head=p0;p0->next=NULL;………/*使p0指向的结点是头结点*/}else{while((p0->num>p1->num)&&(p1->next!=NULL)){p2=p1;………………/*使p2指向刚才p1指向的结点*/p1=p1->next;………………/*p1后移一个结点*/}if(p0->num<=p1->num){if(head==p1)head=p0;…………/*插到原来第一个结点之前*/elsep2->next=p0;………………/*插入到p2指向的结点之后*/p0->next=p1;}else{p1->next=p0;p0->next=NULL;………/*插到最后的结点之后*/}}n=n+1;………/*结点数加1*/return(head);}void main()………………/*主函数(菜单函数)*/{int j;int s;struct student *head,*stu;long del_num;printf("The student management system:\n");………/*设置目录格式*/i:printf("\nLIST");printf("\n1.CREAT LIST \n2.PRINT LIST \n3.DELETE A RECORD\n4.INSERT A RECORD\n5.SORT BY NUMBER\n6.SOURT BY SUM\n0.EXIT\n");printf("\ns=");scanf("%d",&s);switch(s){case 1: printf("\ninput records:\n");head=creat();print(head);break;…………/*建立链表*/case 2: print(head);break;…………/*输出链表*/case 3: printf("\ninput the delete number:"); /*删除记录信息*/scanf("%ld",&del_num);………… /*输入要删除的学号*/while(del_num!=0){head=del(head,del_num);print(head);printf("\ninput the deleted number:");scanf("%ld",&del_num);}break;case 4: printf("\ninput the inserted record:");……/*输入要插入的结点*/stu=(struct student *)malloc(LEN);printf("No.:");scanf("%ld",&stu->num);printf("\nname:");scanf("%s",stu->name);printf("\nsex:");scanf("%s",stu->sex);for(j=0;j<3;j++){printf("\nscore %d:",j);scanf("%d",&stu->score[j]);}while(stu->num!=0){head=insert(head,stu);print(head);printf("\ninput the inserted record:");stu=(struct student *)malloc(LEN);printf("No.:");scanf("%ld",&stu->num);printf("\nname:");scanf("%s",stu->name);printf("\nsex:");scanf("%s",stu->sex);for(j=0;j<3;j++){printf("\nscore %d:",j);scanf("%d",&stu->score[j]);}}break;case 5: head=sort(head);…………/*按学号排序*/print(head);break;case 6: head=sorts(head);…………/*按总分排序*/print(head);break;case 0: exit();}goto i;}目录菜单:操作:1.CREAT LIST创建链表,输入信息操作:2.PRINT LIST输出链表,显示信息操作:3.DELETE A RECORD 删除信息操作:4.INSERT A RECORD 插入信息操作:5.SORT BY NUMBER按学号排序操作:6.SORT BY TOTALSCORE按总分排序四、心得通过本次C语言实习,让我复习以及巩固了C语言中的一部分知识,在复习掌握C语言的基本语法的基础上,是我能够更好的理解和运用其解决实际问题(比如这次的用链表实现简单的学籍管理),让我对结构化程序设计有更进一步的认识。