132实验十三数组指针和函数综合编程练习参考答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数组、指针和函数综合编程练习:打印最高分和学号假设每班人数最多不超过40人,具体人数由键盘输入,试编程打印最高分及其学号。程序1用一维数组和指针变量作为函数参数,编程打印某班一门课成绩的最高分及其学号。/*以一维数组的数组名作函数参数,实参、形参均为数组以指针变量作函数形参,通过该指针变量间接访问主调函数中的变量,并修改其值*/#includestdio.h#defineARR_SIZE40intFindMax(intscore[],longnum[],intn,long*pMaxNum);voidmain(){intscore[ARR_SIZE],maxScore,n,i;longnum[ARR_SIZE],maxNum;printf(Pleaseentertotalnumber:);scanf(%d,&n);/*从键盘输入学生人数n*/printf(Pleaseenterthenumberandscore:\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,指向最高分学生的学号函数返回值:最高分*/intFindMax(intscore[],longnum[],intn,long*pMaxNum){inti;intmaxScore;maxScore=score[0];*pMaxNum=num[0];/*假设score[0]为最高分*/以一维数组的数组名作函数参数,实参、形参均为数组以一维数组的数组名作函数参数,实参、形参均为数组for(i=1;in;i++){if(score[i]maxScore){maxScore=score[i];/*记录最高分*/*pMaxNum=num[i];/*记录最高分学生的学号num[i]*/}}return(maxScore);/*返回最高分maxScore*/}程序2用二维数组和指针变量作为函数参数,编程打印3个班学生(假设每班4个学生)的某门课成绩的最高分,并指出具有该最高分成绩的学生是第几个班的第几个学生。/*以二维数组的数组名作函数参数,实参、形参均为数组以指针变量作函数形参,通过该指针变量间接访问主调函数中的变量,并修改其值*/#includestdio.h#defineCLASS3#defineSTU4intFindMax(intscore[][STU],intm,int*pRow,int*pCol);voidmain(){intscore[CLASS][STU],i,j,maxScore,row,col;printf(Pleaseenterscore:\n);for(i=0;iCLASS;i++){for(j=0;jSTU;j++){scanf(%d,&score[i][j]);/*输入学生成绩*/}}/*计算最高分及其学生所在班号和学号*/maxScore=FindMax(score,CLASS,&row,&col);printf(maxScore=%d,class=%d,number=%d\n,maxScore,row+1,col+1);}/*函数功能:计算任意m行STU列二维数组中元素的最大值,并指出其所在行列下标值函数入口参数:二维整型数组score,存放学生成绩整型变量m,二维整型数组的行数,代表班级数函数出口参数:整型指针变量pRow,指向数组元素最大值所在的行整型指针变量pCol,指向数组元素最大值所在的列函数返回值:数组元素的最大值*/intFindMax(intscore[][STU],intm,int*pRow,int*pCol){inti,j,maxScore;maxScore=score[0][0];/*置初值,假设第一个元素值最大*/*pRow=0;*pCol=0;for(i=0;im;i++){for(j=0;jSTU;j++){if(score[i][j]maxScore){maxScore=score[i][j];/*记录当前最大值*/*pRow=i;/*记录行下标*/*pCol=j;/*记录列下标*/}/*if结束*/}/*内层for结束*/}/*外层for结束*/return(maxScore);/*返回最大值*/}程序3用指向二维数组第0行第0列元素的指针作为函数参数,编写一个计算m行n列二维数组中元素的最大值,并指出其所在的行列下标值的函数,利用该函数计算3个班学生(假设每班4个学生)的某门课成绩的最高分,并指出具有该最高分成绩的学生是第几个班的第几个学生。/*以指向二维数组的数组元素的指针变量作函数参数,实参、形参均为指针以指针变量作函数形参,通过该指针变量间接访问主调函数中的变量,并修改其值*/#includestdio.h#defineCLASS3#defineSTU4intFindMax(int*p,intm,intn,int*pRow,int*pCol);voidmain(){intscore[CLASS][STU],i,j,maxScore,row,col;printf(Pleaseenterscore:\n);for(i=0;iCLASS;i++){for(j=0;jSTU;j++){scanf(%d,&score[i][j]);/*输入学生成绩*/}}/*计算最高分及其学生所在班号和学号*/maxScore=FindMax(*score,CLASS,STU,&row,&col);printf(maxScore=%d,class=%d,number=%d\n,maxScore,row+1,col+1);}/*函数功能:计算任意m行n列的二维数组中元素的最大值,并指出其所在的行列下标值函数入口参数:整型指针变量p,指向一个二维整型数组的第0行第0列整型变量m,二维整型数组的行数整型变量n,二维整型数组的列数函数出口参数:整型指针变量pRow,指向数组元素最大值所在的行整型指针变量pCol,指向数组元素最大值所在的列函数返回值:数组元素的最大值*/intFindMax(int*p,intm,intn,int*pRow,int*pCol){inti,j,maxScore;maxScore=p[0];/*置初值,假设第一个元素值最大*/*pRow=0;*pCol=0;for(i=0;im;i++){for(j=0;jn;j++){if(p[i*n+j]maxScore)/*用*(*(p+i)+j)可以吗?不行,为什么?*/{maxScore=p[i*n+j];/*记录当前最大值*/*pRow=i;/*记录行下标*/*pCol=j;/*记录列下标*/以指向二维数组的数组元素的指针变量作函数参数,实参、形参均为指针以指向二维数组的数组元素的指针变量作函数参数,实参、形参均为指针}/*if结束*/}/*内层for结束*/}/*外层for结束*/return(maxScore);/*返回最大值*/}

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功