[计算机类试卷]国家二级C语言机试(函数和数组)模拟试卷3及答案与解析.doc
《[计算机类试卷]国家二级C语言机试(函数和数组)模拟试卷3及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级C语言机试(函数和数组)模拟试卷3及答案与解析.doc(27页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C语言机试(函数和数组)模拟试卷 3及答案与解析 一、选择题 1 以下叙述中正确的是 ( A)用户自己定义的函数只能调用库函数 ( B)不同函数的形式参数不能使用相同名称的标识符 ( C)在 C语言的函数内部,可以定义局部嵌套函数 ( D)实用的 C语言源程序总是由一个或多个函数组成 2 若有定义语句: char*s1=“OK“, *s2=“ok“;以下选项中,能够输出 “OK“的语句是 ( A) if(strcmp(s1, s2)!=0)puts(s1); ( B) if(strcmp(s1, s2)!=0)puts(s2); ( C) if(strcmp(s1, s2)=1)pu
2、ts(s1); ( D) if(strcmp(sl, s2)=0)puts(s1); 3 有以下程序 #include int fun(int a, int b) if=0) return a; else return(fun(-a,-b); main() printf(“ d n“, fun(4, 2); 程序的运行结果是 ( A) 1 ( B) 2 ( C) 3 ( D) 4 4 以下叙述中正确的是 ( A)函数既可以直接调用自己,也可以间接调用自己 ( B)任何情况下都不能用函数名作为实参 ( C)函数的递归调用不需要额外开销,所以效率很高 ( D)简单递归不需要明确的结束递归的条件 5
3、 以下叙述中错误的是 ( A)用户定义的函数中可以没有 return语句 ( B)用户定义的函数中若没有 return语句,则应当定义函数为 void类型 ( C)用户定义的函数中可以有多个 return语句,以便可以调 用一次返回多个函数值 ( D)函数的 return语句中可以没有表达式 6 以下叙述中正确的是 ( A)函数调用时,不必区分函数名称的大小写 ( B)调用函数时,函数名必须与被调用的函数名完全一致 ( C)函数名允许用数字开头 ( D)在函数体中只能出现一次 return语句 7 有以下程序 int f(int x); main() int n=1, m; m=f(f(f(n
4、); printf(“ d n“, m); int flint x1 return x*2; 程序运行后的输出结果是 ( A) l ( B) 2 ( C) 4 ( D) 8 8 有以下程序 #include double f(double x); main() double a=0; int i; for(i=0; i 30; i+=1 0)a+=f(double)i); printf(“ 5 f n“, a); double f(double x) return X*X+1; 程序运行后的输出结果是 ( A) 401 ( B) 500 ( C) 503 ( D) 1404 9 有以下程序 #
5、include int f(int x); main() int a, b=0; for(a=0; a 3; a+) b=b+f(a); putchar(A+b); int f(int x) return x*x+1; ( A) BCD ( B) BDI ( C) ABE ( D) BCF 10 有以下程序 #include int fun(int n) int a; if(n=1)return 1; a=n+fun(n-1); return(a); main() printf(“ d n“, fun(5); 程序的输出结果是 ( A) 14 ( B) 10 ( C) 15 ( D) 9 11
6、 设有如下函数定义 int fun(int k) if(k 1)return 0; else if(k=1)return 1; else return fun(k-1)+1; 若执行调用语句: n=fun(3);,则函数 fun总共被调用的次数是 ( A) 2 ( B) 4 ( C) 3 ( D) 5 12 有以下程序 int fun(int n) if(n=1)retum 1; else return(n+fun(n-1); main() int x; scanf(“ d“&x); x=fun(x); printf(“ d n“, x); 执行程序时,给变量 x输入 10,程序的输出结果是
7、( A) 54 ( B) 65 ( C) 45 ( D) 55 13 以下叙述中正确的是 ( A)只有全局变量才有自己的作用域,函数中的局部变量没有作用域 ( B)只要是用户定义的标识符,都有一个有效的作用域 ( C)只有在函数内部定义的变量才是局部变量 ( D)局部变量不能被说明为 static 14 有以下程序 #include int a=1, b=2; void funl(int a, int b) printff“ d d“, a, b); ) void fun2() a=3; b=4; ) main() fun1(5, 6); fun2(); printf(“ d d n“, a,
8、 b); 程序运行后的输出结果是 ( A) 3 4 5 6 ( B) 1 2 5 6 ( C) 5 6 1 2 ( D) 5 6 3 4 15 有以下程序 #include fun(int a, int b) int static m=0, i=2; i=i+m+1; m=i+a+b; return m; ) main() int k=4, m=1, p; p=fun(k, m); printf(“ d, “, p); p=fun(k, m); printf(“ d n“, p); ) 程序运行后的输出结果是 ( A) 8, 17 ( B) 7, 16 ( C) 8, 8 ( D) 7, 17
9、 16 在 C语言中,只有在使用时才占用内存单元的变量,其存储类型是 ( A) extern和 register ( B) auto和 static ( C) static和 register ( D) auto和 register 17 有以下程序 #include int fun() static int x=1; x+=1; return x; main() int i, s=1: for(i=1; i =5; i+)s+=fun(); printf(“ d n“, s); 程序运行后的输出结果是 ( A) 11 ( B) 21 ( C) 6 ( D) 120 18 有以下程序 #inc
10、lude int fun() static int x=1; x*=2; return x; main() int i, s=1; for(i: 1; i =2; i+) s=fun(); printf(“ d n“, s); 程序运行后的输出结果是 ( A) 4 ( B) 1 ( C) 0 ( D) 8 19 下列定义数组的语句中,正确的是 ( A) int N=10; int xN; ( B) #define N 10 int xN; ( C) int x0 10; ( D) int x; 20 有下列程序: main() int i,s=0, t=1, 2, 3, 4, 5, 6, 7,
11、 8, 9; for(i=0; i 9; i+=2)s+=*(t+i); printf(” d n”, s); 程序执行后的输出结果是 ( A) 20 ( B) 45 ( C) 36 ( D) 25 21 下列程序中函数 f的功能是:当 flag为 1时,进行由小到大排序;当 flag为 0时,进行由大到小排序。 void flint b, int n, int flag) int i,j, t; for(i=0; i n-1; i+) for(j=i+1 j n j+) if(flag?bibD: bi bj) t=bi; bi=bj; bD: t; ) main() int a10=5,
12、4, 3, 2, 1, 6, 7, 8, 9, 10, i; f(&a2, 5, 0); f(a, 5, 1); for(i=0; i 1 0; i+) printf(“ d, “, a); 程序运行后的输出结果是 ( A) 1, 2, 3, 4, 5, 6, 7, 8, 9 10, ( B) 3, 4, 5, 6, 7, 2, 1, 8, 9, 10, ( C) 5, 4, 3, 2, 1, 6, 7, 8, 9, 10, ( D) 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 22 有以下程序 #include main() int c6=10, 20, 30, 40, 5
13、0, 60, *p, *s; p=c: S=&c5; printf(“ d n“, s-p); ) 程序运行后的输出结果是 ( A) 50 ( B) 6 ( C) 5 ( D) 60 23 如果定义 float a10, x;则以下叙述中正确的是 ( A)表达式 a+1是非法的 ( B)语句 a=&x;是非法的 ( C)三个表达式 a1、 *(a+1)、 *&a1表示的意思完全不同 ( D)表达式 *&a1是非法的,应该写成 *(&(a1) 24 若有以下程序 #include main() int i, j=0; char a=“How are you!“, b10; for(i=0; ai
14、; i+) if(ai=)bj+=ai+1; bj= 0; printf(“ s n“, b); ) 则程序的输出结果是 ( A) Howareyou ( B) Hay! ( C) Howareyou! ( D) ay 25 有以下程序 #include #define N 4 void fun(int aN, int b) int i; for(i=0; i N; i+)bi=aii-aiN-1-i; void main() int xNN=1, 2, 3, 4), 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,15, 16), yN, i; fun(x, y); fo
15、r(i=0; i N; i+)printf(“ d, “, yi); printf(“ n“); 程序运行后的输出结果是 ( A) -12, -3, 0, 0, ( B) -3, -1, 1, 3, ( C) 0, 1, 2, 3, ( D) -3, -3, -3, -3, 26 有下列程序: main() int x32=0, i; for(i=0; i 3; i+)scanf(“ d“, xi); printf(“ 3d 3d 3dkn“, x00, x01, x10); 若运行时输入: 2 4 6 CR,则输出结果为 ( A) 2 0 0 ( B) 2 4 0 ( C) 2 0 4 (
16、D) 2 4 6 27 有下列程序: main() int i,t3=9, 8, 7, 6, 5, 4, 3, 2, 1); for(i=0; i 3; i+) printf(“ d“t2-ii); 程序执行后的输出结果是 ( A) 7 5 3 ( B) 3 6 9 ( C) 7 5 1 ( D) 3 5 7 28 以下错误的定义语句是 ( A) int x43=1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3; ( B) int x3=0, 1, 1, 2, 3; ( C) int x3=1, 2, 3, 4; ( D) int x4=1, 2, 3, 1, 2, 3),
17、 1, 2, 3), 1, 2, 3); 29 有以下程序 #include stdio h #deftne N 3 void fun(int aN, int b) int ij; for(i=0; i N; i+) bi=ai0; for(j=1; j N; j+) if(bi aij)bi=aij; main() int xNN=1, 2, 3, 4, 5, 6, 7, 8, 9), yN, i; fun(x, y); for(i=0; i N; i+)printf(“ d, “, yi); printf(“ n“); ( A) 1, 3, 5, ( B) 2, 4, 8, ( C) 3,
18、 5, 7 ( D) 3, 6, 9, 30 以下选项中,能正确进行字符串赋值的是 ( A) char s5=A, B, C, D, E); ( B) char*S=“ABCDE“; ( C) char s45=“ABCDE“); ( D) char*s; gets(S); 31 以下叙述中正确的是 ( A)下面的语句用赋初值方式来定义字符串,其中, 0是必须的 char strl=s, t, r, 1, 0); ( B)有定义语句: char strl=”strl”;,数组 strl将包含 4个元素 ( C)字符串常量 ”strl”的类型是:字符串数据类型 ( D)字符数组的每个元素可存放一
19、个字符,并且最后一个元素必须是 0字符 32 以下叙述中正确的是 ( A)不能用字符串常量对字符数组名进行整体赋值操作 ( B)字符串常量 “Hello“会被隐含处理成一个无名字符型数组,它有 5个元素 ( C) char str7=“string!“;在语法上是合法的,运行也是安全的 ( D) char*str; str=“Hello“;与 char str; str=“Hello“;效果是一样的 33 设有定义语句: char*aa2=“abcd“,“ABCD“;则以下叙述正确的是 ( A) aa数组的两个元素只能存放含有 4个字符的一维数组的首地址 ( B) aa数组的值分别是字符串 “
20、abcd“和 “ABCD“ ( C) aa是指针变量,它指向含有两个元素的字符型数组 ( D) aa0存放了字符串 “abcd“的首地址 34 设有定义: char s81; int i=0;以下不能将一行 (不超过 80个字符 )带有空格的字符串正确读入的语句或语句组是 ( A) while(si+=getchar()!= n); si= 0; ( B) scanf(“ s“, s); ( C) gets(s); ( D) doscanf(“ c”, &si); )while(si+!= n); si= 0 35 有以下程序 #include void main() char s=“012x
21、y 08s34f4w2“; int i, n=0; for(i=0; si!=0; i+) if(si =0&si =9)n+; printf(“ d n“, n); 程序运行后的输出结果是 ( A) 0 ( B) 7 ( C) 3 ( D) 8 36 有以下程序 main() char ch=“uvwxyz“, *pc; pc=ch; print!(“ c n“, *(pc+5); 程序运行后的输出结果是 ( A) 0 ( B)元素 ch5的地址 ( C) z ( D)字符 y的地址 37 以下关于字符串的叙述中正确的是 ( A)两个字符串中的字符个数相同时才能进行字符串大小的比较 ( B)
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 语言 函数 数组 模拟 答案 解析 DOC
