[计算机类试卷]国家二级(C语言)笔试模拟试卷183及答案与解析.doc

上传人:吴艺期 文档编号:503344 上传时间:2018-11-29 格式:DOC 页数:19 大小:59.50KB
下载 相关 举报
[计算机类试卷]国家二级(C语言)笔试模拟试卷183及答案与解析.doc_第1页
第1页 / 共19页
[计算机类试卷]国家二级(C语言)笔试模拟试卷183及答案与解析.doc_第2页
第2页 / 共19页
[计算机类试卷]国家二级(C语言)笔试模拟试卷183及答案与解析.doc_第3页
第3页 / 共19页
[计算机类试卷]国家二级(C语言)笔试模拟试卷183及答案与解析.doc_第4页
第4页 / 共19页
[计算机类试卷]国家二级(C语言)笔试模拟试卷183及答案与解析.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、国家二级( C语言)笔试模拟试卷 183及答案与解析 1 以下叙述中正确的是 ( )。 ( A)用 C语言实现的算法必须要有输入和输出操作 ( B)用 C语言实现的算法可以没有输出但必须要有输入 ( C)用 C语言程序实现的算法可以没有输入但必须要有输出 ( D)用 C语言程序实现的算法可以既没有输入也没有输出 2 以下关于函数的叙述中正确的是 ( )。 ( A)每个函数都可以被其他函数调用 (包括 main函数 ) ( B)每个函数都可以被单独编译 ( C)每个函数都可以单独运行 ( D)在一个 函数内部可以定义另一个函数 3 以下选项中可作为 C语言合法常量的是 ( )。 ( A) -80

2、 ( B) -80 ( C) -80.0 ( D) -80.0e 4 以下定义语句中正确的是 ( )。 ( A) int a=b=0; ( B) char A=65+1, b=b; ( C) float a=1, *b= a, *c= b; ( D) double a=0.0; b=1.1; 5 有以下程序: #include stdio.h main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0:a+;break; case 1: b+;break; case 2:a+;b+;break; case 3:a+;b+; pr

3、intf(“a=%d, b=%dn“,a,B); 程序的运行结果是 ( )。 ( A) a=1,b=0 ( B) a=2, b=2 ( C) a=1,b=1 ( D) a=2,b=1 6 若有定义 int x, y;,并已正确给变量赋值,则以下选项中与表达式 (x-y)?(x+): (y+)中的条件表达式 (x-y)等价的是 ( )。 ( A) (xy 0) ( B) (x-y 0) ( C) (x-y 0|x-y 0) ( D) (x-Y=0) 7 有以下计算公式: 若程序前面已在命令行中包括 math.h文件,不能够正确计算上述公式的程序是 ( )。 ( A) if(x =0)y=sqrt

4、(x); ( B) y=sqrt(x); else y=sqrt(-x); if(x 0)y=sqrt(-x); ( C) if(x =0)y=sqrt(x); ( D) y=sqrt(x =0? x: -x); 8 有以下程序: main() int i=1, j=2, k=3; if(i+=1(+j=3|k+=3)printf(“%d%d%dn“,i,j,k); 程序运行后的输出结果是 ( )。 ( A) 1 2 3 ( B) 2 3 4 ( C) 2 2 3 ( D) 2 3 3 9 有以下程序: main() int k=5; while(-k)printf(“%d“, k-=3);

5、printf(“n“); 执行后的输出结果是 ( )。 ( A) 1 ( B) 2 ( C) 4 ( D)死循环 10 有以下程序: #include stdio.h main() int y=9; for(;y 0;y-) f(y%3=0)printf(“%d“, -y); 程序的运行结果是 ( )。 ( A) 741 ( B) 963 ( C) 852 ( D) 875421 11 有以下程序: #include stdio.h main() int i,j; for(i=3;i =1;i-) for(j=1;j =2;j+)printf(“%d“,i+j); printf(“n“); 程

6、序运行的结果是( )。 ( A) 2 3 4 ( B) 4 3 2 ( C) 2 3 ( D) 4 5 3 4 5 5 4 3 3 4 3 4 4 5 2 3 12 以下合法的字符型常量是 ( )。 ( A) x13 ( B) 081 ( C) 65 ( D) n 13 在 C语言中,函数返回值的类型最终取决于 ( )。 ( A)函数定义时的函数首部所说明的函数类型 ( B) return语句中表达式值的类型 ( C)调用函数时主调函数所传递的实参类型 ( D)函数定义时形参的类型 14 有以下程序: int fun(int n) if(n=1)return 1; else return(n+

7、fun(n-1); main() int x; scanf(“%if“, x);x=fun(x);printf(“%dn“, x); 执行程序时,给变量 X输入 10,程序的输出结果是 ( )。 ( A) 55 ( B) 54 ( C) 65 ( D) 45 15 若有说明语句: double*P, a;则能通过 scanf语句正确给输入项读入数据的程序段是 ( )。 ( A) *p= a; scanf(“%lf“,p); ( B) *p=scanf(“%f“,p); ( C) p=scanf(“%lf“, *p); ( D) p= a;scanf(“%lf“,p); 16 有以下程序: #i

8、nlucde stdio.h main()D)2 3 3 int n, *P=NULL; *p= n; printf(“input n: “);scanf(“%d“, p);printf(“output n:“);printf(“%dn“, p); 该程序试图通过指针 P为 变量 n读入数据并输出,但程序有多处错误,以下语句正确的是 ( )。 ( A) int n, *P=NULL; ( B) *P= n; ( C) scanf(“%d“, p) ( D) printf(“%dn“, p); 17 有以下程序: void f(int*q) int i=0; for(; i 5; i+)(*q)

9、+; main() int a5=1,2,3,4,5,i; f(A); for(i=0;i 5;i+)printf(“%d, “, ai); 程序运行后的输出结果是 ( )。 ( A) 2,2,3,4,5, ( B) 6,2,3,4,5, ( C) 1,2,3,4,5, ( D) 2,3,4,5,6, 18 有以下程序: main() int a=2,4,6,8,10),y=0,x,*P; P= a1; for(x=1;x 3;x+)y+=px; printf(“%dn“, y); 程序运行后的输出结果是 ( )。 ( A) 10 ( B) 11 ( C) 14 ( D) 15 19 若有定义

10、语句: int a23, *p33;,则以下语句中正确的是 ( )。 ( A) p=a; ( B) p0=a; ( C) p0= a12; ( D) p1= a 20 有以下程序: main() int i, t3=9,8,7,6,5,4,3,2,1; for(i=0; i 3;i+)printf(“%“,t2-ii); 程序执行后的输出结果是 ( )。 ( A) 7 5 3 ( B) 3 5 7 ( C) 3 6 9 ( D) 7 5 1 21 有以下程序: #include stdio.h void fun(char*p) +P;printf(“%sn“, *p); main() char

11、*a=“Morning“, “Afternoon“, “Evening“,“Night“; fun(A); 程序的运行结果是 ( )。 ( A) Afternoon ( B) fternoon ( C) Morning ( D) oring 22 有以下程序: #include string.h main() char p20=a,b,c,d),q=“abc“, r=“abcde“ strcat(p, r); strcpy(p+strlen(q), q); printf(“%dn“,sizeof(p); 程序运行后的输出结果是 ( )。 ( A) 9 ( B) 6 ( C) 11 ( D) 7

12、 23 以下语句或语句 组中,能正确进行字符串赋值的是 ( )。 ( A) char*sp; *sp=“right!“; ( B) char s10; s=“right!“; ( C) char s10; *s=“right!“; ( D) char*sp=“right!“; 24 有以下程序: main(int argc, char*argv) int n=0, i; for(i=1; i argc;i+) n=n*10+argvi-0; printf(“%dn“,n); 编绎连接后生成可执行文件 tt.exe.若运行时输入以下命令行 tt 12 345 678 程序运行后的输出结果是 (

13、)。 ( A) 12 ( B) 12345 ( C) 1.23457e+007 ( D) 136 25 有以下程序: #define f(x)(x*x) main() int i1, i2; i1=f(8)/f(4);i2=f(4+4)/f(2+2); printf(“%d, %dn“,i1,i2); 程序运行后的输出结 果是( )。 ( A) 64,28 ( B) 4,4 ( C) 4,3 ( D) 64,64 26 以下结构体类型说明和变量定义中正确的是 ( )。 ( A) typedef struct ( B) struct REC; int n; char c; REC; int n;

14、 char c; ; REC t1, t2; REC t1, t2; ( C) typedef struct REC; ( D) struct int n=0; char c=A; t1, t2; int n; char c; REC; REC t1,t2; 27 以下程序的功能是进行位运算: main() unsigned char a,b; a=73; b= 4 3; printf(“%d%dn“,a,B); 程序运行后的输出结果是 ( )。 ( A) 4 3 ( B) 7 3 ( C) 7 0 ( D) 4 0 28 读取二进制文件的函数调用形式为: fread(buffer, size

15、, count, pf);,其中buffer代表的是 ( )。 ( A)一个文件指针,指向待读取的文件 ( B)一个整型变量,代表待读取的数据的字节数 ( C)一个内存块的首地址,代表读入数据存放的地址 ( D)一个内存块的字节数 29 变量 a中的数据用二进制表示的形式是 01011101,变量 b中的数据用二进制表示的形式是 11110000。若要求将 a的高 4位取反,低 4位不变,所要执行的运算是 ( )。 ( A) ab ( B) a|b ( C) a b ( D) a 4 30 定义 int a=5,b;,则执行表达式 b=+a*-a之 后,变量 b的值为 ( )。 31 下面程序

16、的输出是 ( )。 main() int arr8,i,k=0; for(i=0;i 8;i+) arri=i; for(i=1;i 5;i+) k+=arri+i; printf(“%dn“,k); 32 下面程序的输出结果是 ( )。 main() int i=0,a=0; while(i 20) for(;) if(i%10)=0)break; else i-; i+=11; a+=i; printf(“%dn“,A); 33 若给 fun函数的形参 s传送字符串: “abc-6354abc“,则函数的返回值是 ( )。(字符串中包括空格 ) long fun(char S) long

17、n;int sign; for(;isspace(*s)|islower(*s);s+); sign=(*s=-)?-1:1; if(*s=+|*s=-)s+; for(n=0;isdigit(*s);s+) n=10*n+(*S-0); return sign*n; 34 以下程序的输出结果是 ( )。 #include stdio.h main() int x=27; while(x 20 if(x/3)x+;break; else continue; printf(“%dn“,x); 35 以下程序的输出结果是 ( )。 #include stdio.h main() fint x=0;

18、 sub( printf(“%dn“,x); sub(int*a,int n,int k) if(k =n) sub(a,n/2,2*k); *a+=k; 36 下面程序的运行结果是 ( )。 #include stdio.h main() int a=25; fun( fun(int *x) printf(“%dn“,+*x); 37 下面程序运行后的输出结果是 ( )。 #include stdio.h main() int a=1,2,3,4,5,6,*k3,i=1; while(i 4) ki-1= printf(“%d“,*ki-1); i+; 38 下面程序的运行结果 是 ( )。

19、 #define EXCH(a,B)int t;t=a;a=b;b=t; main() int x=1,y=2; EXCH(x,y); printf(“x=%d,y=%dn“,x,y); 39 以下程序的功能是将字符串 s中所有小写字母 a删去,请填空。 #include stdio.h main() char s=“absuWWUDJFKFLaaakdK“; int i,j; for(i=j=0;si!=0;i+) if( ) sj+=si; sj=0; printf(“%s“,s); 40 算法的复杂度主要包括 ( )复杂度和空间复杂度。 41 对数据元素之间的逻辑关系的描述是 ( )。

20、42 栈中允许进行插入和删除的一端叫做 ( )。 43 若按功能划分,软件测试的方法通常分为白盒测试方法和 ( )测试方法。 44 在面向对象方法中,信息隐蔽是通过对象的 ( )性来实现的。 国家二级( C语言)笔试模拟试卷 183答案与解析 1 【正确答案】 C 【试题解析】 一个算法应该具有以下 5个特性:有穷性、确定性、可行性、有零个或多个输入、有一个或多个输出。因此一个算法可以没有输入 (程序的功能确定 ),但必须要有输出,没有输出的算法是没有意义的。 2 【正确答案】 B 【试题解析】 C语言中,除了主函数外,用户定义的函数或库函数都可以互相进行调用,甚至可以自己调用自己。所以选项

21、A错误。每个函数可以单独被编译成二进制代码,但不是所有的函数都可以单独运行 ,程序的运行需要从主函数 main开始,缺少 main函数,则无法运行。所以选项 C错误。 C语言规定,不能在一个函数内部再定义函数,所以选项 D错误。 3 【正确答案】 A 4 【正确答案】 B 5 【正确答案】 D 6 【正确答案】 C 7 【正确答案】 B 8 【正确答案】 D 9 【正确答案】 A 10 【正确答案】 C 【试题解析】 本题考查的重点是 printf()函数和 for循环的执行方式。在循环体内,若 y为的倍数,则执行 print(“%d”, -y)语句。所以,当 y为 9时,输出 -y为 8;当

22、 y为 6时,输出 -y为 5;当 y为 3时,输出 -y为 2;当 y为零时, for循环结束。因此,选项 C是正确的。 11 【正确答案】 D 【试题解析】 本题主要考查 for循环语句的嵌套。外层主循环执行了 3次,嵌套的循环语句每轮执行 2次,每次输出 i+j的值,推出嵌套循环语句后换行。 12 【正确答案】 A 【试题解析】 字符常量只能包含一个字符,因此 C选项错误。字符常量只能用单引号括起来,不能用双引号,因此 D选项错误。转义字符常量是一个反斜线开头后跟一个特定的字符,用来代 表某个特定的 ASC 字符,反斜线后面直接跟数字表示八进制 (八进制不用 0开头 ),所以 B错误。反

23、斜线后面以小写字母 x开头的用来表示十六进制数。 13 【正确答案】 A 【试题解析】 函数的返回值类型最终取决于定义函数时所定义的函数的类型。 14 【正确答案】 A 【试题解析】 函数 fun()通过递归调用实现的功能为 n+(n-1)+1 ,故程序的输出结果为 55。 15 【正确答案】 D 【试题解析】 *p间接引用指针指向的变量,因此 “(*p)= a”不对。 scanf()的输入变量必 须为地址,因此 C是错误的。 16 【正确答案】 A 17 【正确答案】 B 【试题解析】 题目中定义了一个指针变量作为函数 f()的参数。主函数 main()中调用 f()函数,当 i=0时,执行

24、语句 “(*q)+; ”,此处 *q就代表数组 a0的地址,也即将 q进行加 1操作;当 i=1时, q仍指向数组元素 a0的地址,因为在函数 f()中并未对指针变量 q做任何变动,即 *q仍代表数组元素 a0的值,所以此次(*q)+即为 2+1,a0的值变为 3;直到 i=4时,执行 (*q)+后 a0的值变为 6,最 后输出数组 a的结果为 6、 2、 3、 4、 5。 18 【正确答案】 C 【试题解析】 指针变量 p指向数组元素 a1,则 p1即为 a2, p2即为 a3,执行第一次 for循环时, y=y+p1=0+a2=6,第二次执行 for循环,y=y+p2=6+a3=14,此时

25、 x为 3,for循环条件不满足,退出循环,输出 y的值为14。 19 【正确答案】 B 【试题解析】 本题考查的重点是指针数组与二维数组的关系。因为 *p3定义成指针数组,从而指针数组中的任何元素都是一个地址,因 此,选项 B是正确的。 20 【正确答案】 B 【试题解析】 定义二维数组时第一维的长度可以不指定,该程序中 t3通过赋初值等价于 t33,并且其数组按行进行赋值,故通过 for循环输出的分别是t20、 t11和 t02。 21 【正确答案】 A 22 【正确答案】 B 【试题解析】 题目中首先通过 strcat(p, r)函数将 r所指字符串内容连接到 p所指的字符串后面, p2

26、0=a,b,c,d,a,b,c,d,e,然 后通过strcpy(p+strlen(q), q),首先在 p0地址的基础上向后移动三位,然后将 q所指字符串的内容复制到 p所指的存储空间中,从字符 d往后全部覆盖,p20=a,b,c,a,b,c。在输出语句中 strlen(p)是求字符串的长度。 23 【正确答案】 D 【试题解析】 本题的考点是 C语言的数组和指针。 C的数组名是一个特殊类型的指针,固定指向数组第一个元素的位置,运行过程中不能再改变其指向。因此选项 B、 C都是错误的。指针可以指向任何单元,但选项 A是错误的, 因为赋值语句 “*sp=”right!”; ”是错误的,正确写法是

27、 “sp=”right!”; ”。而对于选项 D,由于“char*sp=“right!“; ”是定义指针同时赋初值,因此是正确的。 24 【正确答案】 D 25 【正确答案】 C 【试题解析】 根据题意, il=f(8)/f(4)进行宏替换后 i1=(8*8)/(4*4)=4,i2=f(4+4)/f(2+2)=(4+4*4+4)/(2+2*2+2)=24/8=3。所以输出结果为 4、 3。 26 【正确答案】 A 【试题解析】 选项 A中 用 typedef定义结构体类型名 REC后, REC能够唯一地标识这种结构体类型,可以用 REC定义变量,这是正确的结构体类型变量的定义,选项 C是错误的

28、。选项 B中 “struct REC; ”后面不应该加分号。选项 D中的结构体是一个无名结构体类型, REC是结构体变量,不是结构体类型,因此不能用来定义结构体变量。 27 【正确答案】 A 【试题解析】 本题考查位运算。位运算的对象应为二进制的形式。 7的二进制表示为 00000111,3的二进制表示为 00000011,7与 3相异或得 00000100,即十进制数4, 表达式 “ 4 3”先进行位反操作,再进行位与,即 1111101100000011=00000011,即十进制数 3。所以应输出为 4和 3。 28 【正确答案】 C 【试题解析】 本题考查的重点是对 fread函数的理

29、解。 fread函数中, buffer是接收读入数据的内存区域的指针,因此选项 C是正确的。 29 【正确答案】 A 【试题解析】 1与 1异或结果为 0, 0与 1异或结果为 1,可见要使某位数翻转,只要使其与 1进行异或运算即可。 0与 0进行异或运算结果为 0, 1与 0进行异或运算结果为 1,可见要使 某位的数不变,只要使其与 0进行异或运算即可。 30 【正确答案】 25 【试题解析】 首先,执行 +a之后, a的值变为 6而表达式 +a的值为 5,再接着执行 -a后, a的值变为 5,表达式 -a的值为 5,所以 b=5*5=25 31 【正确答案】 20 32 【正确答案】 32

30、 【试题解析】 while(表达式 )的功能是:首先计算表达式的值若为真,则执行循环体语句,执行完毕,再计算表达式的值若仍为真,则重复执行循环体语句,直到表达式的值为假,结束 while语句的执行,继续执行 while语句后面的语句;i=0时满足循环条件,也满足 if的条件,执行语句得 i=11, a=11,第 2次循环不满足 if的条件,执行 i-, i=10,执行 i+=11;a+=i后,得 i=21, a=32,不满足 i20,循环结束。 33 【正确答案】 -6354 【试题解析】 本题的考查点是函数的返回值。这个函数的目的是提取出由函数的形参传送来的字符串中的数字字符,并通过相应字符

31、位置计算出它们数值形式的幂,最后返回字符串中的数字字符的数值形式,所以函数的返回值应当是 “-6354”。 34 【正确答案】 29 【试题解析】 本题考查 while循环和 +运算, x=27符合循环条件,执行循环体中 x+后, x=28, if条件也成立,执行 x+后退出, x的值增 1,结果 x=29。 35 【正确答案】 14 【试题解析】 本题考查递归函数的调用。在主函数中调用 sub(&x,16,2)函数,此时 n=16, k=2, if语句的控制的条件 k =n成立,所以执行下面的语句,调用sub(x,8,4),此时 n=8, k=4, if语句的控制条件 k =n成立,所以执行

32、下面的语句,调用 sub(x,4,8),此时 n=4, k=8, if语句控制的条件 k =n不成立,因此,最后得 x=2+4+8=14。 36 【正确答案】 26 【试题解析】 在主函数中只调用了 fun函数,调用时把变量 a的地址传递给形参。 fun函数的形参 x是一个指针,其基类型与主函数中 a的类型一致,因此在调用时得到的是 a的地址,输出项是 +*x, *x代表的就是主函数中变量 a的存储单元, +*x就是使主函数中 a的值加 1,输出 26。 37 【正确答案】 246 【试题解析】 在程序中定义了一维数组 a和指针数组 k,在 while循环语句中,当 i等于 1时, k0的 等

33、于 a1的地址,所以输入 a1的值为 2。当 i等于 1时,k1的等于 a3的地址,所以输入 a3的值为 4。当 i等于 3时, k2的等于 a5的地址,所以输入 a5的值为 6。所以此空应该填写 246。 38 【正确答案】 x=2,y=1 39 【正确答案】 si!=a 【试题解析】 本题是要将字符串 s中所有小写字母 a删去,所以 if语句的判断条件应该是字符串 s中的字符和字符 a不相同的时候,就把它仍然存在原来的数组中,若是和字符 a相同,就不再保存它。 40 【正确 答案】 时间 【试题解析】 算法的复杂度主要包括时间复杂度和空间复杂度。算法的时间复杂度,是指执行算法所需要的计算工

34、作量。算法的空间复杂度是指执行这个算法所需要的内存空间。 41 【正确答案】 数据的逻辑结构 【试题解析】 数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合中的若干关系来表示。 42 【正确答案】 栈顶 【试题解析】 栈实际也是线性表,只不过是一种特殊的线性表。栈是只能在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一 端为栈项,另一端为栈底。当表中没有元素时称为空栈。栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。 43 【正确答案】 黑盒 【试题解析】 软件测试的方法和技术是多种多样的,对于软件测试方法和技术,可以从不同角度加以分类。若从是否需要执行被测试软件的角度划分,可分为静态测试和动态测试,若从功能划分,可以分为白盒测试和黑盒测试。 44 【正确答案】 封装 【试题解析】 封装性是指从外面看只能看到对象的外部特征,而不知道也无需 知道数据的具体结构以及实现操作的算法。所以在面向对象方法中,信息隐蔽是通过对象的封装性来实现的。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1