1、国家二级( C语言)笔试模拟试卷 128及答案与解析 1 对长度为 n的线性表进行顺序查找,在最坏的情况下所需要的比较次数为 _。 ( A) log2n ( B) n/2 ( C) n ( D) n+l 2 下列描述中正确的是 _。 ( A)程序就是软件 ( B)软件开发不受计算机系统的限制 ( C)软件既是逻辑实体,又是物理实体 ( D)软件是程序、数据与相关文档的集合 3 在软件设计中,不属于过程设计工具的是 _。 ( A) PDL(过程设计语言 ) ( B) PAD图 ( C) N-S图 ( D) DFD图 4 下列叙述中正确的是 _。 ( A)程序设计就是编制程序 ( B)程序测试必须
2、由程序员自己去做 ( C)程序经调试改错后还应进行再测试 ( D)程序经调度改错后不必进行再测试 5 以下叙述中正确的是 _。 ( A)用 C语言实现的算法必须要有输入和输出操作 ( B)用 C语言实现的算法可以没有输出但必须要有输入 ( C)用 C程序实现的算法可以没有输入但必须要有输出 ( D)用 C程序实现的算法可以既没有输入也没有输出 6 以下 4个选项中,不能被看作是一条 语句的是 _。 ( A) ; ( B) a=0, b=0, c=0; ( C) if(a O); ( D) if(b=0)m=1; n=2; 7 下列选项中,合法的 C语言关键字是 _。 ( A) VAR ( B)
3、 cher ( C) integer ( D) default 8 在 16位 C编译系统上,若定义 long a;,则能给变量 a赋值 40000的正确语句是 _。 ( A) a=20000+20000; ( B) a=4000*10; ( C) a=30000+10000; ( D) a=4000L*1OL; 9 以下程序运行后的输出结果是 _。 main() char m; m=B+32;printf(“%cn“,m); ( A) a ( B) b ( C) c ( D) d 10 设有定义: int k=1,m=2; float f=7; 则以下选项中错误的表达式是 _。 ( A) k
4、=k =k ( B) -k+ ( C) k% int(f) ( D) k =f =m 11 若 x和 y代表整型数,以下表 达式中不能正确表示数学关系 |x-y| 10的是 _。 ( A) abs(x-y) 10 ( B) x-y -10 printf(“% 2dn“,a); ( A) 12 ( B) 34 ( C) 1234 ( D)提示出错、无结果 13 设有定义: long x=123456L;,则以下能够正确输出变量 x值的语句是 _。 ( A) printf(“x=%dn“,x); ( B) printf(“x=%1dn“,x) ( C) printf(“x=%8dLn“,x); (
5、 D) printf(“x=%LDn“,x); 14 有以下程序: main() int a=5,b=4,c=3,d=2; if(a b c) printf(“%dn“,d); else if(c-1 =d)=1) printf(“%dn“,d+1); else printf(“%dn“,d+2); 执行后输出结果是 _。 ( A) 2 ( B) 3 ( C) 4 ( D)编译时有错,无结果 15 下列条件语句中,功能与其他语句不同的是 _。 ( A) if (a) printf(“%dn“,x);else printf(“%dn“,y); ( B) if(a=0) printf(“%dn“,
6、y);else printf(“%dn“,x); ( C) if(a!=0)printf(“%dn“,x);else printf(“%dn“,y); ( D) if(a= =0)printf(“%dn“,x);else printf(“%dn“,y); 16 有以下程序: main() int I; For (i=0;i 3;i+) switch(i) case 0:printf(“%d“,i); case 2:printf(“%d“,i); default:printf(“%d“,i); 程序运行后的输出结果是 _。 ( A) 22111 ( B) 21021 ( C) 122 ( D)
7、12 17 有以下程序: main() int p8=11,12,13,14,15,16,17,18,i=0,j=0; while(i+ 7)if(pi%2)j+=pi; printf(“%dn“,j); 程序运行后的输出结果是 _。 ( A) 42 ( B) 45 ( C) 56 ( D) 60 18 执行下列程序时输入: 123空格 456空格 789回车,输出结果是 _。 main() char s100;int c,i; scanf(“%c“, scanf(“%d“, scanf(“%s“,s); printf(“%c,%d,%sn“,c,i,s); ( A) 123,456,789
8、( B) 1,456,789 ( C) 1,23,456,789 ( D) 1,23,456 19 x、 y、 z被定义为 int型变量,若从键盘给 x、 y、 z输入数据,正确的输入语句是 _。 ( A) INPUT x、 y、 z; ( B) scanf(“%d%d%d“, ( C) scanf(“%d%d%d“,x,y,z); ( D) read(“%d %d %d“, 20 若有说明语句: int a,b,c,*d=,则能正确从键盘读入 3个整数分别赋给变量 a、b、 c的语句是 _。 ( A) scanf(“%d %d %d“, ( B) scanf(“%d %d %d“, ( C)
9、 scanf(“%d %d %d“,a,b,d); ( D) scanf(“% d% d%d“,a,b,*d); 21 若变量已正确定义,要求程序段完成 5!的计算,不能完成此操作的程序段是 _。 ( A) for (i=1,p=1; i =5; i+ +)p* = i; ( B) for (i=1;i =5; i+ +) p=1;p*=i; ( C) i=1;p= 1;while( i =5) p* =i;i+ +; ( D) i=1;p=1;do p*=i;i+ +; while (i =5); 22 有以下程序 main( ) int i,s=0; for(i=1;i l0;i+=2)
10、s+=i+1 printf(“%dn“,s); 程序执行后的输出结果是 _。 ( A)自然数 1 9的累加和 ( B)自然数 1 10的累加和 ( C)自然数 1 9中奇数之和 ( D)自然数 1 10中偶数之和 23 下面程序的功能是输出以下形式的金字塔图案: * * * * * * * * * * * * * * * * main() int i,j; for(i=1;i =4;i+;) for(j=1;j =4-i;j+)printf(“ “); for(j=1; ;j =_;j+)printf(“*“); printf(“n“); 在下划线处应填入的是 _。 ( A) i ( B) 2
11、*i-1 ( C) 2*i+1 ( D) i+2 24 已定义以下函数: fun(char*p2,char*p1) while(*p2=*p1)!=0)p1+;p2+ 函数的功能是 _。 ( A)将 p1所指字符串复制到 p2所指内存空间 ( B)将 p1所指字符串的地址赋给指针 p2 ( C)对 p1和 p2两个指针所指字符串进行比较 ( D)检查 p1和 p2两个指针所指字符串中是否有 0 25 有以下程序: void sort(int a,int n) int i,j,t; for(i=0;i n-1;i+=2) for(j=i+2; j n;j+=2) if(ai a j)t=ai;a
12、i=aj;aj=t; main( ) int aa10=(1,2,3,4,5,6,7,8,9,10),i; sort(aa,10); for(i=0;i 10;i+) printf(“%d“,aai); printf(“n“); 其输出结果是 _。 ( A) 1,2,3,4,5,6,7,8,9,10, ( B) 10,9,8,7,6,5,4,3,2.,1, ( C) 9,2,7,4,5,6,3,8,1,10, ( D) 1,10,3,8,5,6,7,4,9,2, 26 设有定义 :int A,*pA=,以下 scanf语句中能正确为变量 A读入的数据是 _。 ( A) scanf (“%d“,
13、pA) ; ( B) scanf (“%d“,A) ; ( C) scanf (“%d“, ( D) scanf (“%d“,*pA) ; 27 有以下程序 : #include string.h void f(char*s,char*t) char k; k=*s; *s=*t; *t=k; s+; t-; if(*s) f(s,t); main( ) char str10=“abcdefg“,*p; p=str+strlen(str)/2+1; f(p,p-2); printf(%sn“,str); 程序运行后的输出结果是 _。 ( A) abcdef ( B) gfedcba ( C)
14、gbcdefa ( D) abedcfg 28 有以下程序: main( ) char s=“n123“; printf( % d, % dn“, 执行后的输出结果是 _。 ( A)赋初值的字符串有错 ( B) 6,7 ( C) 5,6 ( D) 6,6 29 有以下程序: main( ) char * p10=“abc“,“aabdfg“,“dcdbe“,“abbcf,“cd“; printf(“%dn“,strlen(p4); 执行后的输出结果是 _。 ( A) 2 ( B) 3 ( C) 4 ( D) 5 30 以下关于函数的叙述中正确的是 _。 ( A)每个函数都可以被其他函数调用 (
15、包括 main函数 ) ( B)每个函数都可以被单独编译 ( C)每个函数都可以单独运行 ( D)在一个函数内部可以定义另一个函数 31 下列函数定义中,会出现编译错误的是 _。 ( A) max(int x,int y,int *z) *z=x y? x:y; ( B) int max(int x,y) int z; z=x y? x;y; return z; ( C) max(int x,int y) int z; z=x y? x:y; return(z); ( D) int max(int x,int y) return(x y?x:y); 32 有以下程序: # include st
16、dio.h main() int a=1,2,3,4,5,6,7,8,9,10,11,12, *p=a+5, *q=NULL; *q=* (p+5); printf(“%d %dn“, *p, *q); 程序运行后的输出结果是 _。 ( A)运行后报错 ( B) 6 6 ( C) 6 11 ( D) 5 10 33 有以下程序: void fun(int*a,int i,int j) int t; if(i j) t=ai;ai=aj;aj=t; fun(a,+i,-j); main() int a=1,2,3,4,5,6,i; fun(a,0,5); for(i=0;i 6;i+) prin
17、tf(“%d“,ai); 执行后的输出结果是 _。 ( A) 6 5 4 3 2 1 ( B) 4 3 2 1 5 6 ( C) 4 5 6 1 2 3 ( D) 1 2 3 4 5 6 34 有以下程序: void fun(char *a, char*b) a=b;(*a)+;) main() char c1=A,c2=a, *p1, *p2; p1= p2= fun(p1,p2); printf(“%c%cn“, c1,c2); 程序运行后的输出结果是 _。 ( A) Ab ( B) aa ( C) Aa ( D) Bb 35 有以下程序: void f(int y,int *x) y=y
18、+ *x; *x;=*x+y; main() int x=2,y=4; f(y, 执行后的输出结果是 _。 ( A) 8 4 ( B) 8 8 ( C) 4 8 ( D) 4 2 36 设有定义语句: int x6=2,4,6,8,5,7,*p=x,i; 要求依次输出 x数组 6个元素中的值,不能完成此操作的语句是 _。 ( A) for(i=0;i 6;i+) printf(“%2d“,*(p+); ( B) for(i=0;i 6;i+) printf(“%2d“,*(p+i); ( C) for(i=0;i 6;i+)printf(“%2d“,*p+); ( D) for(i=0;i 6
19、;i+)printf(“%2d“,(*p)+); 37 设有定义: int n=0,*p=,则以下选项中,正确的赋值语句是 _。 ( A) p=1; ( B) *q=2 ( C) q=p ( D) *p=5 38 已有定义: int i,a10, *p;;,则合法的赋值语句是 _。 ( A) p=100; ( B) p=a5; ( C) p=a2+2; ( D) p=a+2; 39 下列选项中正确的语句组是 _。 ( A) char s8;s=“Beijing“; ( B) char *s;s=“Beijing“; ( C) char s8;s=“Beiiing“; ( D) char *s;
20、s=“Beijing“; 40 已定义以下函数: fun(int *p) return *p; 该函数的返回值是 _。 ( A)不确定的值 ( B)形参 p中存放的值 ( C)形参 p所指存储单元中的值 ( D)形参 p的地址值 41 问题处理方案的正确而完整的描述称为【 】。 42 数据结构分为逻辑结构和存储结构,循环队列属于【 】结构。 43 在面向对象方法中,类之间共享属性和操作的机制称为【 】。 44 在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块 (桩模块 )。其中【 】的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。 45 在数据管理
21、技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是【 】。 46 若 x和 y都是 double型变量,且 x的初值为 3.0, y的初值为 2.0,则表达式pow(y,fabs(x)的值为 【 】。 47 没有 char,a,b;,若要通过 a int fun(int x,int y) int m=3; return(x*y-m); main() int a=7,b=5; Printf(“%dn“,fun(a,b)/m); 49 下列执行后输出的结果是【 】。 main() intarr10,i,k=0 for(i=0;i 10;i+)atri=i
22、 for(i=1,i 4;i+) k+=arri+i; printf(“%dn“,k); 50 下面程序有两个 printf语句,如果第一个 printf语句输出的是 194,则第二个printf语句的输出结果是【 】 main() int a10=1,2,3,4,5,6,7,8,9,0,*p; p=a printf(“%xn“,p); printf(“%xn“,p+9); 国家二级( C语言)笔试模拟试卷 128答案与解析 1 【正确答案】 C 【试题解析】 顺序查找的最坏情况是所找的元素在线性表的最后,因此查找的比较次数是线性表的长度,即 n。 2 【 正确答案】 D 【试题解析】 程序是
23、软件的一部分,软件是一种逻辑实体,它的开发、运行都依赖计算机系统,因此出现了软件的移植问题。 3 【正确答案】 C 【试题解析】 DFD(Data Flow Diagram)是数据流图结构化分析的常用工具。软件设计中,常见的过程设计工具如下。 (1)图形工具:程序流程图, N-S, PAD,HIPO (2)表格工具:判定表 (3)语言工具: PDL(过程设计语言 ) 4 【正确答案】 C 【试题解析】 软件测试包括需求分析、结构功能模块设计、编制程序等阶 段。程序的测试可以由专门的测试人员来完成。程序经调试改错后还应进行再测试。 5 【正确答案】 C 【试题解析】 根据算法的特性,算法必须有。
24、个或多个输入,和 1个或多个输出。 6 【正确答案】 D 【试题解析】 选项 D中有两条语句。 7 【正确答案】 D 【试题解析】 本题考查 C语言基本知识。本题中 default是 C语言的关键字。 8 【正确答案】 D 【试题解析】 本题中 a是长整型变量,故应将一个长整型常量赋值给 a,选项A、 B、 C中的数值的末尾都没有加 L或 1,所以不正 确。 9 【正确答案】 B 【试题解析】 字符参与运算的值是其对应的 ASCII码,小写英文字符的 ASCII值比大写英文字符的 ASCII值大 32,执行语句 m=B+32;得出结果m=66+32=98,以 “%c”的格式输出结果为 b。 1
25、0 【正确答案】 C 【试题解析】 A、 D选项是关系运算表达式,在 C语言中,只要关系运算符两边是合法的表达式就可以了。 C选项中, %只能对整型进行运算,其中对 f进行了强制类型转换,但是转换的表达式错了,应为: (int)(f)。 11 【正确答案】 C 【试题解析】 选择项 C中逻辑运算 !的优先级高于关系运算、,因此该表达式不能正确表示数学关系 |x-y| 10。 12 【正确答案】 C 【试题解析】 本题考查 printf函数中附加格式字符的用法。本题中的 “2”是附加格式字符,其作用是指定变量 a的输出宽度为两列,而本题中 a的值为 1234,已经超过两列,所以按实际值输出,正确
26、答案为选项 C。 13 【正确答案】 B 【试题解析】 x是长整型变量,因此其输出格式字符应为 “%1d”,所以正确答案为选项 B。 14 【正确答案】 B 【 试题解析】 执行 if(a b c)时,首先判断 a b的值, 5 4结果为真 (C语言中规定真用 1表示 ),然后比较 1 c,结果为假,执行第一个 else后的语句,判断条件 (c-1 =d)=1是否成立,即判断 (3-1 =2)=1,结果为真,所以执行 printf(“%dn“,d+1),输出结果 3。 15 【正确答案】 D 【试题解析】 本题中选项 A、选项 B和选项 C中的 if条件语句都是在 a=0时输出 y, a!=0
27、时输出 x。 16 【正确答案】 C 【试题解析】 本题考查 switch语句的执行过 程。如果 case语句中没有 break语句,则顺序执行。因此第一次循环 i=0被输出了 3次, i=1被输出一次, i=2被输出两次。 17 【正确答案】 B 【试题解析】 此程序实现了将 p1) p7中的奇数求和的功能,因此,最后的输出结果是 j=13+15+17=45。 18 【正确答案】 D 【试题解析】 根据给定的数据输入格式: 123空格 456空格 789回车,第一个 scanf语句中,格式字符为 “%c”,只能得到一个字符 1,第二个 scanf语句中格式字符为 “%d”,变量 i得 到的数
28、值为 23,第三个 scanf语句中格式字符为 “%s”,遇到空格就自动结束,因此字符数组 s得到的是 “4560”。因而正确答案为选项 D。 19 【正确答案】 B 【试题解析】 选项 A和选项 D都不是 C语言中的输入方法,选项 C中的变量名前面缺少取地址符 “&”。 20 【正确答案】 A 【试题解析】 scanf函数中格式控制后面应为变量地址列表,因此选项 C和选项D都错误,选项 B中 “&d”是指针变量 d的地址,与题目不符。由题目可知指针变量 d中存放的是变量 c的地址,所以正确答案为选项 A。 21 【正确答案】 B 【试题解析】 选项 B中每次执行循环体都要执行 p=1,无法保
29、存上次的运算结果,执行完 while循环后 p=5。 22 【正确答案】 D 【试题解析】 本题中 s=(1+1)+(3+1)+(5+1)+(7+1)+(9+1)=2+4+6=8+10。 23 【正确答案】 B 【试题解析】 根据题意可知第二个 j循环结束的条件是第 i行打印出的 “*“的个数。 24 【正确答案】 A 【试题解析】 while循环语句的功能是将 p1所指存储单元的内容赋值给 p2所指的存储单 元,然后 p1+、 p2+,分别指向下一个存储单元,直到 p1指向符号串的结束字符 0为止。故函数的功能是将 p1所指字符串复制到 p2所指内存空间。 25 【正确答案】 C 【试题解析
30、】 函数 sort的功能是将 a0、 a2、 a4、 a6和 a8按照由大到小的次序排序,其他元素值不变。正确答案为 C。 26 【正确答案】 A 【试题解析】 选项 B中不是变量 A的地址,错误;选项 C是指针 pA的地址,错误;选项 D中 *pA表示变量 A的值,错误。 27 【正确答案】 B 【 试题解析】 p=str+strlen(str)/2+1=str+4,f(p,p-2)的功能是将 p4与 p2互换,p5与 p1互换, p6与 p0互换,最后的结果为 gfedcba。 28 【正确答案】 C 【试题解析】 本题中定义字符数组 s时没有指定数组长度, s初始化后存放的内容为 “n1
31、230“,其中 n和 是转义字符,所以 strlen(s)=5, sizeof(s)=6。 29 【正确答案】 A 【试题解析】 本题中 p4=“cd“,所以 strlen(p4)=2。 30 【正确答案】 B 【试题解析】 main函数是不能被其他函数调用的,函数可以单独编译,但不能单独运行, C语言中,一个函数内部是不能再定义另一函数的。 31 【正确答案】 B 【试题解析】 本题考查函数的定义。选项 B中函数形参 y没有说明数据类型。 32 【正确答案】 A 【试题解析】 指针 q没有指向确定的存储单元,故不能赋值。 33 【正确答案】 A 【试题解析】 本题考查指针变量作函数形参的问题
32、。指针变量作函数的形参,实现的是地址传递,形参的改变 可以影响实参。 fun由数的功能是将 a所指数组中的内容逆置。在 main函数中调用 fun函数后,实参数组 s中元素的值变为:a0=6、 a1=5、 a2=4、 a3=3、 a4=2、 a5=1。 34 【正确答案】 A 【试题解析】 本题中函数 fun的形参是指针变量,因此实参与形参之间是地址传递,即形参的改变可以影响实参。 main函数中 p1指向 c1,p2指向 c2,函数调用语句 fun(p1,p2)的功能是将 p2所指存储单元的内容的值加 1,即将 c2的值加 1得 c2 =b,故 printf函数 的输出结果为 Ab。 35
33、【正确答案】 A 【试题解析】 函数 的形参 Y是简单变量, x是地址变量,故 Y=4,x=2+4+2=8 36 【正确答案】 D 【试题解析】 选项 D中 (*p)+的意思是将 p所指向的存储单元的值加 1,与题意不符,错误。 37 【正确答案】 D 【试题解析】 本题中 n是 int型变量, p是指向 int型的指针变量, q是指向指针的指针变量,故正确答案为 D。 38 【正确答案】 D 【试题解析】 因 p是指针变量,故选项 D正确。 39 【正确答案】 D 【试题解析】 C语言规定可以对字符指针变量直接赋字符串常量,但不能给字符数组直接赋字符串常量,对字符数组赋字符串常量应使用的是
34、strcpy函数。正确答案为选项 D。 40 【正确答案】 C 【试题解析】 函数 fun的形参是指针变量, *p的含义是指针变量 p所指存储单元的内容,因此正确答案为 C。 41 【正确答案】 算法 【试题解析】 算法给出了问题处理方案的准确而完整的描述。 42 【正确答案】 存储 【试题解析】 循环链表是在线性链表的基础上增加了一个表头结点指向第一个元素,并使链表中的最后一个结点指向表头结点形成一个环状链,它给出了数据的逻辑结构在计算机空间的存储形式,因此是一种存储结构。 43 【正确答案】 继承 【试题解析】 继承是类间的一种基本关系,是在某个类的层次关联中不同的类共享属性和操作的一种机
35、制。在 “is-a”的层次关联中,一个父类可以有多个子类,这些子类都是父类的特侧,父类描述了这些子类的公共属性和操作。一个子类可以继承它的父类 (或祖先类 )中的属性和操作。这些属性和操作在子类中不必定义,子类中还可以定义它自己的属性和操作。一个子类只有唯一的一个父 类,这种继承称为单一继承。一个子类也可以有多个父类,它可以从多个父类中继承特性,这种继承称为多重继承。例如, “水陆两用交通工具 ”类既可继承 “陆上交通工具 ”类,又可继承 “水上交通工具 ”类的特性。 44 【正确答案】 驱动模块 【试题解析】 承接模块 (桩模块 )是用于代替被测试模块调用的其他模块,它仅作少量的数据操作,是
36、一个模拟子程序,不必将子模块的所有功能带入。 45 【正确答案】 数据库系统 【试题解析】 数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。 (1)人工管理阶段。这一阶段的计算机主要用于科技计算。外存只有磁带、卡片和纸带等,软件只有汇编语言,尚无数据管理方面的软件。数据处理方式是批处理。 (2)文件系统阶段。文件系统是数据库系统发展的初级阶段,它提供了简单的数据共享与数据管理能力,但是它无法提供完整的、统一的管理和数据共享的能力。由于它的功能简单,因此它附属于操作系统而不能成为独立的软件,目前一般将其看成仅是数据库系统的雏形,而不是真正的数据库系统。 (3)数据库系
37、统阶段。数据库阶段用数据模型表示复杂的数据模型,有较高的数据独立性。数据库系统为用户提供了 方便的用户接口,用户可使用查询语言或终端命令操作数据库,也可以用程序方式 (用 COBOL、 C一类高级语言和数据库语言编制的程序 )操作数据库。数据库管理系统提供了数据控制功能。 46 【正确答案】 8 【试题解析】 fabs函数功能是求 x的绝对值,计算结果为 double型。 pow功舱是计算 x的 y次方的值,计算结果同样为 double型。所以本题表达式相当于 2.0的 3.0次方,结果为 8.000000。 47 【正确答案】 10000010 【试题解析】 运算 “&”的规则是只有当两个相
38、应的二进制位 都为 1时,该位的结果才为 1。要保留第 2、 8位,只要将其与二进制数 10000010相与。 48 【正确答案】 2 【试题解析】 本题变量 m既是外部变量 (值是 13),又是 fun函数的局部变量 (值为 3)。函数 fun(x*y-m)的值为 7*5-3=32, 在 main函数中, fun(a,b)/m中的 m外部变量的值 13,因此输出 2。 49 【正确答案】 12 【试题解析】 本题的第 个 for循环用于始数组 arr赋初值,第二个 for循环用于求和运算。由于第二个 for循环初始值为 1,而循环条件为 i 4, 所以求的是arr1到 arr3及 i的和,所以输出结果为 12。 50 【正确答案】 la6 【试题解析】 对于指针变量的运算,就是对地址的运算。本题中由于指针指向的是整型变量,所以,使指针变量移动 9个位置也就是移动 18个字节。注意,本题是以十六进制输出的。