C实验指导书10_第1页
C实验指导书10_第2页
C实验指导书10_第3页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C 程序设计语言实验指导书信息教研室编西南科技大学计算机科学与技术学院2006 年 8 月实验一简单的 C 语言程序1.1 实验类型:验证型实验 2 学时1.2 实验目的1、 熟悉并学习使用 C 程序编译平台 TurboC;2、拿握如何在编译平台下编辑、编译、连接和运行一个简单的C 程序;3、掌握 C 语言基础数据类型,熟悉变量定义和赋值方法;4、学会使用 C 算术运算符和算术表达式;1.3 知识点介绍1、c 程序的结构。 一个程序有多个程序单位构成,每一个程序单位作为一个文件,编译系统分别对每个 程序文件分 别编译,然后连接起来形成可执行程序。在一个程序单位中包含以卜 ?儿部分:预处理命令

2、全局声明部分 函数(有函数首部和函数体组成),一个 C 必须有一个(而口只能有一个) main ()函 数。2、C 数据类型和表达式C 有多种数据类型,数据类型隐含着该类数据的表示、存储及处理规则。C运算符丰富,使用I?分灵活。有运算符和括号将运算对象(操作数)连接起来,构 成表达式。 表达式屮混合运算式要注意运算符的优先级和结合性。此外,不同数据类型运算 时,存在类型转换(隐 式口动转换和强制转换)。3、C 程序的编写实现川 C 语言编写程序一一对源程序文件进行编译声称目标文件对目标文件连接形成可执行程序运行程序得到结果分析结果。1.4 实验内容题目 1 最简单的 C 程序按提示的操作步骤,

3、输入下血程序代码,编译连接并执行nain () prin tFCHello,this is my First c programtX n实验提按照操作步骤创建第一个应用:(1)编辑你的第一个C源程序(2)保存你的源文件(3)编译、连接得到可执行程序(4)改止源程序中的错误(5)运行你的第一个程序思考与扩展1、如果程序中大小写输入错误如 ma in写成Mai n,结果会怎样?2、编译运行通过后,本程序输出了一行字符,如果还想输出一行字符its too easy!程序代码该如何修改添加? 提示:注童使川换行控制符n题目2简单应用一求圆柱体的体积输入下面程序代码,编译运行,B); scanf( g,

4、%d ,%d,&radius,& high);,radius ,high);,B,uolui ne);ttin clude ttdefi ne PI 3.1415 main () vint radius,high; double uolume; prin tFfplease in put two nu mbers: n uolun e=PI* radius* radius * high; prin tf(radius:high:IBprintf( The volume is:实验提示是否止确,按照第一题的操作步骤文件,输入代码,编译连接,执行程序,输入测试数据分析结果 如有错误改止后再重新编译

5、连接,直到没有错误为止。测试数据运行吋输入:5 8思考与扩展1、如果运行时输入3.8 5程序的输出结果是什么,止确吗?将程序中变g radius, high改为double类型,然后输 入上面的测试数据,结果怎么样?说明原因。2、注意 输入提示和输出提示语句,尝试修改输入数出提示语句。题目 3 温度转换输入华式温度,要求输出摄式温度。公式 C=5/9* (F-32) 输入输出要有文字说明,取两位小数测试数据运行时输入 :3017实验二逻辑结构2.1 实验类型:验证型实验 2 学时2.2 实验目的1、学握 c 程序控制的基本结构:选择结构的实现2、掌握简单 c 程序的编写和调试2.3 知识点介绍

6、1 关系运算、逻辑预算,关系表达式和逻辑农达式2、选择结构:if语句,switch语句的应用。2.4实验内容题目1计算员工周工资编写一个程序,输入某雇员的每周工作吋间(以小吋计)和每小吋的工资数,计算并输 出他的工资。 若雇员周工作小时超过40小时,则超过部分按原工资的1.5倍的加班工资來 计算。若雇员每周工作小时 超过6()小时,则超过6()的部分按原工资的3倍的加班工资来 计算,而40到50小时的工资仍按照原工 资的1.5倍的加班工资来计算。1、 要求有输入提示和输出提示,如要输入雇员的工作时间和每小时的工资值时,可以提不:Please in put employees work time

7、 and wage_per_hoUM:输出时,提示:The employee s wage: ”。2、给你的程序加上注释,并注意排版格式,使得其清晰可读。实验提示1、 从本次实验开始,我们开始编写稍微复杂的程序,涉及到一些简单的算法,请务必按实验耍求 养成良好编程的习惯,再次强调:代码要写整齐,注意排板规范。给你的变量起个好名字,不要什么变量都用 a,b,c等,变量最好用英文单词或单词的缩写命名,变量名字要体现变量在程序的含义和作用。要有必要的注释!,养成这一良好的习惯很重要,请记住,“代码只被书写一次,而它被修改和阅读的次数可能是无限的2、木程序可以使用讦语句和switch语句分别实现流程图

8、分别如下:Cinworkti mcwagc ph(worktime -40)假(0)*Wagc= worktime wageph假(0)(worktime 60) count-3: else count = workti me/2()Cin workti mewage ph输入 coutwaec;If4+2=6。 计算在用户输入的非政策表达式时程序结束并提示输入错误。2、为你的程序加上注释,使得其清晰可读。3、尝试利用调试程序來修改你程序的逻辑错误。实验提示具体计算可采用 switch 语句实现 switch(operator) 判断运算符case 41result = operand 1 +

9、 operand2; cout?operand 1?op ? operand2 int main() int n;int i;int result =1;B 11printf ( Bplease enter a number 11); scanf(%d ,&n);if (n0) printffinput error);return 0;while (i要求:1、看懂代码,添加必要的注释。2、分别用 for do-while 语句改写程序。3、当程序运行时输入 2 0 ,会遇到困难,请改写程序?4、计算-1! +2! -3!- ?+20!。要求 1)分别來川从左到右相加和从右到左相加的计算顺序;

10、 2)采用所有负项和所有正项分别相加实验提示1、设 置断点调试程序。在循环体语句部分设置几个断点,单步执行,观察需循环体语句的执行流程,即循环控制变量的变化,观察执行过程中个变量的值。2、如果循环次数太大时,。你应该设置合适的循环条件,使循环次数减少,否则单步执 行完所有 的循环次数太费时间,如某个循环共 1(X)0 次,在调试时对以设置较小的循环次数10,待调试完毕再设置为 1000c思考与扩展1、计算 n !时,当程序运行时输入 2 0 ,会遇到困难,如何改写程序?2、计算? 1! +2!? 3!+2程序中使用的循环嵌套,可以用for while do-while结 构进行组合,有几种组合

11、方式?题目 2 计算生日时星期几编写一个程序,只要输入年月就能冋答那天是星期儿实验提示1、已知公元1年1月1 H是星期一2、算法提示:如果输入的是 2006年 3月 12 口,计算方法是(1) 先计算从公元0001年初(0001-1-1倒2005年末(2005-12-31)八多少天,注意其中 有闰年,闰 年是 366天,平年毘 365天。闰年的判断条件满足 (见教材例 3.8题):(year%4=0 & year% 100!=0)! !(year%400=0)(2) 然后再计算 2006年 1 月 I H 到 2006-3-12是多少天。注意同样判断本年度是否闰年 , 即二刀份 是 28 天还

12、是 29 天。(3) 上述两部分相加即从公元 0001 年初(0001-1-1)到 2006年末(2006? 3? 12)的天数, 用该天数模 7 (total%7)即得到星期数。2、用八多次循环输入数据并计算可采用 while 语句实现: 首先输入三个数据:cout? please enter year month day: cin?year? month?day; 首先输入三个数:年 月曰 while(year!= 0 & month !=0 & month != 0) 具体计算语句本次循环结朿前再次输入三个数据(年刀H),为下次循环计算做准备 cout? please enter yea

13、r month day:n cin?ycai? monlh?day;测试数据1、1 年 1 月 1H 是星期一2、2年 1 月 1 日是星期二3、用上机 H 期4、2000年 1 月 1 H 是星期六思考与扩展1、用 swiich 语句实现程序。比较 if 和 switch 语句的区别。2、 对输入日期和理性检验,例如月份不能大于 12,非闰年不得有 2月 29日,小月不 得有 4月 31实验四数组4.1 实验类型:验证型实验 2 学时4.2 实验目的1、掌握一维数组和二维数组的定义、赋值和输入输出方法 ;2、掌握字符数组和字符串的使用;4.3 知识点介绍1、 数组是有序数据的集合。特点:有序

14、,元素必须是同一个类型,用下标标识每一个元素,数组在内存中占用一块连续的存储单元。2、 数组的定义:定义时必须给出数组的大小(即数组元素的个数)。数纟II 使用时用下标 标识特定的元素,注意使用时下标不要越界。3、经常使用 char 类型的数组来处理字符和字符串。字符数组和字符串数组的区别在于字符串数组有一个结束标志 0,.4、常用的排序算法:冒泡法和选择法。4.4 实验内容题目 1 排序查找川选择法对15个学生的成绩按从人到小的顺序排序,15个学生的成绩整数川seanf输 入,如果输入的 成绩不在 0, 100Z 间,则提示“输入错误”。排序完成后,输入一个成绩 , 要求川折半查找法找出该成

15、绩是 该组中第几个元素的值(即第几名)。如果该成绩不在数组 中,则输出“尢此成绩”。 实验提示 1 、木题第 - 步首先对 15 个成绩排序,可使用冒泡法或选择法排序(冒泡排序算法见教材)。 选择法排 序算法思想:n 原数组中选择最小的一个元素,把它和位于第一个位置的元素互换位置;然后,在剩 下的 n-l 个元素 中选择最小的一个元素,并把它和第一个位置的元素交换;不断車复这些过 程,直到最后两个元素。如: 设有 10个元素 a0? a9,第一轮:将a0与al卜a9比较,若a0比al卜a9都小,则不进行交换,即无任何操 作。若al? a9中有一个以上比a0小,则将其中最小的一个(假设为ai)与

16、a0交换,此时a0中存放了 10个中的 最小数。第二轮将al与a2? a9比较,将剩下的8个数中最小者ai与al对换,此时al中 存放的是10个中 第二小的数。依此类推,共进行9轮比较,a0? a9中已按由大到小的顺序存放。2、排序完成后,这15个成绩按由大到小的顺序排列,此吋用折半查找法查找某一个成绩效率较高。折半査找法算法思想:假如有以按由小到大排好序的9个数,a0-af8,其值分别为:13 5 7 911131517若想查3是否在此数组中,可以先找出表列中居中的数,即a4,将要找的数3与a4比较,a4值是9,发现 a43,显然3应当在a0卜a4范围内,而不会在aQa8范围内。这样 就可以

17、缩小杏找范怦I,甩掉a5 ? a这一部分,即将杏找范围缩小为一半。再找 a0? a4中居中的数,即a2,将要找的数与a2比较,a(2) 的值是5,发a(2)3,显然3应当在a0卜a2范围内。这样乂将查找范围缩小了一半。再将 3与a0? a2范 围内居中的数al比较,发现 要找的数3等于al,查找结束。一 ?共比较了 3次。测试数据口己选择15数据输入。杳找某一成绩时,分别选用在 15个中的成绩和没有在15成绩 中的数据测试。思考与扩展1、将选择法排序与起泡法比较,分析它们的特点和效率。2、 如果采用顺序查找的办法,即从第一个元索开始对比一直到找到与之相等的元素,和折半查找法相 比,那个效率高?

18、3、数组名作为函数参数,形参和实参的关系?题目2矩阵相乘将两个给定的距阵(3X3)相乘得到另一个距阵并将其打印出来。提示a2。22a23El22z5C2IC2C2232Y少313332kC312C33苴中童求:1、从键盘输入两个矩阵,并输出结果矩阵。矩阵的输入输出要求行列对其2、把矩阵相承写成函数形式,在主函数中完成矩阵的输入输出。实验提示1、定义三个数组 a22, b22, c222、注意c数组的每一个元素3Cij =工吗九则应设计一个嵌套循环,一共有三个循坏变量:ijk for(i=0;iv3;i+;)for(j=0;j3;j+;) for(k=0;k3;k+;)cij += aik*bk

19、j)测试数据自己选择一组数据输入。题目3字符串连接编一程序,将两个字符串连接起来。结果取代第一个字符串。要求1、用字符数组,不用strcat函数;2、用C标准中的strcat函数;实验提示1、采川字符数组的方法。算法:定义的两个字符数组,第一个数组的大小应人于两个字符数组的有效大小。在串接时要注意字符处结束标志:如下图所示:Strlf20|口 L I 0 I VI E I 0J实验提不1、采用字符数纟II的方法。算法:定义的两个字符数纟II,第-个数纽的大小应大于两个 字符数组的有 效大小。在串接时要注意字符处结朿标志:如下图所示:Strl 20IL0VEoStr210+0串接后:strl 2

20、0TL0VEC+0串接过程:1) 首先找到第一个字符串的结束标志即末尾strl5 02) 执行 strl5+i二 stri直到 stri ! =03) 给字符串strl末尾添加02八函数原形strcat(char, con st char)使用时实参只需给出数组名,如strcat (strl,str2)使用时耍确保 strl数组不会溢出。测试数据自己选择一组数据输入思考与扩展 字符数组和字符串数组有什么联系或区别?实验五 函数5.1 实验类型:验证型实验 2 学时5.2 实验目的1、掌握函数声明、定义和使用的方法;2、掌握函数递归调用的方法;3、掌握全局变量、局部变量、静态局部变量的概念和使用

21、方法4、掌握定义头文件的方法,学会建立和调试多文件程序;5、学习函数重载的实现;3.3.3 知识点介绍1、 一个函数就是一个功能,在面向过程的结构化程序设计中,函数是程序的基本模块。2、函数的定义:类型函数名(参数表)。3、函数调用过稈:程序先执行函数调用 Z 前的语句,流程的控制转移到被调函数入口 处,同时进行参 数传递;执行被调函数种断数体的语句;流程返冋调川函数的卜 ?一条指令处 , 将函数的返冋值带冋;接着执 行主调函数中未执行的语句。4、函数的嵌套调用:被调函数中又调用另一个函数。5、函数的递归调用:一 ?个函数直接或间接的调用自在实现递归时,再时间和空间 上的开销比较大, 但递归调

22、用符合人们的思维,程序容易理解。6、变量的作用域:全局变量和局部变量 变量的生存期:动态存储期,静态存储期 变量存储位置:内存中的静态区,内存屮的动态区。寄存器存储。3.3.4 实验内容题目 1 分析程序运行结果输入下列程序,运行它,分析得到的结果n elude int n=0;int Func(int x=10);uoid main()int a 9b; a=5;b=func(a);prin tfCA nl ocal a=Ad nl ocal b=Ad n global n=%dprintfCXnlocal a=%d nlocal b=%d nglobal n=%d int Func(int

23、 x)IB ,a ,b ,n); a+ ; b=Func(a); IB,a,b,n); Func();int a=1;static int b=10;a+;b+;X + +;n+;printf(Xnlocal a=%d nlocal b=Ad nparameter x=%dBI,a,b,x); return a+b;要求:1、 阅读分析程序,给程序加上必要的注释2、 分析何以得出运行结果的原因3、区分程序中那些是全局变量、局部变量、局部静态变量?这些变量的差别是什么?4、说明函数调用时实参利形参对应关系及值传递方式?实验提示 运行时在程序中设置断点调试,观察各个变量值的变化以及函数的调用过稈。

24、1、 设置断点调试你的程序观察函数调用的执行流程。具体做法是在函数调川语句处设置断点,再在该被调函数的函数体语句部分设置断点。2、单步执行程序,观察程序的执行流程:函数调用时实参和形参的结合情况;程序从ma in函数转移到被调函数代码执行的及返冋的流程,注意观察形参变量值的变化及形参变 量的生存期。测试数据 I改变main()函数中a的值令a = 10改变func()函数中b的值令static int b=10;程序运行 结果?思考与扩展1、将函数func ()中的变量static int b=!0;改为int b,程序运行结果有什么变化。2、 如果将ma in ()函数中定义变量的语句int

25、 a, b;移到程序第三行?程序运行结果有没有变化,为什 么。题目 2 函数的递归调用和多文件结构编写一个函数,求从n个不同的数中取I?个数的所有选择的个数。其个数值为: 其中 :n! = n*(n-l)*(n-2)*.*lo1 、 基本耍求:主程序中设计一个循环,不断从输入接收 n 和的值,计算结果并输岀,当川户输入 0 0时,程序结 束; 能检査输入数据的合法性,要求 n=l 并且 n=r;2、 分别用递归和非递归两种方式完成程序设计;3、多文件结构实现将上而用非递归方式写成的程序改成用多文件结构表示。要求将 main()函数放在一个文 件中,将另外 两个函数放在另一个文件中,将函数原型说

26、明放在一个头文件中。建立一个项 目,将这三个文件加到你的项 目中,编译连接使你的程序正常运行。测试数据:输入:5 3 输入 : 10 20输入:? 1 4输入:50 3输入:0 0实验提示1、 利用一个非递归函数fn(int n)计算n!,利用另一个函数Cnr(int n, int r)计算Cnr,在 该函数中调用 fn(),问题:你打算用什么样的变量类型来存放 n! 函数返回的值?注意各种数据类型的内存 字长不同,整数 能存放的数据范围有限,你如何解决?对以用 double 数据类型来存放函数的计算结果2、利用一个递归函数实现,利用公式实现递归:C(n,r) = C(n, r-l)*(n-r

27、+ l)/r 注意递归结束条件: 如果 r = 0,则 C(n,r) = 1 如果 r= 1, 则 C(n, r) = n思考与扩展1 、 设置断点观察函数的递归调用和嵌套调用的执行流程。2、递归函数的书写要点是什么?3、在递归版木屮,当 n 人到什么值时系统将发生栈溢出报错?你觉得递归和菲递归函 数哪种好些?,4、多文件结构屮头文件的作川是什么?5、将稈序划分为多个文件有什么好处?1 、 对一种形式测试:分别在有标识符和注释掉程序中的标识符定义两种情况下编译运 行2、 对第二种形式测试:分別使衣达式的值为 0 和非 0 两种情况下编译运行。实验六 扌旨针6.1 实验类型:验证型实验 2 学时

28、6.2 实验目的1、掌握指针的概念、学会定义和使用指针变量;2、掌握引用型变量的概念、学会定义和使用引用型变量3、学习使用指针数组和指向数组的指针;4、学习使用指向字符串的指针变量;5、学习使用指针和引用给函数传递参数; ?个变最的地 字节。 通过该指针可以 函数。指针函的别名,并没有6.3 知识点介绍1、指针就是地址,一个变量的地址成为给变量的指针。指针变量就是用来专门存放另 址。若果一 ?个指针变量存放另一个变量的地址,我们就说指针变量指向该变量。2、指针变量的类型是其指向变量或常量的数据类型,指针变量木身在内存屮只占四个3、指针作为函数参数时不会改变实参指针变量的值,但可以改变实参所指向

29、变量的值4、数组名代表数组的首地址,是一个指针常量。可以用一个指针变量指向一个数组, 对数组任意操作。5函数指针:函数名代表函数函数的入口地址,可以定义指向函数的指针变量川来指向 数:函数返回值是指针(地址)。6、指针运算灵活,但容易出错。7、变杲的引用就是变量的別名。引用作形参不是传值,而是传递别名,即形参是实参 为形参分配存储单元。6.4 实验内容题目 1 程序分析输入下列程序,运行它,分析得到的结果n elude uoid swapreF(int *p1,int *p2); int main()printF( iB nBi);int iu1=888;int *pointer_1;poin

30、ter_1=&iu1;printft-iul=2drT ,iu1);printf(*pointer_1 =%dn,*pointer_1);printFCiul -AXn_1,&iu1); 一printf( ,Bpointer_1 =%dn ,B,pointer_1);printFC nB,);int iu2=666;int *pointer_2;pointer_2=&iu2;printf( ;iu2=Adn ,iu2);,iu2 - =2drT ,&iu2);一printf(*pointer_2 =%dn,*pointer_2); printf( printf( ,Bpointer_2 =%d

31、n,B,pointer_2);printF( ,B B, swap(pointer_1 ,|pointer_2); printF(iu1 一 一printF(iu2 printF(,B*pointer_1 printF(,B*pointer_2 printf(pointer_1%dn-,iu2);AdXn 1 n,B,*pointer_2);=gdn,pointer_1);printf(pointer_2 =%dn,pointer_2); return 6;uoid swap (int *p1,int *p2) int temp;temp = *p1; *p1 = *p2;*p2 = temp

32、;要求:1、给木题代码加上适当的注禅,编译调试,分析说明程序运行结果。2、 如果将 swap 函数改为如下形式,程序运行结果是什么?分析说明。void swappionter(int *pl,int*p2)int * temp;temp = pl;pl = p2;p2 = temp;3八如果将swap函数改为如下形式,主函数中函数调用改为:swap( ivl, iv2 );程序运行结果是什么?分析说明。void swap(int &pl,int &p2)int temp; temp = pl; pl = p2;p2 = temp; 实验提不 1、注意区分指针的定义 , 指针的引用。2、注意区分

33、指针的值和指针指向对象的值。 测试数据 自己修改程序中部分代码,调试运行。 思考与扩展 1 归纳说明普通变量作形参、指针作形参、引川作函数形参得区别题目 2 班级课程成绩计算一个班有 5 名学生,每个学生修了五门课, 1)求每个学生的平均成绩,并输出每个学生的学号,每门课程的成绩及平均直。 2)求某门课程的平均分;实现要求:1、分别编写 2个函数实现以上 2 个要求。2、第 1个函数用数组名作参数。第 2个函数用指针用参数,并在函数体内用指针对数 组操作。 实验提示 1、第一种方法:(1) 程序数据结构定义一个一维数组存储5学牛学号:intn um5;定义一个二维数组存储5学牛的成绩int s

34、co55,再 定义一个一维数组存储 5 个学生的平均成绩 int avsco5;(2) 函数编写求每个学生的平均成绩函数:void averscore (int sco,avsco5),函数体中算法是计 算sco5 每一行的平均值赋给avsco5的对应元素。求某门课程的平均分函数:ini avcrcoursc( ini (*psco) 5,n),形参中 ini (*sco) (5)是指向5个元素组成的一维数纽?的指针变量,n表示要查找第n门课程的成绩。如函数调用:avcrcoursc( sco, 3), sco是二维数组名,3表示要计算第3门课程的平均分。函数体中计算 psco所指向二维数组的

35、第3列的平 均值;2、第二种方法,(1) 程序数据结构 由于学号、成绩、平均成绩都是数值型数据,可以定义一个二维数组用来保存学牛的信 息学号、 5门成绩、平均成绩: intstu_info57 数组有 5行 7列,5 行对应 5 个学生, 7列分别对应学生的学号、 5 门 成绩、平均成绩。当然没有计算平均成绩之询最后一列数据Mo ;(2) 函数编写求每个学生的平均成绩函数:void averscore ( int stu_info(5)(7),函数体中算法是计算 stujnfo 每一行的第 1到 5 列元素的平均值赋给第 6列元素(第 0列是序号 )。求某门课程的平均分函数 :int aver

36、course( int (*psco) 7, n ),形参中 int (*sco) 7是 指向 7 个元素组成的一维数组的指针变量, n 表示耍杳找第 n 门课程的成绩。如函数调用: avercourse( sco, 3), sco是二维数组名,3表示要计算第3门课程的平均分。函数体中计算psco所指向二维数组的第3+1列的平均值( 第一列是学号 );测试数据自己选择一 ?组数据输入。思考与扩展1、 二维数组作为函数形参int avercourse( int (*psco) 5 , n)中为什么要指定第二维的 大小?2、在函数体中用指针操作二维数组比如: * (* (psco +i) +j)

37、就代表数组第 i 行 j 列 的元素即 pSCO i U o题目 3 排序查找 ( 选做 )用选择法对 15 个整数安从大到小的顺序排序。 15 个桀数用 scanf 输入。 排序完成后输入一个数,要求川折半查找法找出该数是数组屮第儿个元索的值。如果该 数不在数组 中,则输出“无此数”。要求:1 、把排序算法写成函数形式,用指针变量作为排序函数的参数,在排序算法中用指针法访问数组元素。2、把查找算法写成函数形式,川指针变量作为查找函数的参数,在查找算法屮川指针法访问数组元索。实验提示排序算法和折半查找法见实验 4。测试数据白己选择一组数据输入。思考与扩展1 、 在调用函数时实参为什么只需给出数

38、组名 ?2、 指针函数和函数指针有什么区别?实验七结构体7.1 实验类型:验证型实验 2 学时7.2 实验目的1 、 掌握结构体变量的定义和使用;2、掌握结构体数纟I 的定义和使用;3、了解链表的概念,学习使用指针构造和操作简 m链表;4、了解堆内存分配技术;7.3知识点介绍1、 C提供了丰富的基本数据类型,为了解决复杂的实际问题,C允许用户自定义数据 类型:结构体类 型、共川体类型、枚举类型2、 结构体类型:包含若T个不同数据类型的数据项。结构体类型定义(规定)了一组 数据项的信息组 织结构,相当于一个模型,系统并没有为其分配存储单元,只有在定义了结构体变量吋,系统才按照该结构 类型的数据项

39、的信息组织结构分配相应的存储单元。3、 结构体变量可以向其他数据类型一?样使用。可以定义结构体类型数组,可以定义结构类型指针,也 可以定义结构体类型的引用。4八malloc和free:动态分配和撤销内存。malloc出来的内存空可必须用一个指针来向 它,使用完成 Z后必须用free撤销掉,否则会造成内存泄厳。5、共用体类型:不同的儿个数据项占用同一块内存。使用共用体变量的目的是希望同一段内存存放几种不同类型的数据,但每一瞬间只能存放一种,而不是同时存放。7.4实验内容题目1日期计算定义一个结构体变量(包括年、月、H),编程序,要求输入年月H,程序能计算并输 出该日在木年中第儿天。注意闰年问题。

40、实验提示算法提示见第三次实验计算生口时星期儿测试数据1、1年1月1日是星期一2、2年1月1日是星期二3、用上机日期5、2000年1月1日是星期六。思考与扩展1、 修改程序,在程序中用指针方法访问结构体变量的成员。2、 结构体变量占用的存储单元字节数是多少,能不能川 sizeof ()求结构体变量字节题目 2 学生成绩管理有 5 个学生,每个学生的数据包插学号、班级、姓名、三门课成绩。从键盘输入 5 个学 牛数据,要求 打卬出每个学牛三门课的平均成绩,以及平均分最高分学牛数据 ( 包括学号、 班级、姓名、三门课成绩,平 均分)。耍求:1、 定义学牛结构体。2、 用一个函数实现 5 个学生数据的输

41、入,用另一个函数负责求每个学生三门课程的平均成绩,再用一个函数求出平均分最高的学牛并输出该学牛的数据。要求平均分和平均分最 高的学生数据都在主函数种输 出。3、用多文件程序结构实现。实验提不1、结构体定义num;学号charname20J;班级注意字节长度charclassname班级float20 ; score三门课程成绩float3;平均分2、 数据组织提示:aver_score;在主函数中定义一个结构体数组。Student stu20 定义有 20个变量的兀素的结构体数组 ( 根据需要确定数组的大小 )3、结构体数组使用(I) 循环输入学生信息: int stu_number = 0 ;学主个数printf ( Hplease enter student numbeHr:);for( int i = 0; i=stu_number; i+) H ncout? please enter NO. ? i ? student info : num name class scor

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论