C语言实习报告
- 格式:doc
- 大小:88.00 KB
- 文档页数:33
c语言实习心得体会范文在C语言实习期间,我深深感受到了理论知识与实践应用之间的差距,也感受到了自己在C语言编程方面的不足之处。
通过这段实习经历,我不仅学到了许多新的知识和技能,还培养了自己的动手实践能力和解决问题的能力。
<br>首先,在实习期间,我了解到了C语言的基础知识,包括变量、常量、运算符、数据类型等。
这些基础知识是我进一步学习和应用C语言的基础,也为后面的实践提供了基础。
同时,我也学习了C 语言的控制结构,包括顺序结构、选择结构和循环结构等。
这些结构的运用使我的程序更加灵活和高效,也使我在实践中能够更好地解决问题。
其次,在实习中,我学会了使用C语言进行程序的设计和编写。
通过实际动手编写程序,我不仅加深了对C语言的理解,还提高了我的编程能力。
在编程过程中,我学会了使用不同的函数和语句来实现不同的功能,包括输入输出、算术运算、条件判断、循环控制等。
这些功能的运用使我的程序更加完善和实用,也使我在实践中能够更好地解决问题。
在实习期间,我遇到了许多难题和困惑,但通过与同事和老师的探讨和交流,我逐渐找到了解决问题的方法和思路。
在与他们的交流中,我了解到了许多实践经验和技巧,也学到了许多新的知识和技能。
通过这次实习,我更加深入地了解了C语言的应用和发展,也提高了自己的实践能力和解决问题的能力。
最后,在实习期间,我养成了良好的编程习惯和工作态度。
在编程过程中,我注重代码的规范和格式,力求使代码易读易懂,并进行了详尽的注释。
同时,我也注重团队合作,在与同事和老师合作的过程中,我积极互助,共同解决问题。
在实践中,我学会了合理安排时间和资源,提高自己的工作效率。
通过这次C语言实习,我不仅学到了许多新的知识和技能,还提高了自己的实践能力和解决问题的能力。
在今后的学习和工作中,我将继续努力学习和应用C语言,在实践中不断提高自己的编程能力和解决问题的能力。
我相信,通过不断学习和努力,我将会在C语言编程方面取得更好的成绩。
c语言实验报告实验C 语言实验报告实验一、实验目的本次 C 语言实验的主要目的是通过实际操作和编程实践,加深对 C 语言基本语法、数据类型、控制结构、数组、指针等重要概念的理解和掌握,提高编程能力和解决实际问题的能力。
二、实验环境本次实验使用的编程环境为 Visual Studio 2019,操作系统为Windows 10。
三、实验内容1、基本数据类型和运算符的使用定义不同类型的变量,如整数型(int)、浮点型(float、double)、字符型(char)等,并进行赋值和运算操作。
熟悉各种运算符的优先级和结合性,包括算术运算符(+、、、/、%)、关系运算符(>、<、>=、<=、==、!=)、逻辑运算符(&&、||、!)、位运算符(&、|、^、~、<<、>>)等。
2、控制结构的应用使用ifelse 语句实现条件判断,根据不同的条件执行相应的代码块。
运用 switch 语句进行多分支选择,处理不同的情况。
利用 for 循环、while 循环和 dowhile 循环实现重复执行的操作,例如计算数列的和、打印特定的图案等。
3、数组和字符串的操作定义和使用一维数组、二维数组,进行数组元素的访问、赋值和遍历。
掌握字符串的存储和处理方式,使用字符数组和字符串函数(如strlen、strcpy、strcmp 等)进行字符串的操作。
4、指针的应用理解指针的概念和指针变量的定义,通过指针访问变量和数组元素。
实现指针与数组、指针与函数的结合使用,体会指针在程序中的灵活运用。
5、函数的定义和调用编写自定义函数,实现特定的功能,如计算阶乘、判断素数等。
掌握函数的参数传递方式(值传递和地址传递),理解函数的返回值。
6、结构体和共用体的使用定义结构体类型,创建结构体变量,访问结构体成员。
了解共用体的概念和使用场景,比较结构体和共用体的区别。
四、实验步骤1、实验准备打开 Visual Studio 2019 开发环境,创建一个新的 C 语言项目。
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语言课程实习课程实习一、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语言程序设计实习报告一、实习目的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. 职业素养方面:培养了耐心、细致的工作态度和勇于尝试、敢于创新的探索精神。
c语言实习报告3篇c语言实习报告1在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。
在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。
由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。
包括了程序模块处理.简单界面程序.高级界面程序.程序的添加修改.用程序做一元线性回归处理以及用c语言程序来画粒度分布图等这几样比较重要的时间操作。
上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。
对于程序设计语言的.学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。
学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。
因为学时所限,课程不能安排过多的上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。
为此,我们结合课堂讲授的内容和进度,安排了12次上机实验。
课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:1.加深对课堂讲授内容的理解课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。
然而要使用c语言这个工具解决实际问题,又必须掌握它。
通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。
对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。
学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。
c语言课程设计实习报告一、教学目标本课程的教学目标是使学生掌握C语言的基本语法、数据结构、算法和编程思想,培养学生运用C语言解决实际问题的能力。
具体分为以下三个层面:1.知识目标:学生需要掌握C语言的基本语法、关键字、数据类型、运算符、控制结构、函数、数组、指针、结构体等基本概念。
2.技能目标:学生需要能够运用C语言进行程序设计,熟练使用C语言编写和调试程序,掌握常用的调试技巧。
3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,提高学生独立思考、解决问题的能力,培养学生的团队协作精神和创新意识。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、算法和编程思想。
具体安排如下:1.C语言的基本语法:介绍C语言的基本规则,包括关键字、数据类型、运算符、控制结构等。
2.数据结构:讲解常用的数据结构,如数组、链表、栈、队列、树等。
3.算法:介绍常见的排序算法、查找算法、递归算法等。
4.编程思想:培养学生面向对象编程的思想,讲解面向对象编程的基本概念,如类、对象、封装、继承、多态等。
三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性。
具体方法如下:1.讲授法:教师讲解C语言的基本语法、数据结构、算法和编程思想,帮助学生建立知识体系。
2.案例分析法:通过分析实际案例,让学生了解C语言在实际应用中的优势和局限。
3.实验法:安排上机实验,让学生动手编写C语言程序,培养学生的编程能力。
4.讨论法:学生进行小组讨论,分享学习心得,互相促进,提高学习效果。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。
具体如下:1.教材:选用权威、实用的C语言教材,如《C程序设计语言》、《CPrimer Plus》等。
2.参考书:提供丰富的参考书籍,如《C语言入门教程》、《C语言编程实践》等。
3.多媒体资料:制作精美的PPT,提供视频教程、在线编程练习等资源,帮助学生更好地理解和掌握C语言。
c语言实验报告心得体会范文【四篇】c语言实验报告心得体会范文一在科技高速发展的今天,计算机互联网在人们之中的作用越来越突出。
而c语言作为一种计算机的语言,我们学习它,有助于我们更好的了解计算机,与计算机进行交流,因此,c语言的学习对我们尤其重要。
在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。
在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。
学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。
因为学时所限,课程不能安排过多的统一上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。
为此,我们结合课堂讲授的内容和进度,安排了12次上机实验。
课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面: 1、加深对课堂讲授内容的理解课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。
然而要使用c语言这个工具解决实际问题,又必须掌握它。
通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。
对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。
2、熟悉程序开发环境、学习计算机系统的操作方法一个c语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。
所谓";环境";就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。
通过上机实验,熟练地掌握c语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。
2020c语言实践报告范文Contract Templatec语言实践报告范文前言语料:温馨提醒,报告一般是指适用于下级向上级机关汇报工作,反映情况,答复上级机关的询问。
按性质的不同,报告可划分为:综合报告和专题报告;按行文的直接目的不同,可将报告划分为:呈报性报告和呈转性报告。
体会指的是接触一件事、一篇文章、或者其他什么东西之后,对你接触的事物产生的一些内心的想法和自己的理解本文内容如下:【下载该文档后使用Word打开】只有努力付诸实践,才有真知灼见。
下面是为大家带来的c 语言实践报告范文,希望可以帮助大家。
c语言实践报告范文1:在科技高速发展的今天,计算机互联网在人们之中的作用越来越突出。
而c语言作为一种计算机的语言,我们学习它,有助于我们更好的了解计算机,与计算机进行交流,因此,c语言的学习对我们尤其重要。
在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。
在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。
学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。
因为学时所限,课程不能安排过多的统一上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。
为此,我们结合课堂讲授的内容和进度,安排了12次上机实验。
课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:1、加深对课堂讲授内容的理解课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。
然而要使用c语言这个工具解决实际问题,又必须掌握它。
通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。
C语言实验报告C语言实验报告9篇随着个人素质的提升,报告的适用范围越来越广泛,我们在写报告的时候要注意语言要准确、简洁。
写起报告来就毫无头绪?以下是小编为大家整理的C语言实验报告,仅供参考,欢迎大家阅读。
C语言实验报告1一、实习目的1.掌握在集成环境中编辑、编译、连接和运行C程序的方法。
(1)运行TC(2)启动TC集成环境,输入一个源程序,编译并运行。
2.掌握单步执行、设置/去除断点,观察变量或表达式的值。
(3)在该程序中按CTRL+F7单步招待并在观察窗口中查看变量和表达式的值。
(4)设置/去除断点,继续调试。
1、熟练掌握if.switch分支语句的使用。
2、熟练掌握for.while.do.while循环语句的使用。
3、熟练掌握函数的定义、说明、参数传递及嵌套和递归调用方法。
4、熟练掌握一维数组、二维数组、字符数组的定义、说明和使用方法。
熟练掌握结构体和指针的综合应用链表的操作二、实习地点北京交通干部管理学院计算机系机房十三号.三、实习成果熟练掌握TC集成环境的使用方法。
认真编写实习报告和实习总结,描述实习操作和心得体会,总结在这次实习中的业务收获,作出自我评价。
熟练掌握并应用TC程序设计的各个知识点。
掌握结构体和指针的联合使用,学会链表的构造和常用操作方法,认真编写实习日志和实习体会。
并通过各种途径查找所需资料,拓宽视野,培养自学能力。
四、实习心得在短短一周的实习期间使我获取了不少新知识也巩固了许多老知识。
我体会到了老师和同学们的热心帮助,无论面对学习中多大的困难,同学们都会帮助你,老师也会帮助你,大家就像兄弟姐妹一样。
老师安排我们有具有的分工:首先,在计算机机房里同学们积极的对C语言进行巩固与实习,老师热心的讲解同学们提出的问题和实习过程中应该注意的事项和同学们的任何。
老师把我们分为几组,每一组十一个人,并且分配了具体的任务,在我们实习结束后每一组的同学都把自己组里的成果展示给大家一起分享,告诉大家编程的原理、方法等,使同学们既有动手能力,又能提高语言表达能力。
C语言程序设计模拟实习一、实习目的:本次C语言程序设计模拟实习的目的主要是为检验和巩固专业知识,与提高综合素质和能力。
并在实际操作中掌握:1、线性表的基本操作:插入、删除、查找以及线性表合并等运算在顺序存储结构和链接存储结构上的运算。
2、栈与队列的基本操作,并能对其进行简单应用。
通过以上两个模拟实习,可以将我们课堂上掌握的理论知识与处理数据的业务相结合,以检验我们掌握知识的宽度、深度及对知识的综合运用能力。
二、实习环境:Windows XP , Turbo C 2.0三、实习内容:内容一:线性表的实现。
内容二:栈与队列的实现。
四、算法分析、设计和描述:(一)线性表1、算法分析和设计。
首先建立单链表,其设计思路为:让p指向新开辟的结点,tail 指向链表中最后一个结点,把p所指向的结点链接在tail所指向的结点的后面,由语句“tail->next=p”来实现。
然后将链表中的各结点的数据依次输出。
显然,首先应知道链表的头指针head(即第一个结点元素的地址),然后设一个指针变量p,先指向第一个结点,输出p所指的结点,然后使p后移一个结点,再输出,直到链表的尾结点。
再次就是在单链表中插入数据元素,其首要问题描述为:在单链表中插入数据元素的首要问题描述为:已知p为指向单链表元素a的指针,要在单链表中的两个元素a和b之间插入一个新的元素x。
为插入数据元素x,首先要生成一个数据域为x的结点,然后将其插入到单链表中。
根据插入的逻辑定义,需要修改结点a中的指针域,令其指向x,而结点x中的指针域应指向结点b从而实现三个元素的逻辑关系变化。
设s为指向x的指针,则语句描述如下:s->next=p->next;p->next=s;在实际应用中,当在一个单链表中插入一个新元素x时,首先需要查找元素x的插入位置,然后插入。
其设计思路为:首先判断头结点是否为空,若为空,则把新结点作为头结点;否则判断是否插在第一个结点的前面。
如果插入位置在第一个结点之前,则将head赋给new->next,将new赋给head;否则,在链表中查找插入位置p,然后把新结点new连到p的后面。
最后就是在单链表中删除数据元素。
其设计思路为:首先设置两个指针*P1、*P2,用以指示删除位置。
如果p1所指的结点不是要删除的结点,且其后还有结点,则后移一个结点。
如果找到了要删除的结点,且若p1所指为第一个结点,则把第二个结点的地址赋给head,否则将下一个结点的地址赋给前一个结点的指针域。
2、算法的描述。
(1)建立单链表成绩单的每条记录便是一个数据元素,其对应的结构类型定义如下:struct student{int num; /*学号*/float score; /*成绩*/struct student *next; /*指针域*/};构造单链表如下:struct student *creat() /*此函数返回一个指向链表的头结点*/{struct student *head; /*指向student类型变量的指针head为头指针*/struct student *p,*tail; /*tail指向链表末尾元素,p指向新分配的结点*/float temp; /*临时数据变量*/head=NULL;do{p=(struct student *)malloc(sizeof(struct student));/*分配新结点*/printf(“Number Score:”);fflush(stdin); /*清除输入缓冲区*/scanf("%d %f",&p->num,&temp);if(p->num==0){free(p);break;};p->score=temp; /*取得结点数据*/p->next=NULL;if(head==NULL){head=p;tail=p;}else{tail->next=p;tail=p; /*指向尾结点*/}}while(p->num!=0);return(head);}(2)遍历单链表。
算法:void display(struct student *head){struct student *p;p=head;while(p!=NULL){printf("%4d %5.1f\n",p->num,p->score);p=p->next;}}(3)在单链表中插入数据元素下面的算法设前面所建立的链表是按学号升序排列的,今要在其中插入一新的结点,插入后链表仍然按学号升序排列。
算法如下:struct student *insert(struct student *head,struct student*new){struct student *p,*q;if(head==NULL)head=new;else{if(head->num>=new->num){new->next=head;head=new;}/*新结点插在链首*/else{p=head;while(p->num<new->num&&p->next!=NULL){q=p;p=p->next;}if(p->num>new->num){q->next=new;new->next=p;}else{p->next=new;new->next=NULL;}}}return(head);}(4)在单链表中删除数据元素算法如下:struct student *delete(struct student *head,int num)/*在头结点为head的单链表中将指定的学号为num的结点删除*/ /*算法返回新的链表的表头结点*/{struct sudent *p1,*p2; /*设置两个指针,用以指示删除位置*/if(head==NULL) prin tf(“\nList null\n”);else{p1=head;while(num!=p1->num&&p1->next!=NULL)/*p1所指的结点不是要删除的结点,且其后还有结点*/ {p2=p1;p1=p1->next;/*后移一个结点*/}if(num==p1->num)/*找到了要删除的结点*/{if(p1==head)head=p1->next;/*若p1所指为第一个结点,则把第二个结点的地址赋给head*/elsep2->next=p1->next;/*否则将下一个结点的地址赋给前一个结点的指针域*/printf(“delete:%4d\n”,num);free(p1);}elseprintf(“%4d not been found!\n”,num);}return(head);}(5)主函数的实现#define LEN sizeof(struct student)#include<alloc.h>#include<stdio.h>#include<string.h>#include<conio.h>struct student{int num;float score;struct student *next;};void main(){struct student *head,*stu;float temp;int number;clrscr();printf(“Input records:\n”);head=create();display(head);stu=(struct student *)malloc(LEN);printf(“Input the insert Number Score:”);scanf(“%d %f”,&stu->num,&temp);stu->score=temp;stu->next=NULL;head=insert(head,stu);display(head);printf(“\nInput the number to delete:”);scanf(“%4d”,&number);head=delete(head,number);display(head);getch();}(二)栈与队列1、算法的分析和设计。
(1)顺序栈的表示和实现顺序栈是利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时高指针top指示栈顶元素的当前位置。
空栈的栈顶指针值为0。
根据C语言对一维数组S[M]的定义,S数组的元素为S[0],S[1],S[2],...,S[M-1]共M个元素。
因此,M表示栈的最大容量。
由于栈顶位置是经常变动的,故设置一个简单变量top来指示栈顶位置,top称为栈顶指针。
我们约定top指向实际栈顶的下一个空位置,即新数据元素将压入的位置。
当top=0时,说明栈为空,若再有进行退栈操作,则出现下溢;当进栈操作时,top的值加1;当退栈操作时,top的值减1;当top>=M 时,若再有数据元素时栈,栈将上溢。
下面的进栈和出栈算法中,s数组用来存放栈元素,栈顶指针为top。
在进栈算法中,当栈满时,函数返回值为0,否则函数返回值为1。
另外,从顺序栈s中取出栈顶元素,若栈空,函数返回值为0,否则函数返回值为取出的元素。
(2)链队列的表示和实现一个链队列显然需要两个分别指向队头和队尾的指针f和r(分别称为头指针和尾指针)。
为了操作方便,我们可以给链队列添加一个表头结点,并令头指针f指向该结点,而尾指针则指向队尾元素。
由此,空的链队列的判决条件为头指针和尾指针均指向表头结点(即r=f)。
而在链队列上的入队和出队操作是在单链表上插入和删除操作的特殊情况,只是需要修改队尾或队首指针。
下面给出的有关链队列入队和出队的算法。
在把元素x加入链队列的算法中,函数返回值为r,从带头结点的链队列中删除队首元素并存到(*p)指向的变量中,若链队列为空,则函数返回值为空指针,否则函数返回值为r。
2、算法的描述(1)顺序栈的表示和实现下面的进栈和出栈算法中,s数组用来存放栈元素,栈顶指针为top。
在进栈算法中,当栈满时,函数返回值为0,否则函数返回值为1。
#include<stdio.h>#define M 10typedef struct stack1{int s[M];int top;}stacktype;int push(stacktype *st,int x){if(st->top==M)printf(“Overflow”);return(0);}st->s[st->top]=x;st->top++;return(1);}从顺序栈s中取出栈顶元素,若栈空,函数返回值为0,否则函数返回值为取出的元素。