1、国家二级( C语言)笔试模拟试卷 190及答案与解析 1 以下叙述错误的是 ( )。 ( A) C语言区分大小写 ( B) C程序中的一个变量,代表内存中一个相应的存储单元,变量的值可以根据需要随时修改 ( C)整数和实数都能用 C语言准确无误地表示出来 ( D)在 C程序中,正整数可以用十进制、八进制和十六进制的形式来表示 2 以下不正确的转义字符是 ( )。 ( A) ( B) t ( C) n ( D) 088 3 可在 C程序中用作用户标识符的一组标识符是 ( )。 ( A) void define WORD ( B) as_b3 _123 If ( C) For -abc case
2、( D) 2c DO SIG 4 若变量已正确定义并赋值,则以下符合 C语言语法的表达式是 ( )。 ( A) a=a+7; ( B) a=7+b+c, a+ ( C) int(12.3%4) ( D) a=a+7=c+b 5 有以下程序段 char ch; int k; ch=a; k=12; printf(“%c, %d, “, ch, ch,k); printf(“k=%dn“, k); 已知字符 a的 ASCII十进制代码为 97,则执行上述程序段后输出结果是 ( )。 ( A)因变量类型与格式描述符的类型不匹配输出无定值 ( B)输出项与格式描述符个数不符,输出为零值或不定值 ( C
3、) a, 97, 12k=12 ( D) a, 97, k=12 6 下列叙述中错误的是 ( )。 ( A)计算机不能直接执行用 C语言编写的源程序 ( B) C程序经 C编译程序编译后,生成后缀为 .obj的文件是一个二进制文件 ( C)后缀为 .obj的文件,经连接程序生成后缀为 .exe的文件是 一个二进制文件 ( D)后缀为 .obj和 .exe的二进制文件都可以直接运行 7 有以下程序 #include stdio.h void main() int a=1, b=0; printf(“%d,“, b=(a+)+(a+); pfintf(“%dn“, a+B); 程序运行后的输出结果
4、是 ( )。 ( A) 4, 6 ( B) 2, 5 ( C) 3, 5 ( D) 2, 6 8 若有代数式 (其中 P仅代表自然对数的底数,不是变量 ),则下列能够正确表示该代数式的 C语言表达式是 ( )。 ( A) sqrt(abs(nx+ex) ( B) sqrt(fabs(pow(n, x)+pow(x, e) ( C) sqrt(fabs(pow(n, x)+exp(x) ( D) sqrt(fabs(pow(x, n)+exp(x) 9 设有定义: int k=0;,下列选项的 4个表达式中与其他 3个表达式的值不相同的是 ( )。 ( A) k+ ( B) k+=1 ( C)
5、#NAME? ( D) k+1 10 有下列程序,其中 %u表示按无符号整数输出。 main() unsigned int x=0xFFFF; /*x的初值为十六进制数 */ printf(“%un“, x); 程序运行后的输出结果是 ( )。 ( A) -1 ( B) 65535 ( C) 32767 ( D) 0xFFFF 11 下面程序的运行结果是 ( )。 for(i=3; i 7; i+)printf(i%2)?(“*%da“):(“#%dn“), i); ( A) *3 #4 *5 *6 ( B) #3 *4 #5 *6 ( C) #3 *4 #5 #6 ( D) *3 #4 *5
6、 #6 12 设有语句: if(a=1)b=2; c=3;,以下语句中与之等价的是 ( )。 ( A) if(a=1)b=2; c=3; ( B) if(a!=1); elseb=2; c=3; ( C) if(a=1)c=3; b=2; ( D) (a=1)?b=2:a:=a; c=3; 13 运行下列程序 时,若输入数据为 “321”,则输出结果是 ( )。 main() int num, i,j, k, s; scanf(“%d“, else if(num 9) s=2; else s=1; i=num/100; j=(num-i*100)/10; k=(num-i*100-j*10);
7、 switch(s) case 3:printf(“%d%d%dn“, k,j, i); break; case 2:printf(“%d%dn“, k, j); case 1:printf(“%dn“, k); ( A) 123 ( B) 1,2,3 ( C) 321 ( D) 3,2,1 14 判断 char型变量 c1是否为小写字母的正确表达式为 ( )。 ( A) a =c1 =z ( B) (c1 =A) char z10; M; M t; main() printf(“%dn“, sizeof(t); ( A) 32 ( B) 26 ( C) 10 ( D) 4 27 以下程序中函
8、数 sort的功能足对 a数组中的数据进行由大到小的排序 void sort(int a, int n) int i,j, t; for(i=0; i n-1; i+) for(j=i+1;j n;j+) if(ai aj)t=ai; ai=aj; aj=t; main() int aa10=1, 2, 3, 4, 5, 6,7, 8, 9, 10, i; sort(”,则执行完语句 “a*=18+(b+)-(+C);”后, a的值是( )。 31 执行以下 “for(i=1;i+ =4;i+);”语句后,变量 i的值是 ( )。 32 若从键盘输入 24,则以下程序输出的结果是 ( )。 #
9、include stdio.h main() int a; scanf(“%d“, if(a 20) printf(“%d“,A); if(a 10) printf(“%d“,A); if(a 5) printf(“%d“,A); 33 下 面程序的功能是:计算 1 20之间的奇数之和与偶数之和,请填空使程序功能完整。 #include stdio.h main() int a=0,b=0,c=0,i; for(i=0;i =20;i+=2) a+=i; ( ); c+=b; printf(“偶数之和 =%dn“,A); printf(“奇数之和 =%dn“,c-21); 34 设有以下程序:
10、 main() int i,sum=0; for(i=2;i 10;i+) if(i%2)=0) continue; sum+=i; printf(“%dn“,sum); 程序执行后的输出结果是 ( )。 35 下面程序的功能是:从输入的正整数中选 3个数进行输出,要求这些数都是 2的倍数,请填空。 main() int a,i=0; scanf(“%d“, do if(a 0i+; if(i!=3) scanf(“%d“, while( ); 36 以下程序的输出结果是 ( )。 #include stdio.h fun() int a=0; a+=3; printf(“%d“,A); ma
11、in() int cc; for(cc=1;cc =4;cc+) fun(); printf(“n“); 37 以下程序的输出结果是 ( )。 #inciude stdio.h main() char s=“ABCabc“; s5=0; printf(“%sn“,s); 38 下面程序的运行结果是 ( )。 #include stdio.h #define SlZE 12 main() char sSIZE;int i; for(i=0;i SIZE;i+) si=A+i+32; sub(s,5,SIZE-1); for(i=0;i SIZE;i+)printf(“%c“,si); print
12、f(“n“); sub(char *a,int t1,int t2) char ch; while(t1 t2) ch=*(a+t1); *(a+t1)=*(a+t2); *(a+t2)=ch; t1+;t2-; 39 已知函数 isaplha(ch)的功能是判断变量 ch是否是字母,若是,则该数值为 1,否则为 0。下面程序执行后的输出 结果是 ( )。 #include ctype.h #include string.h void fun(char s) int i,j; for(i=0,j=0;si;i+) sj=0; main() char ss80=“good morning“; f
13、un(ss); printf(“%s“,ss); 40 数据字典是各类数据描述的集合,它通常包括 5个部分,即数据项、数据结构、数据流、 ( )和处理过程。 41 ( )的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。 42 下列软件系统结构图的宽度为 ( )。 43 在两种基本测试方法中, ( )测试的原则之。一是保证所测模块中每一个独立路径至少要执行一次。 44 数据结构分为线性结构和非线性结构,带链的队列属于 ( )。 国家二级( C语言)笔试模拟试卷 190答案与解析 1 【正确答案】 C 【试题解析】 本题涉及 C语言最基本的 3个概念: C语言是区分 大小写的,
14、q和 Q是两个不同的变量; 变量的实质就是在内存中占据一定的存储单元,存储单元里存放的是该变量的值,变量的值可以根据需要进行修改; 整数在允许的范围内可以准确的表示出来,但不可能表示无限度的实数。正整数可用二进制、十进制、八进制和十六进制表示。 2 【正确答案】 D 【试题解析】 是反斜线转义字符; t是水平跳格转义字符; n是换行转义字符; C语言中没有规定 088是转义字符。 3 【正确答案】 B 【试题解析】 C语言规定,标识符是由字母、数字或下划线组成,并 且它的第一个字符必须是字母或下划线,关键字不能用作用户标识符。 4 【正确答案】 B 5 【正确答案】 D 【试题解析】 在用基本
15、输出函数 printf时,格式说明与输出项的个数应该相同。如果格式说明的个数少于输出项的个数,多余的输出项不予输出;如果格式说明个数多于输出项个数,则对于多余的格式项输出不定值或 0。 6 【正确答案】 D 7 【正确答案】 B 8 【正确答案】 C 【试题解析】 n和 e的 x幂次方,要分别调用 C语言的数学库函数 double pow(n,x)和 double exp(x),因为这两个函数的返回值都为 double型,对两者的和计算绝对值,调用库函数 doublefabs(pow(n,x)+exp(x),求出和的绝对值,再调用开平方函数 doublesqrt(fabs(pow(n,x)+e
16、xp(x),这样计算出的结果就是题干中表达式的值。 9 【正确答案】 A 10 【正确答案】 B 【试题解析】 “%u”格式符表示以十进制形式输出无符号整形变最。本题中无符号整形变量 x=0xFFFF表示的是十六进制无符号整型变量的最大值 65535,所以最后输出的 结果为 65535。 11 【正确答案】 D 【试题解析】 本题考查 printf函数的输出格式和条件表达式 “?: ”的使用。 printf函数输出时 “*%dn”和 “#%dn”中的 “#”和 “*”都是直接输出。 条件表达式的基本格式为: “a?b: c”。它的运算规则为:当 a为非 0时,整个表达式的值取 b的值,当 a为
17、 0时,整个表达式取 c的值。 12 【正确答案】 D 13 【正确答案】 A 【试题解析】 本题考查 if-else语句和 switch语句。 scan函数通过键盘读入 nUm的值。 因为 num=321 99,所以 s=3, i=3, i=2k=1。因为 s=3,所以执行 case 3,输出 k, j, i的值,然后通过 breed结束程序。 14 【正确答案】 D 15 【正确答案】 B 【试题解析】 本题考查标准输入输出函数和循环语句。 gets(s)函数的作用是将输入的字符读入字符串 s,直到遇到回车。而 scanf()数接收字符串时的结束标志为回车或者空格。因此选巧 16 【正确答
18、案】 D 【试题解析】 本题考查几个循环语句的关系。 dowhile 语句、 while语句、for语 句所实现的循环可以相互替代; dowhile 语句和 while语句的区别是dowhile 语句至少执行一次,再判断循环条件, while语句是先判断条件再执行。 17 【正确答案】 D 18 【正确答案】 A 【试题解析】 本题中 sub(int*s, int*y)函数的参数是两个指针型变量,在函数体内将数组 s的第一个元素赋给 y。主程序内,首先定义了一维数组并赋初值,然后通过 for循环, 5次调用 sub(a, cc =4;cc+)表示循环 4次, a+=3表示每次 a的值增加 3,
19、但是子函数中没有将变量 a定义为 static类型,所以每次调用完子函数之后,变量 a所做的改变都不能保存,这样在下一次调用子函数时, a的初值仍是 0,所以不管调用多少次,子函数输出始终是 3。 37 【正确答案】 ABCab 【试题解析】 本题中字符数组的初值是 “ABCabc”, s5=c,然后通过 s5=0重新给 s5赋值,在 C语言中 0是字符串结束标志,执行 s5=0,其实是将 s5的值去掉 只保留前面的字符。 38 【正确答案】 abcdelkjihgf 【试题解析】 本题先给字符型数组 s的 12个元素赋值 a到 1共 12个字母,函数sub(char*a,int t1,int
20、 t2)的功能是将数组 a的从第 t1+1个元素到 t2+1个元素进行逆置,在主函数中调用 sub(s,5,SIZE-1)函数,是将数组 s的第 6个元素到第 12个元素进行逆置,其他元素位置不变。 39 【正确答案】 goodmorning 【试题解析】 子函数 fun(char s)的作用是将字符数组 s中除去字母以外 的所有其他字符都去掉,然后将字母仍按原来的顺序存在数组 s中。在主函数中调用fun(ss),是将 “good morning”中所有的非字母去掉,在这里就是去掉空格,然后输出 ss。 40 【正确答案】 数据存储 【试题解析】 数据字典是各类数据描述的集合,它通常包括 5个
21、部分,即数据项,是数据的最小单位;数据结构,是若干数据项有意义的集合;数据流,可以是数据项,也可以是数据结构,表示某一处理过程的输入或输出;数据存储,处理过程中存取的数据,常常是手工凭证、手工文档或计算机文件。 41 【正确答案】 数据库概念设计 【试题解析】 数据库概念设计的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。 42 【正确答案】 3 【试题解析】 软件系统结构图的宽度:整体控制跨度 (最大模块数的层 )的表示。 43 【正确答案】 白盒 【试题解析】 白盒测试的基本原则是:保证所测模块中每一独立路径至少执行一次;保证所测模块所有判断的每一分支至少执行一次;保证所测模块每一循环都在边界条件下至少执行一次;验证所有内部数据结构的有效性。 44 【正确答案】 线性结构 【试题解 析】 一个数据结构是线性结构还是非线性结构。判断依据是数据结构前后件关系的复杂程度,而与其所使用的存储结构是没有关系的。在一个非空的队列中,每一个元素只有一个前件和后件,因此它属于线性结构。