1、国家二级( C语言)笔试模拟试卷 153及答案与解析 1 程序流程图中带有箭头的线段表示的是 ( A)图元关系 ( B)数据流 ( C)控制流 ( D)调用关系 2 下面不属于软件设计原则的是 ( A)抽象 ( B)模块化 ( C)自底向上 ( D)信息隐蔽 3 下列选项中,不属于模块间耦合的是 ( A)数据耦合 ( B)标记耦合 ( C)异构耦合 ( D)公共耦合 4 下列叙述中,不属于软件需求规格说明书的作用的是 ( A)便于用户、开发人员进行理解和交流 ( B)反映出用户问题的结构,可以作 为软件开发工作的基础和依据 ( C)作为确认测试和验收的依据 ( D)便于开发人员进行需求分析 5
2、 算法的时间复杂度是指 ( A)执行算法程序所需要的时间 ( B)算法程序的长度 ( C)算法执行过程中所需要的基本运算次数 ( D)算法程序中的指令条数 6 已知数据表 A中每个元素距其最终位置不远,为节省时间,应采用的算法是 ( A)堆排序 ( B)直接插入排序 ( C)快速排序 ( D) B)和 C) 7 栈底至栈顶依次存放元素 A、 B、 C、 D,在第五个元素 E入栈前,栈中元素可以出栈,则出栈序列可能是 ( A) ABCED ( B) DCBEA ( C) DBCEA ( D) CDABE 8 数据库设计包括两个方面的设计内容,它们是 ( A)概念设计和逻辑设计 ( B)模式设计和
3、内模式设计 ( C)内模式设计和物理设计 ( D)结构特性设计和行为特性设计 9 关系表中的每一横行称为一个 ( A)元组 ( B)字段 ( C)属性 ( D)码 10 设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份证号 ),课程 C(课号,课名 ),选课 SC(学号,课号,成绩 ),则表 SC的关键字 (键或码 )为 ( A)课号,成绩 ( B)学号,成绩 ( C)学号,课号 ( D)学号,姓名,成绩 11 程序流程图中带有箭头的线段表示的是 ( A)图元关系 ( B)数据流 ( C)控制流 ( D)调用关系 12 下面不属于软件设计原则的是 ( A)抽象 ( B)模块化
4、( C)自底向上 ( D)信息隐蔽 13 下列选项中,不属于模块间耦合的是 ( A)数据耦合 ( B)标记耦合 ( C)异构耦合 ( D)公共耦合 14 下列叙述中,不属于软件需求规格说明书的作用的是 ( A)便于用户、开发人员进行理解和 交流 ( B)反映出用户问题的结构,可以作为软件开发工作的基础和依据 ( C)作为确认测试和验收的依据 ( D)便于开发人员进行需求分析 15 算法的时间复杂度是指 ( A)执行算法程序所需要的时间 ( B)算法程序的长度 ( C)算法执行过程中所需要的基本运算次数 ( D)算法程序中的指令条数 16 已知数据表 A中每个元素距其最终位置不远,为节省时间,应
5、采用的算法是 ( A)堆排序 ( B)直接插入排序 ( C)快速排序 ( D) B)和 C) 17 栈底至栈顶依次存放元素 A、 B、 C、 D,在第五个 元素 E入栈前,栈中元素可以出栈,则出栈序列可能是 ( A) ABCED ( B) DCBEA ( C) DBCEA ( D) CDABE 18 数据库设计包括两个方面的设计内容,它们是 ( A)概念设计和逻辑设计 ( B)模式设计和内模式设计 ( C)内模式设计和物理设计 ( D)结构特性设计和行为特性设计 19 关系表中的每一横行称为一个 ( A)元组 ( B)字段 ( C)属性 ( D)码 20 设有表示学生选课的三张表,学生 S(学
6、号,姓名,性别,年龄,身份证号 ),课程 C(课号,课名 ),选课 SC(学 号,课号,成绩 ),则表 SC的关键字 (键或码 )为 ( A)课号,成绩 ( B)学号,成绩 ( C)学号,课号 ( D)学号,姓名,成绩 21 以下 4个选项中 ,不能看作一条语句的是 ( A) ; ( B) a=5,b=2.5,c=3.6; ( C) if(ab) if(ab) a=b; c=a; if(c!=a) c=b; printf(“%d,%d,%dn“,a,b,c); 其输出结果是 ( A)程序段有语法错 ( B) 3,5,3 ( C) 3,5,5 ( D) 3,5,7 30 若有定义 :float
7、x=1.5;int a=1,b=3,c=2;,则正确的 switch语句是 ( A) switch(x) case 1.0:printf(“*n“); case 2.0:printf(“*n“); ( B) switch(int)x); case 1:printf(“*n“); case 2:printf(“*n“); ( C) switch(a+b) case 1:printf(“*n“); case 2+1:printf(“*n“); ( D) switch(a+b) case1:printf(*n); casec:printf(*n); 31 以下 4个选项中 ,不能看作一条语句的是 (
8、 A) ; ( B) a=5,b=2.5,c=3.6; ( C) if(ab) if(ab) a=b; c=a; if(c!=a) c=b; printf(“%d,%d,%dn“,a,b,c); 其输出结果是 ( A)程序段有语法错 ( B) 3,5,3 ( C) 3,5,5 ( D) 3,5,7 40 若有定义 :float x=1.5;int a=1,b=3,c=2;,则正确的 switch语句是 ( A) switch(x) case 1.0:printf(“*n“); case 2.0:printf(“*n“); ( B) switch(int)x); case 1:printf(“*
9、n“); case 2:printf(“*n“); ( C) switch(a+b) case 1:printf(“*n“); case 2+1:printf(“*n“); ( D) switch(a+b) case1:printf(*n); casec:printf(*n); 41 下列程序的输出结果是 #include “stdio.h“ main() int i,a=0,b=0; for(i=1;i0;j+=2) s=10*s+pij-0; printf(“%dn“,s); 该程序的输出结果是 ( A) 69825 ( B) 63825 ( C) 6385 ( D) 693825 47
10、有定义语句 :char s10;,若要从终端给 s输 入 5个字符 ,错误的输入语句是 ( A) gets( ( B) scanf(“%s“,s+1); ( C) gets(s); ( D) scanf(“%s“,s1); 48 以下叙述中错误的是 ( A)在程序中凡是以 “#“开始的语句行都是预处理命令行 ( B)预处理命令行的最后不能以分号表示结束 ( C) #define MAX 是合法的宏定义命令行 ( D) C程序对预处理命令行的处理是在程序执行的过程中进行的 49 设有以下说明语句 typedef struct int n; char ch8; PER; 则下面叙述中正确的是 (
11、A) PER 是结构体变量名 ( B) PER是结构体类型名 ( C) typedef struct 是结构体类型 ( D) struct 是结构体类型名 50 以下叙述中错误的是 ( A) gets函数用于从终端读入字符串 ( B) getchar函数用于从磁盘文件读入字符 ( C) fputs函数用于把字符串输出到文件 ( D) fwrite函数用于以二进制形式输出数据到文件 51 以下能正确定义一维数组的选项是 ( A) int a5=0,1,2,3,4,5; ( B) char a=0,1,2,3,4,5,0; ( C) char a=A,B,C; ( D) int a5=“0123“
12、; 52 有以下程序 #include main() char p=a, b, c,q10= a, b, c; printf(“%d%dn“,strlen(p),strlen(q); 以下叙述中正确的是 ( A) 在给 p和 q数组置初值时 ,系统会自动添加字符串结束符 ,故输出的长度都为 3 ( B)由于 p数组中没有字符串结束符 ,长度不能确定 ,但 q数组中字符串长度为 3 ( C)由于 q数组中没有字符串结束符 ,长度不能确定 ,但 p数组中字符串长度为 3 ( D)由于 p和 q数组中都没有字符串结束符 ,故长度都不能确定 53 有以下程序 #include #include i,j
13、; for(i=0;istrlen(sj) t=si;si:sj;sj=t; main() fun(ss,5); printf(“%s,%sn“,ss0,ss4); 程序的运行结果是 ( A) xy,aaaacc ( B) aaaacc,xy ( C) bcc,aabcc ( D) aabcc,bcc 54 有以下程序 #include int f(int x) int y; if(x=0|x=1) return(3); -f(x-2); return y; main() int z; z=f(3); printf(“%dn“,z); 程序的运行结果是 ( A) 0 ( B) 9 ( C) 6
14、 ( D) 8 55 下面程序段的运行结 果是 char str=“ABC“,*p=str; printf(“%dn“,*(p+3); ( A) 67 ( B) 0 ( C)字符 C的地址 ( D)字符 C 56 若有以下定义 : struct link int data; struct link *next; a,b,c,*p,*q; 且变量 a和 b之间已有如下图所示的链表结构 : 指针 p指向变量 a,q指向变量 c。则能够把 c插入到 a和 b 之间并形成新的链表的语句组是 : ( A) a.next=c; c.next=b; ( B) p.next=q; q.next=p.next;
15、 ( C) p-next= q-next=p-next; ( D) (*p).next=q; (*q).next= 57 对于下述程序 ,在方式串分别采用 “wt“和 “wb“运行时 ,两次生成的文件 TEST的长度分别是 #include void main() FILE *fp=fopen(“TEST“,); fputc(A,fp);fputc(n,fp); fputc(B,fp);fputc(n,fp); fputc(C,fp); fclose(fp); ( A) 7字节、 7字节 ( B) 7字节、 5字节 ( C) 5字节、 7字节 ( D) 5字节、 5字节 58 变量 a中的数据
16、用二进制表示的形式是 01011101,变量 b中的数据用二进制表示的形式是 11110000。若要求将 a的高 4位取反 ,低 4位不变 ,所要执行的运算是 ( A) ab ( B) a|b ( C) aj+=2) s=10*s+pij-0; printf(“%dn“,s); 该程序的输出结果是 ( A) 69825 ( B) 63825 ( C) 6385 ( D) 693825 67 有定义语句 :char s10;,若要从终端给 s输入 5个字符 ,错误的输入语句是 ( A) gets( ( B) scanf(“%s“,s+1); ( C) gets(s); ( D) scanf(“%
17、s“,s1); 68 以下叙述中错 误的是 ( A)在程序中凡是以 “#“开始的语句行都是预处理命令行 ( B)预处理命令行的最后不能以分号表示结束 ( C) #define MAX 是合法的宏定义命令行 ( D) C程序对预处理命令行的处理是在程序执行的过程中进行的 69 设有以下说明语句 typedef struct int n; char ch8; PER; 则下面叙述中正确的是 ( A) PER 是结构体变量名 ( B) PER是结构体类型名 ( C) typedef struct 是结构体类型 ( D) struct 是结构体类型名 70 以下叙述中错误的是 ( A) gets函数用
18、于从终端读入字符串 ( B) getchar函数用于从磁盘文件读入字符 ( C) fputs函数用于把字符串输出到文件 ( D) fwrite函数用于以二进制形式输出数据到文件 71 以下能正确定义一维数组的选项是 ( A) int a5=0,1,2,3,4,5; ( B) char a=0,1,2,3,4,5,0; ( C) char a=A,B,C; ( D) int a5=“0123“; 72 有以下程序 #include main() char p=a, b, c,q10= a, b, c; printf(“%d%dn“,strlen(p),strlen(q); 以下叙述中正确的是 (
19、 A)在给 p和 q数组置初值时 ,系统会自动添加字符串结束符 ,故输出的长度都为 3 ( B)由于 p数组中没有字符串结束符 ,长度不能确定 ,但 q数组中字符串长度为 3 ( C)由于 q数组中没有字符串结束符 ,长度不能确 定 ,但 p数组中字符串长度为 3 ( D)由于 p和 q数组中都没有字符串结束符 ,故长度都不能确定 73 有以下程序 #include #include for(i=0;istrlen(sj) t=si;si:sj;sj=t; main() fun(ss,5); printf(“%s,%sn“,ss0,ss4); 程序的运行结果是 ( A) xy,aaaacc (
20、 B) aaaacc,xy ( C) bcc,aabcc ( D) aabcc,bcc 74 有以下程序 #include int f(int x) int y; if(x=0|x=1) return(3); -f(x-2); return y; main() int z; z=f(3); printf(“%dn“,z); 程序的运行结果是 ( A) 0 ( B) 9 ( C) 6 ( D) 8 75 下面程序段的运行结果是 char str=“ABC“,*p=str; printf(“%dn“,*(p+3); ( A) 67 ( B) 0 ( C)字符 C的地址 ( D)字符 C 76 若有
21、以下定 义 : struct link int data; struct link *next; a,b,c,*p,*q; 且变量 a和 b之间已有如下图所示的链表结构 : 指针 p指向变量 a,q指向变量 c。则能够把 c插入到 a和 b 之间并形成新的链表的语句组是 : ( A) a.next=c; c.next=b; ( B) p.next=q; q.next=p.next; ( C) p-next= q-next=p-next; ( D) (*p).next=q; (*q).next= 77 对于下述程序 ,在方式串分别采用 “wt“和 “wb“运行时 ,两次生成的文件 TEST的长度
22、分别是 #include void main() FILE *fp=fopen(“TEST“,); fputc(A,fp);fputc(n,fp); fputc(B,fp);fputc(n,fp); fputc(C,fp); fclose(fp); ( A) 7字节、 7字节 ( B) 7字节、 5字节 ( C) 5字节、 7字节 ( D) 5字节、 5字节 78 变量 a中的数据用二进 制表示的形式是 01011101,变量 b中的数据用二进制表示的形式是 11110000。若要求将 a的高 4位取反 ,低 4位不变 ,所要执行的运算是 ( A) ab ( B) a|b ( C) a sca
23、nf(“%f%f%f“, if(【 】 )printf(“YESn“);/*a b c能构成三角形 */ else printf(“NOn“);/*a b c不能构成三角形 */ 93 下面程序的运行结果是 :【 】。 fun(int t,int n) int i,m; if(n=1)return t0; else if(n=2)m=fun(t,n-1); return m; main() int a=11,4,6,3,8,2,3,5,9,2; printf(“%dn“,fun(a,10); 94 设 int a=5,b=6,表达式 (+a=b-)?+a:-b的值是【 】。 95 执行下面程序段后 ,k的值是【 】。 r=1;n=203;k=1 do k*=n%10*r;n/=10;r+;while(n); 96 下面程序的 功能是 :将字符数组 a中下标值为偶数的元素从小到大排列 ,其他元素不变。请填空。 #include #include main() char a=“clanguage“,t; int i,j,k; k=strlen(a); for(i=0;i=k-2;i+=2) for(j=i+2;j=k; j+=2;) if(【 】 )
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1