实验五 数组
选做题
1.找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。(习题7.8) 应当至少准备两组测试数据: ①二维数组有鞍点
9 80 205 40 90 -60 96 1 210 -3 101 89 ②二维数组没有鞍点 9 80 205 40 90 -60 196 1 210 -3 101 89 45 54 156 7 用scanf函数从键盘输入数组各元素的值,检查结果是否正确。题目并未指定二维数组的行数和列数,程序应能处理任意行数和列数的数组。因此,从理论上来说,应当准备许多种不同行数和列数的数组数据,但这样的工作量太大,一般来说不需要这样做,只需准备典型的数据即可。 如果已指定了数组的行数和列数,可以在程序中对数组元素赋初值,而不必用scanf()函数。请同学们修改程序以实现之。 2.学生成绩排名
(1)定义一个数组a[11],用以存放学生的成绩; (2)从键盘输入10个学生成绩;
(3)采用冒泡法,将学生成绩按照从高到低进行排序;
(4)再输入一个学生的成绩,将此成绩按照排序规律插入原学生成绩数组;
(5)将排好序的成绩单进行反序存放,即原来是从高到低,现在改为从低到高排列; (6)将以上每一步骤的结果均打印输出,验证程序是否正确实现题目要求
知识点描述及编程体会
实验成绩 签名
年 月 日
35
实验六 函数
实验六 函数(4学时)
目的要求
(1)掌握定义函数的方法;
(2)掌握函数实参与形参的对应关系以及“值传递”的方式; (3)掌握函数的嵌套调用方法;
(4)掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。 (5)学习对多文件程序的编译和运行。
上机内容
一般示例
【例1】上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。
#include
int,y;
printf(―%d\\n‖,sum(x+y)); int sum(a,b) { int a,b; return(a+b); } }
【例2】写一个判断素数的函数,在主函数中输入一个整数,输出是否素数的信息。 源程序如下: #include
实验六 函数
【提示】判断素数的算法,我们在以前学习循环的时候已经学过了,在这里只是把这个算法用函数的形式表示出来。这里我们要注意函数的定义、声明的方法和格式。 【例3】写一函数,是给定的一个二维数组(N×N)转置,即行列互换。请你总结数组作为函数参数时的用法。 源程序如下: #include
void convert(int arr[N][N]); void main() { int i,j; int array[N][N]; printf(\输入数组元素:\\n\ for (i=0;i 数组作为函数参数用法总结: void convert( ) { } 37 实验六 函数 【例4】写两个函数,分别求两个正数的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果。两个正数由键盘输入。 源程序如下: #include 你能不能用全局变量的方法,分别用两个函数求最大公约数和最小公倍数?请将程序写在下面。 38