(3)实验实例

更新于 2026年10月10日 版权声明
(3)实验实例

1)编写程序,实现2 个数值的交换,要求必须用指针和自定义函数来实现。

【程序分析】

①输入2 个数值、函数调用和结果输出等功能留在main 函数中。

②一般一个自定义函数只能返回一个数据结果,如果一个函数要求返回的数据结果有2个或者2 个以上,就可以使用指针的方式来实现。因为指针的作用之一:已知某数据在内存中的地址,即可以实现利用指针实现对该数据的间接访问。

【参考程序】

图示

图示

【运行结果】如图10-1所示。

图示

图10-1 程序运行结果

2)输入一个寝室6 位同学的身高,从低到高排序输出。要求:必须用指针的方式实现,其中排序功能必须要书写为自定义函数。

【程序分析】

①此题把数组定义、输入、函数调用和输出放在main 函数中。

②一位数组与指针的关系是已知数组首元素的首地址,从而可以开始依次访问该数组中的每个数组元素。例如:每个数组元素的地址是&a[0]、&a[1]、&a[1]……。因为数组元素在内存中是连续存储,所以上述每个数组元素的地址等价于&a[0]、&a[0] +1、&a[1] +2……。数组元素的值是*(&a[0])、*(&a[0] +1)、*(&a[1] +2)……。

③然后利用一个指针变量p 来存储&a[0],则数组元素的值是*(p +0)、*(p +1)、*(p+2)……。

【参考程序】

图示

图示

图示

图示

图示

【运行结果】如图10-2所示。

图示

图10-2 程序运行结果

3)输入3 行4 列矩阵a 的所有值,求得并输出其对应的转置矩阵。

【程序分析】(https://www.daowen.com)

①因为矩阵数据呈现的是二维,所以此题将使用二位数组来解决问题。

②将输入功能、函数调用、输出功能在main 函数中实现。

③所谓转置就是数据的行列互换。

④二维数组中指针的关系是:*(a + i) + j 等价&a[i][j],也就是a[i][j]的地址。*(*(a+i) +j)等价a[i][j],也就是a[i][j]的值。

⑤因为二维数组的数组名也就是a 等价&a[0],所以数组名a 亦是地址也就是指针,但是它指向的是整个首行,也就是指向一个长度为4 的一位数组,因此此题要用指向数组的指针来实现。例如:int (*p)[4]; 此定义的含义是定义了一个p 指针变量,它指向的是一个长度为4 的一维数组。

【参考程序】

图示

图示

【运行结果】如图10-3所示。

图示

图10-3 程序运行结果

4)输入一段英文,统计其中英文字符、数字字符、空格字符和其他字符等四大类字符的个数。

【程序分析】

①首先需要一个一维字符数组来存储一段英文。

②将输入功能、函数调用、输出功能在main 函数中实现。

③字符数组与指针的关系是:如有代码char str[1000]; 则有str +i 等价于&str[i],也就是str 数组中第i 个数组元素的地址。则有*(str+i)等价于str[i],也就是str 数组中第i 个数组元素的值。

④因为输入的英文长度不确定,也可以使用malloc 函数实现程序中所需的存储空间立即划分。

【参考程序】

图示

图示

图示

图示

【运行结果】如图10-4所示。

图示

图10-4 程序运行结果

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)