西南科技大学计算机学院C程序设计实验指导书
[思考与扩展]
1、设置断点观察函数的递归调用和嵌套调用的执行流程。 2、递归函数的书写要点是什么?
3、在递归版本中,当n大到什么值时系统将发生栈溢出报错?你觉得递归和非递归函数哪种好些?,
4、多文件结构中头文件的作用是什么? 5、将程序划分为多个文件有什么好处?
1、对一种形式测试:分别在有标识符和注释掉程序中的标识符定义两种情况下编译运行。
2、对第二种形式测试:分别使表达式的值为0和非0两种情况下编译运行。 .
实验六 指针
6.1 实验类型:验证型实验 2学时 6.2 实验目的
1、掌握指针的概念、学会定义和使用指针变量;
2、掌握引用型变量的概念、学会定义和使用引用型变量; 3、学习使用指针数组和指向数组的指针; 4、学习使用指向字符串的指针变量; 5、学习使用指针和引用给函数传递参数;
6.3 知识点介绍
1、指针就是地址,一个变量的地址成为给变量的指针。指针变量就是用来专门存放另一个变量的地址。若果一个指针变量存放另一个变量的地址,我们就说指针变量指向该变量。
2、指针变量的类型是其指向变量或常量的数据类型,指针变量本身在内存中只占四个字节。
3、指针作为函数参数时不会改变实参指针变量的值,但可以改变实参所指向变量的值。 4、数组名代表数组的首地址,是一个指针常量。可以用一个指针变量指向一个数组,通过该指针可以对数组任意操作。
5 函数指针:函数名代表函数函数的入口地址,可以定义指向函数的指针变量用来指向函数。指针函数:函数返回值是指针(地址)。
6、 指针运算灵活,但容易出错。
7、变量的引用就是变量的别名。引用作形参不是传值,而是传递别名,即形参是实参的别名,并没有为形参分配存储单元。
16
西南科技大学计算机学院C程序设计实验指导书
6.4 实验内容 题目1 程序分析
输入下列程序,运行它,分析得到的结果。
要求:
1、给本题代码加上适当的注释,编译调试,分析说明程序运行结果。 2、如果将swap函数改为如下形式,程序运行结果是什么?分析说明。 void swappionter(int *p1,int *p2)
17
西南科技大学计算机学院C程序设计实验指导书
{ int * temp; temp = p1; p1 = p2; p2 = temp; }
3、如果将swap函数改为如下形式,主函数中函数调用改为:swap( iv1, iv2 ); 程序运行结果是什么?分析说明。 void swap(int &p1,int &p2) { int temp; temp = p1; p1 = p2; p2 = temp; } [实验提示]
1、 注意区分指针的定义,指针的引用。 2、 注意区分指针的值和指针指向对象的值。 [测试数据]
自己修改程序中部分代码,调试运行。 [思考与扩展]
1 归纳说明普通变量作形参、指针作形参、引用作函数形参得区别。
题目2 班级课程成绩计算
一个班有5名学生,每个学生修了五门课,1)求每个学生的平均成绩,并输出每个学生的学号,每门课程的成绩及平均直。2)求某门课程的平均分;
实现要求:
1、分别编写2个函数实现以上2个要求。
2、第1个函数用数组名作参数。第2个函数用指针用参数,并在函数体内用指针对数组操作。 [实验提示]
1、第一种方法: (1)程序数据结构
定义一个一维数组存储5学生学号:int num[5];定义一个二维数组存储5学生的成绩int sco[5][5],再定义一个一维数组存储5个学生的平均成绩int avsco[5];
(2)函数编写
求每个学生的平均成绩函数:void averscore ( int sco[][5] ,avsco[5] ),函数体中算法是计算sco[][5]每一行的平均值赋给avsco[5]的对应元素。
求某门课程的平均分函数:int avercourse( int(*psco)[5], n ) ,形参中int(*sco)[5]
18
西南科技大学计算机学院C程序设计实验指导书
是指向5个元素组成的一维数组的指针变量,n表示要查找第n门课程的成绩。如函数调用:avercourse( sco, 3),sco是二维数组名,3表示要计算第3门课程的平均分。函数体中计算psco所指向二维数组的第3列的平均值;
2、第二种方法, (1)程序数据结构
由于学号、成绩、平均成绩都是数值型数据,可以定义一个二维数组用来保存学生的信息——学号、5门成绩、平均成绩:int stu_info[5][7] 数组有5行7列,5行对应5个学生,7列分别对应学生的学号、5门成绩、平均成绩。当然没有计算平均成绩之前最后一列数据是0;
(2)函数编写
求每个学生的平均成绩函数:void averscore ( int stu_info[5][7] ),函数体中算法是计算stu_info[5][7]]每一行的第1到5列元素的平均值赋给第6列元素(第0列是序号)。
求某门课程的平均分函数:int avercourse( 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)就代表数组第i行j列的元素即psco[i][j]。
题目3 排序查找(选做)
用选择法对15个整数安从大到小的顺序排序。15个整数用scanf 输入。 排序完成后输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。
要求:
1、把排序算法写成函数形式,用指针变量作为排序函数的参数,在排序算法中用指针法访问数组元素。
2、把查找算法写成函数形式,用指针变量作为查找函数的参数,在查找算法中用指针法访问数组元素。 [实验提示]
排序算法和折半查找法见实验4。
19
西南科技大学计算机学院C程序设计实验指导书
[测试数据]
自己选择一组数据输入。 [思考与扩展]
1、在调用函数时实参为什么只需给出数组名? 2、指针函数和函数指针有什么区别?
实验七 结构体
7.1 实验类型:验证型实验 2学时 7.2 实验目的
1、掌握结构体变量的定义和使用; 2、掌握结构体数组的定义和使用;
3、了解链表的概念,学习使用指针构造和操作简单链表; 4、了解堆内存分配技术;
7.3 知识点介绍
1、C提供了丰富的基本数据类型,为了解决复杂的实际问题,C允许用户自定义数据类型:结构体类型、共用体类型、枚举类型
2、结构体类型:包含若干个不同数据类型的数据项。结构体类型定义(规定)了一组数据项的信息组织结构,相当于一个模型,系统并没有为其分配存储单元,只有在定义了结构体变量时,系统才按照该结构类型的数据项的信息组织结构分配相应的存储单元。
3、结构体变量可以向其他数据类型一样使用。可以定义结构体类型数组,可以定义结构类型指针,也可以定义结构体类型的引用。
4、malloc和free:动态分配和撤销内存。malloc出来的内存空间必须用一个指针来向它,使用完成之后必须用free撤销掉,否则会造成内存泄露。
5、共用体类型:不同的几个数据项占用同一块内存。使用共用体变量的目的是希望同一段内存存放几种不同类型的数据,但每一瞬间只能存放一种,而不是同时存放。
7.4 实验内容 题目1 日期计算
定义一个结构体变量(包括年、月、日),编程序,要求输入年月日,程序能计算并输出该日在本年中第几天。注意闰年问题。
20
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新人文社科C实验指导书2[1].0 (4)全文阅读和word下载服务。
相关推荐: