第三讲 函数理论题2.docx
- 文档编号:4872372
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:16
- 大小:20.32KB
第三讲 函数理论题2.docx
《第三讲 函数理论题2.docx》由会员分享,可在线阅读,更多相关《第三讲 函数理论题2.docx(16页珍藏版)》请在冰豆网上搜索。
第三讲函数理论题2
第三讲函数(理论题)
1)P20
连续输入一批学生的成绩,直到输入成绩的数量超过50个或者输入的成绩不是有效成绩(有效成绩为0~100),将输入的有效成绩存入数组mark中,在数组中查找并输出最高分。
函数getmax(array,n)在有n个元素的一维数组array中找出并返回最大值。
运行示例:
Entermarks:
90807765-1
Max=90
【程序】
#include
#defineMAXNUM50
intgetmax((5))
{intk,max;
(6)
for(k=1;k if(max returnmax;} voidmain() {intk,x; intmark[MAXNUM]; printf("Entermarks: "); k=0; scanf("%d",&x); while((7)){ mark[k++]=x; scanf("%d",&x);} if(k>0) printf("Max=%d\n",getmax((8))); elseprintf("Nomarks! \n");} 【供选择的答案】 (5)A、intn;intarray[]B、void C、int*arrayD、intarray[],intn (6)A、max=0;B、; C、max=array[0];D、max=array[n]; (7)A、k B、k C、k>MAXNUM&&x>=0||x<=100 D、k>MAXNUM||x>=0||x<=100 (8)A、mark,kB、mark C、mark[]D、mark,n #include #defineMAXNUM50 intgetmax((5)) {intk,max; (6) for(k=1;k if(max returnmax;} voidmain() {intk,x; intmark[MAXNUM]; printf("Entermarks: "); k=0; scanf("%d",&x); while((7)){/*这个循环输入数组的全部元素*/ mark[k++]=x; scanf("%d",&x);} if(k>0)/*表示输入的数组元素不为空,就是有元素合格,否则可能全部输入元素都不合格*/ printf("Max=%d\n",getmax((8))); elseprintf("Nomarks! \n");} 【供选择的答案】 (5)A、intn;intarray[]B、void C、int*arrayD、intarray[],intn 这个题中(5)和(8)要对比来看。 根据题目中的“函数getmax(array,n)”推断此处的答案是D,注意函数调用的顺序。 (6)A、max=0;B、; C、max=array[0];D、max=array[n]; 给max赋初值,为第一个元素,然后与后面的比较。 (7)A、k B、k C、k>MAXNUM&&x>=0||x<=100 D、k>MAXNUM||x>=0||x<=100 注意: 题目中给出的条件: 输入成绩的数量超过50个或者输入的成绩不是有效成绩(有效成绩为0~100) 这是循环结束的条件,而要循环进行的条件是B 这里注意: #defineMAXNUM50 (8)A、mark,kB、mark C、mark[]D、mark,n Mark是处理以后的数组,根据题目中的“函数getmax(array,n)”推断此处的答案是A(n是形式参数,k是实际参数,所以选A) 2)P29 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】 #include main() {inti,j,temp; inta[3][3]={1,2,3,4,5,6,7,8,9};/*第3行*/ voidf(int*x,int*y); for(i=0;i<3;i++) for(j=0;j<3;j++) if(i for(i=0;i<3;i++) for(j=0;j<3;j++) printf("%2d",a[i][j]);} voidf(int*x,int*y) {intt; t=*x;*x=*y;*y=t;} (17)程序的输出是(17)。 A、321654987B、789456123 C、123456789D、147258369 (18)将第8行改为“f(&a[i][j],&a[j][i]);”后,程序的输出是(18)。 A、321654987B、789456123 C、123456789D、147258369 (19)将第8行改为“if(i<2)f(&a[i][j],&a[2-i][j]);”后,程序的输出是(19)。 A、321654987B、789456123 C、123456789D、147258369 (20)将第8行改为“if(j<2)f(&a[i][j],&a[i][2-j]);”后,程序的输出是(20)。 A、321654987B、789456123 C、123456789D、147258369 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】 #include main() {inti,j,temp; inta[3][3]={1,2,3,4,5,6,7,8,9};/*第3行*/ voidf(int*x,int*y); for(i=0;i<3;i++) for(j=0;j<3;j++) if(i for(i=0;i<3;i++) for(j=0;j<3;j++) printf("%2d",a[i][j]);} voidf(int*x,int*y) {intt; t=*x;*x=*y;*y=t;} 说明,函数f实现变量的交换。 /*第3行*/定义的数组是 1,2,3 4,5,6 7,8,9 (17)程序的输出是(17)。 A、321654987B、789456123 C、123456789D、147258369 /*第8行*/实现数组对角线左下与右上元素的交换。 数组变为: 1,4,7 2,5,8 3,6,9 (18)将第8行改为“f(&a[i][j],&a[j][i]);”后,程序的输出是(18)。 A、321654987B、789456123 C、123456789D、147258369 两次交换,又复原了! 所以数组没有变化。 (19)将第8行改为“if(i<2)f(&a[i][j],&a[2-i][j]);”后,程序的输出是(19)。 A、321654987B、789456123 C、123456789D、147258369 数组变为: 7,8,9 4,5,6 1,2,3 (20)将第8行改为“if(j<2)f(&a[i][j],&a[i][2-j]);”后,程序的输出是(20)。 A、321654987B、789456123 C、123456789D、147258369 3)P30 #include main() {inti,x1,x2; inta[5]={1,2,3,4,5}; voidf1(intx,inty),f2(int*x,int*y); x1=x2=0; for(i=1;i<5;i++){/*语句7*/ if(a[i]>a[x1]) x1=i;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三讲 函数理论题2 第三 函数 理论
![提示](https://static.bdocx.com/images/bang_tan.gif)