1、国家二级( C语言)笔试模拟试卷 47及答案与解析 1 在一个具有 n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂性为_。 ( A) O(1) ( B) O(n) ( C) O(n2) ( D) O(log2n) 2 若进栈序列为 1、 2、 3、 4、 5,并且在它们进栈的过程中可以进行出栈操作,那么不可能是出栈序列的是 _。 ( A) 1, 3, 2, 5, 4 ( B) 1, 2, 5, 4, 3 ( C) 4, 3, 2, 1, 5 ( D) 3, 5, 1, 4, 2 3 线性结构中的一个结点代表一个数据元素,通常要求同 一线性结构的所有结点所代表的数据元素具有相同的特点,
2、这意味着 _。 ( A)每个结点所代表的数据元素都一样 ( B)每个结点所代表的数据元素包含的数据项的个数要相等 ( C)不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致 ( D)结点所代表的数据元素有同一特点 4 下列术语中,与数据的存储结构有关的是 _。 ( A)队列 ( B)栈 ( C)二叉树 ( D)堆 5 结构化分析方法是一种面向 _的需求分析方法。 ( A)对象 ( B)数据结构 ( C)控制流 ( D)数据流 6 数据库系统的核心部分是 _。 ( A)数据模型 ( B)数据库 ( C)数据库管理系统 ( D)计算机硬件 7 下列选项中,合法的 C语言关键字是 _
3、。 ( A) VAR ( B) cher ( C) integer ( D) default 8 能正确表示逻辑关系 “a10或 a0”的 C语言表达式是 _。 ( A) a =10 or a =0 ( B) a =0|a =10 ( C) a =10 ( D) int n=5; int ann+2; 10 经过以下语句定义后,表达式 z+=x y?+x: +y的值是 _。 int x=1,y=2, z=3; ( A) 2 ( B) 3 ( C) 6 ( D) 5 11 假定所有变量均已正确说明,以下程序段运行后, x的值是 _。 a=b=c=0;x=35; if(!a) x-; else i
4、f(b); if(c)x=3; else x=4; ( A) 34 ( B) 4 ( C) 35 ( D) 3 12 在执行以下程序时,为了使输出结果为: t=4,则给 a和 b输入的值应满足的条件是 _。 main () int s, t, a, b; scanf(“%d, %d“, for(i=0;i 4;i+=2) printf(“%d “,pi); ( A) 5 2 ( B) 5 1 ( C) 5 3 ( D) 9 7 24 若 a, b, c1, c2, x, y均是整型变量,正确的 switch语句是 _。 ( A) switch(a+b); case 1:y=a+b;break;
5、 case 0:y=a-b;break; ( B) switch(a*a+b*b) case 3; case 1:y=a+b;break; case 3:y=b-a;break; ( C) switch a case c1:y=a-b;break; case c2;x=a*b;break; default:x=a+b; ( D) switch(a-b) default:y=a*b;break; case 3:case 4:x=a+b;break; case 10:case11:y=a-b;break; 25 有以下程序段: int k=0; while(k=1)k+;while循环执行的次数是
6、 _。 ( A)无限次 ( B)有语法错,不能执行 ( C)一次也不执行 ( D)执行一次 26 若有以下定义和语句,则输出结果是 _。 int u=010,v=0x10,w=10; printf(“%d,%d,%dn,u,v,w); ( A) 8, 16, 10 ( B) 10, 10, 10 ( C) 8, 8, 10 ( D) 8, 10, 10 27 表示关系 x =y =z的 C语言表达式为 _。 ( A) (x =y)x+x-=x-x; ( A) 10 ( B) 20 ( C) 40 ( D) 30 30 设 x和 y均为 int型变量,则以下语句: “x+=y;y=x-y;x-=
7、y;”的功能是 _。 ( A)把 x和 y按从大到小排列 ( B)把 x和 y按从小到大排列 ( C)无确定结果 ( D)交换 x和 y中的值 31 已知在 ASC 代码中,字母 A的序号为 65,以下程序的输出结果是 _。 #include stdio.h main() char c1=A,c2=Y; printf(“%d,%dn“,c1,c2); ( A) 65, 90 ( B)因 输出格式不合法,输出错误信息 ( C) A, Y ( D) 65, 89 32 若输入 ab,程序运行结果为 _。 main() static char a2; scanf(“%s“,a); printf(“%
8、c,%c“,a1,a2); ( A) a,b ( B) a, ( C) b, ( D)程序出错 33 以下程序段的输出结果是 _。 char *p=“abodefgh“; p+=3; printf(“%dn“,strlen(strcpy(p,“12345“); ( A) 8 ( B) 12 ( C) 5 ( D) 7 34 执行下面的程序段后, b的值为 _。 int x=35; char z=A;int b;b=(x ( A) 0 ( B) 1 ( C) 2 ( D) 3 35 以下程序段有错,错误原因是 _。 main() int *p,i;char *q,ch; p=q=*p=40;*p
9、=*q; ( A) p和 q的类型不一致,不能执行 *p=*q;语句 ( B) *p中存放的是地址值,因此不能执行 *p=40;语句 ( C) q没有指向具体的存储单元,所以 *q没有实际意义 ( D) q虽指向了具体的存储单元,但该单元中没有确定的值,所以不能执行 *p=*q;语句 36 下面程序段的输出结果是 _。 char *s=“abcde“; s+=2;printf(“%d“,s); ( A) cde ( B)字符 c ( C)字符 c的地址 ( D)无确定的输出结果 37 设有语句: char str1=“string“, str28, *ste3, *str4=“string“;
10、,则下列不是对库函数 strcpy的正确调用的是 _。 ( A) strcpy(str1,“HELLOI“); ( B) strcpy(str2,“HELLO2“); ( C) strcpy(str3,“HELLOY“); ( D) strcpy(str4,“HELLO4“); 38 以下程序的输出结果是 _。 main() int a33=1,2,3,4,5,6,i,j,s=0; for(i=0;i 3;i+) for(j=0;j =i;j+) s+=aij; printf(“%dn“,s); ( A) 18 ( B) 19 ( C) 20 ( D) 21 39 下面程序的输出是 _。 fu
11、n(char *s,int p1,int p2) char c; while(p1p2) c=sp1;sp1=sp2;sp2=c;p1+;p2-; main() char a=“ABCDEFG“,k,*p; fun(a,0,2);fun(a,4,6); printf(“%sn “,a); ( A) ABCDEFG ( B) DEFGABC ( C) GFEDCBA ( D) CBADGFE 40 若有定义: int a5,*p=a;,则对 a数组元素地址的正确引用是 _。 ( A) p+5 ( B) *a+1 ( C) p=a=*p+b; ( A) 11 ( B) 12 ( C) 10 ( D
12、)编译出错 42 变量 a所占内存字节数是 _。 union U char st4; int i; long 1; ; struct A int c; union U u; a; ( A) 4 ( B) 5 ( C) 6 ( D) 8 43 有如下定义: struct personchar name9;int age;; struct person class10=“Johu“,17,“Paul“,19,“Mary“,18,“Adam“,16,;根据上述定义,能输出字母M的语句是 _。 ( A) printf(“%cn“,class3.name); ( B) printf(“%cn“,clas
13、s3.name1); ( C) printf(“%cn“,class2.name1); ( D) printf(“%cn“,class2.nameO); 44 以下对结构体类型变量的定义中,不正确的是 _。 ( A) typedef struct aa int n; float m; AA; AA td1; ( B) #define AA struct aa AA int n; float m; td1; ( C) struct int n; float m; aa; srtuct aa td1: ( D) struct int n; float m; tdl; 45 设有以下说明语句: st
14、ruct ex int x;float y;char z; example;在下面的叙述中,不正确的一条是 _。 ( A) struct是结构体类型的关键词 ( B) example是结构体类型名 ( C) x, y, 2都是结构体成员名 ( D) struct ex是结构体类型 46 请选出以下程序段的输出结果 _。 #include stdio.h #define MIN(x,y) (x) (y)?(x):(y) main() int i,j,k;i=10;j=15; k=10*MIN(i,j); printf(“%dn“,k); ( A) 15 ( B) 100 ( C) 10 ( D)
15、 150 47 设有 int a=15,b=240;,则表达式 (a printf(“%4.1f/n“,S(a+b); ( A) 49.5 ( B) 9.5 ( C) 22 ( D) 45 49 若 fp是指向某文件的指针,已读到此文件末尾,则库函数 feof(fp)的返回值是_。 ( A) EOF ( B) 0 ( C)非零值 ( D) NULL 50 若有下面的说明和定义: union un char s10; long d3; ua; struet std char c10;double d;int a; union un vb; a;则 printf(“%dn“, sizeof(str
16、uct std)+sizeof(union un);输出的值为 _。 ( A) 34 ( B) 52 ( C) 54 ( D) 64 51 在运算过程中,能够使空表与非 空表的运算统一的结构是【 】。 52 软件工程研究的内容主要包括:【 】技术和软件工程管理。 53 与结构化需求分析方法相对应的是【 】方法。 54 关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、【 】和自定义完整性。 55 数据模型按不同的应用层次分为三种类型,它们是【 】数据模型、逻辑数据模型和物理数据模型。 56 若有定义 int m=5,y=2,则执行表达式 y+=y-=m*=y后, y的值为【 】。 5
17、7 若 x和 y都是 buble型变量,且 x的初值为 3.0, y的初值为 2.0,则表达式pow(y,fabs(x)的值为【 】。 58 没有 char a,b;,若要通过 a c=a+c+; return(c); main() int a=2,i,k; for(i=0;i 2;i+) k=f(a+); prinf(“%dn“,k); 60 下面程序执行后输出的结果是【 】。 int m=13; 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); 61 下列程序
18、执行后输出的结果是【 】。 main() int arr10,i,k=0; for(i=0;i 10;i+)arri=i; for(i=1;i 4;i+) k+=arri+i; printf(“%dn“,k); 62 下列程序执行后输出的结果是【 】。 struct s int x,y;data2=10,100,20,200; main() struct s *p=data; printf(“%dn“,+(p- x); 63 下面程序有两个 printf语句,如果第一个 printf语句输出的是 194,则第二个printf语句的输出结果是【 】。 main() int a10=1,2,3,4
19、,5,6,7,8,9,0,*p; p=a; printf(“%xn“,p); printf(“%n“,p+9); 64 以下函数的功能是计算 s=1+1/21+1/3!+1/n! ,请填空。 double fun(int n) double s=0.0,fac=1.0; int i,k=1; for(i=1;i =n;i+) 【 】 ; fac=fac/k; s=s+fac; 65 下面程序的运行结果是【 】。 main() unsigned a=0112,x; x=a 3; printf(“x=%o“,x); 66 函数 delete(s,i,n)的作用是从字符串 s中删除从 第 i个字符开
20、始的 n个字符,请填空。 void delete(char s,int i,int n) int j,k,length=0; whiles(length) 【 】 ; -i; j=i; if(【 】 ) k=i+n; if(i+n =length) while(k length) sj+=sk+; sj=0; 67 下述函数统计 个字符串中的单词个数,单词是指处在空格之间的字符序列,请填空。 int word(char *s) int num=0,flag=0; while(*s) if(【 】 =) flag=0; else if(【 】 )flag=1;num+ return【 】 ; 国
21、家二级( C语言)笔试模拟试卷 47答案与解析 1 【正确答案】 B 2 【正确答案】 D 3 【正确答案】 C 4 【正确答案】 C 5 【正确答案】 D 6 【正确答案】 C 7 【正确答案】 D 8 【正确答案】 D 9 【正确答案】 A 10 【正确答案】 C 11 【正确答案】 B 12 【正确答案】 C 13 【正确答案】 A 14 【正确答案】 B 15 【正确答案】 D 16 【正确答案】 A 17 【正确答案】 C 18 【正确答案】 B 19 【正确答案】 C 20 【正确答案】 C 21 【正确答案】 C 【试题解析】 (*pd)M中,由于一对圆 括号的存在,所以 *首先
22、与 prt结合,说明 ptr是一个指针变量,然后与 M结合,说明 prt的基类型是一个包含 M个 int型元素的数组。 22 【正确答案】 C 【试题解析】 sizeof(float)返回 float型变量所占存储单元的字节数。 23 【正确答案】 C 【试题解析】 首先使指针 p指向 x11,即 5,然后通过循环输出 p0和 p2。 24 【正确答案】 D 【试题解析】 由 switch语句的格式排除 A、 C项,选项 B中出现了两个相同的case标号。 25 【正确答案】 A 【试题解析】 本题的循环条件是表达式 “k=1”,表达式值永远为 1,所以是无限循环。 26 【正确答案】 A 【
23、试题解析】 u被八进制数 10赋值,等于十进制数 8: v被十六进制数 10赋值,等于十进制数 16; w直接被十进制数 10赋值;因此分别输出十进制数 8,16, 10。 27 【正确答案】 A 【试题解析】 C语言中没有关键词 and,逻辑与运算符是 ”求的是每 项的值,所以 k的值应为 n!,在求 n!的时候,可以用上次循环阶乘的值乘 i,就可以直接得此次 n!,故本题填 k=k*i。 65 【正确答案】 x=11 【试题解析】 在对无符号数的右移是高位补 0。 66 【正确答案】 length+ i length 【试题解析】 第 个循环极有 可能是计算串的长度,在 i =length
24、时字符才被删除,被删除的是从第 i个到笫 i+n或最后 个间的所有字符。删除前,应判断 i=length。由于已经进行了 -i运算,故实际应填入 i length。 67 【正确答案】 *s+ flag=0 或 *(s-1)= num 【试题解析】 在统计字符串单词个数的算法中,本题的 flag是为了记录 个单词是否结束。第 18空应填 *s+;如果某个字符不是空格,则必须判断它是否是单词,如是,则使得 flag的标志为 1, num的值加 1。本题判断方法是:先判断 s所指向的字符是否为空格,如果是则使得 flag=0,否则判断前 个字符是否是空格,如果是则说明这个字符是 个单词的开始,将 flag标志为 1, num的值加 1,如果不是,则不必记录。故第 19空应填 flag=0或 *(s-1)=;最后 个空格需填写的是返回的单词的个数,即 num。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1