实验八数组、指针和函数综合编程练习.doc
文本预览下载声明
实验八 数组、指针和函数综合编程练习
打印最高分和学号
假设每班人数最多不超过40人,具体人数由键盘输入,试编程打印最高分及其学号。
程序1:用一维数组和指针变量作函数参数,编程打印某班一门课成绩的最高分和学号。
程序2:用二维数组和指针变量作函数参数,编程打印3个班学生(假设每班4个学生)的某门课成绩的最高分,并指出具有该最高分成绩的学生是第几个班的第几个学生。
程序3:用指向二维数组第0行第0列元素的指针作函数参数,编写一个能计算任意m行n列的二维数组中的最大值,并指出其所在的行列下标值的函数,利用该函数计算3个班学生(假设每班4个学生)的某门课成绩的最高分,并指出具有该最高分成绩的学生是第几个班的第几个学生。
程序4:编写一个能计算任意m行n列的二维数组中的最大值,并指出其所在的行列下标值的函数,利用该函数和动态内存分配方法,计算任意m个班、每班n个学生的某门课成绩的最高分,并指出具有该最高分成绩的学生是第几个班的第几个学生。
初学者通常都会对指针望而生畏,其实只要从原理上掌握了指针的概念,它就会变得如此简单而易用。首先,指针不过是C语言提供的一种比较特殊的数据类型而已,定义为指针类型的变量与其它类型的变量相比,主要差别在于指针变量的值是一个内存地址。其次,在C语言中,指针和数组之间有着密不可分的关系,不带下标的数组名就是一个指针,它代表数组元素的首地址,只要让声明为相同基类型的指针变量指向数组元素的首地址,那么对数组元素的引用,既可以用下标法,也可以用指针法,用指针法存取数组比用数组下标存取数组速度快一些。反之,任何指针变量也可以取下标,可以像对待数组一样来使用。虽然多维数组的地址概念稍微麻烦些,但只要知道它的元素在内存中是如何存放的,使用也就不难了,由于C语言中的多维数组都是按列存放的,因此,用指针法引用时,必须知道数组的一行有多长(即列的维数)。在某种意义上,二维数组类似于一个由指向行数组的指针构成的一维指针数组。多于二维的数组可以通过类似方法进行降维处理。
指针的一个重要应用是用指针作函数参数,为函数提供修改调用变元的手段。当指针作函数参数使用时,需要将函数外的某个变量的地址传给函数相应的指针变元,这时,函数内的代码可以通过指针变元改变函数外的这个变量的值。
指针的另一个重要应用是动态内存分配函数,使得定义动态数组成为可能。二维数组指针作函数参数指向二维数组列指针作函数参数实验八 数组、指针和函数综合编程练习
程序1:
#include stdio.h
#define ARR_SIZE 40
int FindMax(int score[], long num[], int n, long *pMaxNum);
main()
{
int score[ARR_SIZE], maxScore, n, i;
long num[ARR_SIZE], maxNum;
printf(Please enter total number:);
scanf(%d, n); /*从键盘输入学生人数n*/ printf(Please enter the number and score:\n);
for(i=0; in; i++) /*分别以长整型和整型格式输入学生的学号和成绩*/
{
scanf(%ld%d, num[i], score[i]);
}
maxScore = FindMax(score, num, n, maxNum); /*计算最高分及其学号*/
printf(maxScore = %d, maxNum = %ld\n, maxScore, maxNum);
}
/* 函数功能:计算最高分及最高分学生的学号
函数参数:整型数组score,存储学生的成绩
长整型数组num,存储学生的学号
长整型指针变量pMaxNum,存储求出来的最高分学生的学号
函数返回值:最高分
*/
int FindMax(int score[], long num[], int n, long *pMaxNum)
{
int i;
int maxScore;
maxScore = score[0];
*pMaxNum = num[0]; /*假设score[0]为最高分*/
for (i=1; in; i++)
if (score[i] maxScore)
{ maxScore = score[i]; /*记录最高分*/
*pMaxNum
显示全部