[计算机类试卷]国家二级C语言机试(函数和数组)模拟试卷4及答案与解析.doc
《[计算机类试卷]国家二级C语言机试(函数和数组)模拟试卷4及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级C语言机试(函数和数组)模拟试卷4及答案与解析.doc(27页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C语言机试(函数和数组)模拟试卷 4及答案与解析 一、选择题 1 若各选项中所用变量已正确定义,函数 fun中通过 return语句返回一个函数值,以下选项中错误的程序是 ( A) main( )x=fun(2 , 10); floatfun(inta , intb) ( B) floatfun(inta, intb)main( )x=fun(i , j); ) ( C) floatfun(int, int); main( )x : fun(2, 10); )float fun(inta,intb) ( D) main( )floatfun(inti, intj); x=fun(i
2、, j); )floatfun(inta , intb) 2 有以下程序 #include string-h main( ) charp20: a, b, C, d), q=abc, r=abcde; strcat(p, r); strcpy(p+strlen(q), q); printf( dn, strlen(p); 程序运行后的输出结果是 ( A) 9 ( B) 11 ( C) 6 ( D) 7 3 若有以下定义和语句 charsl10=abcd!, *s2=n123; printf( d dn, strlen(s1), strlen(s2); 则输出结果是 ( A) 105 ( B)
3、107 ( C) 55 ( D) 58 4 以下关于 retum语句的叙述中正确的是 ( A)一个自定义函数中必须有一条 return语句 ( B)一个自定义函数中可以根据不同情况设置多条 return语句 ( C)定 义成 yoid类型的函数中可以有带返回值的 return语句 ( D)没有 retum语句的自定义函数在执行结束时不能返回到调用处 5 以下叙述中错误的是 ( A)函数调用可以作为一个独立的语句存在 ( B)函数形参的值也可以传回给对应的实参 ( C)若函数有返回值,必须通过 return语句返回 ( D) C程序必须由一个或一个以上的函数组成 6 以下叙述中正确的是 ( A)
4、函数调用时,不必区分函数名称的大小写 ( B)调用函数时,函数名必须与被调用的函数名完全一致 ( C)函数名允许用数字开头 ( D)在 函数体中只能出现一次 return语句 7 以下选项中叙述错误的是 ( A)在 C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内 ( B) C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值 ( C) C程序函数中定义的自动变量,系统不自动赋确定的初值 ( D) C程序函数的形参不可以说明为 static型变量 8 有以下程序 #include stdio h intfun(intx, inty) iflx=y)retum(
5、x); elseretum(x+y)/2); main( ) inta=4, b=5, c=6; printf( dm, fun(2*a, fun(b, c); 程序运行后的输出结果是 ( A) 3 ( B) 6 ( C) 8 ( D) 12 9 若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是 ( A)形参只是形式上的存在,不占用具体存储单元 ( B)函数的形参和实参分别占用不同的存储单元 ( C)同名的实参和形参占同一存储单元 ( D)函数的实参和其对应的形参共占同一存储单元 10 若有以下程序 yoidflintx) if(x =10) printf( d-, x 10
6、); fix/10); ) elseprintf1 d, x); ) main( ) intZ=123456; f(z); ) 则程序的输出结果是 ( A) 6-5-4-3-2-1 ( B) 6-5-4-3-2-1- ( C) 1-2-3-4-5-6 ( D) 1-2-3-4-5-6 11 有以下程序 #include stdio h intfun(intn) inta; if(n=1)return1; a=n+fun(n-1); return(a); ) main( ) pfintf( dn, fun(5); 程序的输出结果是 ( A) 14 ( B) 10 ( C) 15 ( D) 9 1
7、2 设有如下函数定义 intfun(intk) if(k 1)return0: elseif(k=1)return1; elsereturnfun(k-1)+1; 若执行调用语句: n=fun(3);则函数 fun总共被调用的次数是 ( A) 2 ( B) 4 ( C) 3 ( D) 5 13 有以下程序 intfun(intn) ifln=1)return1; else retum(n+fun(n-1); main( ) intx; scanf( d, x); x=fun(x); printf( dn, x); 执行程序时,给变量 x输入 10,程序的输出结果是 ( A) 54 ( B) 6
8、5 ( C) 45 ( D) 55 14 以下叙述中正确的是 ( A)只有全局变量才有自己的作用域,函数中的局部变量没有作用域 ( B)只要是用户定义的标识符,都有一个有效的作用域 ( C)只有在函数内部定义的变量 才是局部变量 ( D)局部变量不能被说明为 static 15 有以下程序 #include stdio h inta=1, b=2; yoidfunl(inta, intb) printf( d d, a, b); yoidfun2( ) a=3; b=4; main( ) funl(5, 6); fun20; printf( d dn, a, b); 程序运行后的输出结果是 (
9、 A) 3456 ( B) 1256 ( C) 5612 ( D) 5634 16 有以下程序 #include stdio h fun(inta, intb) intstaticm=0, i=2; i=i+m+l: m=i+a+b; returnm; main( ) intk=4, m=1, p; p=fun(k, m); printf( d, , p); p=fun(k, m); printf( dha7p); 程序运行后的输出结果是 ( A) 8, 17 ( B) 7, 16 ( C) 8, 8 ( D) 7, 17 17 在 C语言中,只有在使用时才占用内存单元的变量,其存储类型是 (
10、 A) extern和 register ( B) auto和 static ( C) static和 register ( D) auto和 register 18 有以下程序 #include stdio h intfun( ) staticintx=1; x+=1: returnx; main( ) inti, s=1; for(i=1; i =5; i+)s+=fun( ); printf( dn, s); 程序运行后的输出结果是 ( A) 11 ( B) 21 ( C) 6 ( D) 120 19 有以下程序 #include stdio h intfun( ) staticintx
11、=l; x*=2: returnx; main( ) inti,s=1; for(i=1; i =2; i+)s=fun( ); printff dn, s); 程序运行后的输出结果是 ( A) 4 ( B) 1 ( C) 0 ( D) 8 20 有以下程序 yoidfun(inta, intn) inti, t; for(i=0; i n/2; i+) t=ai; ai=an-1-i; an-l-i=t; main( ) intk10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, i; fun(k, 5); for(i=2; i 8; i+)printf( d, ki); p
12、rintf(n); 程序的运行结果是 ( A) 876543 ( B) 321678 ( C) 1098765 ( D) 345678 21 有以下程序 #include stdio h yoidfun(inta, intb) mtt; t=a; a=b; b=t; main( ) intc10=1,2, 3, 4, 5, 6, 7, 8, 9, O), i; for(i=0; i 10; i+=2) fun(ci, ci+1); for(i=0; i 10; i+) printff d, , ci); printf(n); 程序的运行结果是 ( A) 2, 1, 4, 3, 6, 5, 8,
13、 7, 0, 9, ( B) 0,9, 8, 7, 6, 5, 4, 3, 2, 1, ( C) 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, ( D) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 22 若要 求定义具有 10个 int型元素的一维数组 a,则以下定义语句中错误的是 ( A) #definen5inta2*n; ( B) inta5+5; ( C) #defineN10intaN; ( D) intn=10, an; 23 有下列程序: #include stdio h yoidfun(int*a intn)/*fun函数的功能是将 a所指数组元素从
14、大到小排序 */ intt, ij; for(i=0; i n-1;j+) for(j=i+1j nj+) if(ai aj)t=ai; ai=ajl; aj=t; main( ) intc10=1, 2, 3, 4, 5, 6, 7, 8, 9, 0), i; fun(c+4, 6); for(i=0; i 10; i+)pfintf( d, , ci); printf(n); 程序的运行结果是 ( A) 1,2, 3, 4, 9, 8, 7, 6, 5, 0, ( B) 0,9, 8, 7, 6, 5, 1, 2, 3, 4, ( C) 0,9, 8, 7, 6, 5, 4, 3, 2,
15、1, ( D) 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 24 以下叙述 中正确的是 ( A)语句 inta=0;是不合法的,遗漏了数组的大小 ( B)语句 chara2=A, B);是合法的,定义了一个包含两个字符的数组 ( C)语句 inta8: 0;是合法的 ( D)语句 chara3; a=AB;是合法的,因为数组有三个字符空间的容量,可以保存两个字符 25 若有以下程序 main( ) inti, j=0; chara=Howareyou!; for(i=0; ai; i+) if(ai!=) aD+=ai; aj=0; printf( sn, a); 则程序的输出结
16、果是 ( A) Howareyou ( B) Hay! ( C) Howareyou! ( D) Howareyou! 26 有以下程序 #include main( ) intb33=0, 1, 2, 0, 1, 2, 0, 1, 2), i,j, t=1; for(i=0; i =i; j+) t+=bibDi; printf( dn, t); ) 程序运行后的输出结果是 ( A) 3 ( B) 1 ( C) 9 ( D) 4 27 有以下程序 #include stdio h intfun(int(*s)4, intn, intk) intm, i; m=s0k; for(i=1; i
17、n; i+)if(sikl m)m=sik; returnm: main( ) inta44=1, 2, 3, 4), 11, 12, 13, 14, 21, 22, 23, 24), 3l, 32,33, 34); printf( dn, fun(a, 4, 0); 程序的运行结果 是 ( A) 31 ( B) 34 ( C) 4 ( D) 32 28 有下列程序: main( ) inta44=1, 4, 3, 2, 8,6, 5, 7, 3,7, 2, 5, 4, 8, 6, 1, i,k, t; for(i=0; i 3; i+) for(k=i+l; k 4; k+)if(aii a
18、kk)t: aii; aii=akk; akk=t; for(i=0; i 4; i+)printf( d, , a0i); 程序运行后的输 出结果是 ( A) 6, 2, 1, 1, ( B) 1, 1, 2, 6, ( C) 2, 3, 4, 6, ( D) 6, 4, 3, 2 29 以下叙述中正确的是 ( A)语句 inta43=1,2, 4, 5;是错误的初始化形式 ( B)语句 inta3=1,2, 4, 5);是错误的初始化形式 ( C)在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵 ( D)语句 inta43=1, 2), 4, 5);是错误的初始化形式 30 以下语
19、句中存在语法错误的是 ( A) charss20=right?; ( B) char*ss6; ss1=right?; ( C) char*ss=right?); ( D) charss620; ss1=right?; 31 以下选项中,能正确进行字符串赋值的是 ( A) chars5=A, B, C, D, E); ( B) char*s=abcDE: ( C) chars45=tabcDE; ( D) char*s; gets(s); 32 以下叙述中正确的是 ( A)下面的语句用赋初值方式来定义字符串,其中, 0是必须的 charstrl=s,t, r, 1, 0); ( B)有定义语句
20、: charstr1=str1,数组 str1将包含 4个元素 ( C)字符串常量 str1的类型是:字符串数据类型 ( D)字符数组的每个元素可存放个字符,并且最后一个元素必须是 0字符 33 以下叙述中正确的是 ( A)不能用字符串常量对字符数组名进行整体赋值操作 ( B)字符串常量 Hello会被隐含处理成一个无名字符型数 组,它有 5个元素 ( C) charstr7=string!;在语法上是合法的,运行也是安全的 ( D) char*str; str=Hello;与 charstr; str=Hello;效果是一样的 34 设有定义语句: char*aa2=abcd,abcD;则以
21、下叙述正确的是 ( A) aa数组的两个元素只能存放含有 4个字符的一维数组的首地址 ( B) aa数组的值分别是字符串 abcd和 abcD ( C) aa是指针变量,它指向含有两个元素的字符 型数组 ( D) aa0存放了字符串 abcd的首地址 35 设有定义: chars81; inti=0;以下不能将一行 (不超过 80个字符 )带有空格的字符串正确读入的语句或语句组是 while(si+=getchar( )!=n); si=0; ( A) scanf( s, s); ( B) gets(s); ( C) doscanf( c, si); )while(si+!=n); si=0;
22、 36 有以下程序 #include stdio h yoidmain( ) chars=012xy08s34f4w2; inti, n=0; for(i=0; si!=0; i+) if(si =0 si =9)n+; printf( dn, n); 程序运行后的输出结果是 ( A) 0 ( B) 7 ( C) 3 ( D) 8 37 有以下程序 main( ) charch=uVwxyz, *pc; pc=ch; printf( cn, *(pc+5); 程 序运行后的输出结果是 ( A) 0 ( B)元素 ch5的地址 ( C) Z ( D)字符 y的地址 38 以下关于字符串的叙述中正
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 语言 函数 数组 模拟 答案 解析 DOC
