[计算机类试卷]国家二级(C语言)机试模拟试卷145及答案与解析.doc
《[计算机类试卷]国家二级(C语言)机试模拟试卷145及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级(C语言)机试模拟试卷145及答案与解析.doc(31页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级( C语言)机试模拟试卷 145及答案与解析 一、选择题 1 下列叙述中错误的是 ( )。 ( A)算法的时间复杂度与问题规模无关 ( B)算法的时间复杂度与计算机系统无关 ( C)算法的时间复杂度与空间复杂度没有必然的联系 ( D)算法的空间复杂度与算法运行输出结果的数据量无关 2 设表的长度为 20。则在最坏情况下,冒泡排序的比较次数为 ( )。 ( A) 190 ( B) 20 ( C) 19 ( D) 90 3 下列叙述中正确的是 ( )。 ( A)带链栈的栈底指针是随栈的操作而 动态变化的 ( B)若带链队列的队头指针与队尾指针相同,则队列为空 ( C)若带链队列的队头指针与
2、队尾指针相同,则队列中至少有一个元素 ( D)带链栈的栈底指针是固定的 4 设 棵树的度为 3,共有 27个结点,其中度为 3, 2, 0的结点数分别为 4, 1,10。该树中度为 1的结点数为 ( )。 ( A) 12 ( B) 13 ( C) 11 ( D)不可能有这样的树 5 下面描述中正确的是 ( )。 ( A)好的软件设计应是高内聚低耦合 ( B)内聚性和耦合性无关 ( C)内聚性是指多个模块间相互连接的紧 密程度 ( D)耦合性是指一个模块内部各部分彼此结合的紧密程度 6 某系统总体结构如下图所示 该系统结构图的最大扇出数、最大扇入数的总和是 ( )。 ( A) 5 ( B) 7
3、( C) 4 ( D) 8 7 下面属于应用软件的是 ( )。 ( A)人事管理系统 ( B) Oracle数据库管理系统 ( C) C+编译系统 ( D) ios操作系统 8 下面选项中不是关系数据库基本特征的是 ( )。 ( A)不同的列应有不同的数据类型 ( B)不同的列应有不同的列名 ( C)与行的次序无关 ( D)与列 的次序无关 9 工厂生产中所需的零件可以存放在多个仓库中,而每一仓库中可存放多种零件。则实体仓库和零件间的联系是 ( )。 ( A)多对多 ( B)一对多 ( C)多对一 ( D)一对一 10 学生和课程的关系模式定义为 S(S#, Sn, sd, Dc, Sa)(其
4、属性分别为学号、姓名、所在系、所在系的系主任、年龄 ); C(C撑, cn, P撑 )(其属性分别为课程号、课程名、先选课 ); SC(S#, C#, G)(其属性分别学号、课程号和成绩 )。 关系中包含对主属性传递依赖的是 ( )。 ( A) S#S d, SdDc ( B) S#Sd ( C) S#Sd , (S#, C#)G ( D) C#P# , (S#, C#)G 11 以下叙述中正确的是 ( )。 ( A)计算机能直接运行未经编译的 C语言程序 ( B)循环结构、选择结构、顺序结构是结构化程序的三种基本结构 ( C)复杂算法不能使用 N-S流程图来描述 ( D)计算机能够直接处理不
5、超过 20行源码的简单 C语言程序 12 以下说法正确的是 ( )。 ( A) C语言程序运行时可以从键盘上读入用户输入的 C源程序并附加到本程序的尾部一并执行 ( B) C语言程序运行时可以从键盘上读入用户以二进制输入的指令,并执行这些指令 ( C) C语言程序运行时可以从键盘上读入用户输入的 c源程序并逐行执行 ( D) C语言程序运行时可以从键盘上读入用户输入的字符或数据,并依此改变程序的运行步骤 13 若有程序段 char c; double d: scanf(“ lf c“, &d, &c); 如果想把 2 3输入给变量 d,字符 f输入给变量 c,程序运行时正确的输入是( )。 (
6、 A) 2 3f ( B) 2 3f ( C) 2 3f ( D) 2 3f 14 设 a、 b、 c是已定义的整型变量且已正确赋初值,以下赋值语句中,错误的是( )。 ( A) a=(b=3)=1; ( B) a=(b=0)+c+0; ( C) a=b=c+0; ( D) a=0+(b=c=0); 15 若有定义: int a=3; double b=0 1263; char ch=a;,则以下选项中,叙述有错的是 ( )。 ( A)逗号表达式的计算结果是最后一个逗号之后的表达式的运算结果 ( B)运算符只能对整数类型的变量进行运算 ( C)语句 ch=(unsigned int)a+b;
7、是对 a与 b之和进行强制类型转换,结果赋值给变量 ch ( D)复合运算: a*=b+ch是将变量 b、 ch之和与 a相乘,结果再给 a赋值 16 以下可以正确且安全的用作用户标识符的一组选项是 ( )。 ( A) _32int, long64 ( B) Switch, unsigned ( C) Abc, getch ( D) 3break, enter 17 若有定义: char ch; int a; double d;,当输入为 12345 678910 36时,以下选项中能给各个变量正确输入数据的是 ( )。 ( A) scanf(“ d c lf“, &a, &ch, &d);
8、( B) scanf(“ 5d 2c 7 21f“, &a, &ch, &d); ( C) scanf(“ d c lf“, a, ch, d); ( D) scanf(“5d 2c 7 21f “, &a, &ch, &d); 18 以下选项中,合法的 C语言实数是 ( )。 ( A) 3 1e3 1 ( B) 2e1 ( C) E09 ( D) 1 23E 19 以下叙述正确的是 ( )。 ( A) #include stdio h是 C程序的一条语句 ( B)使用 符号可以将一条 #include命令写在多行里 ( C)一个 #include行可以包含多个文件,文件名用逗号分开 ( D)
9、一个 #include行可以包含多个文件,且最后一个文件起作用 20 与数学式 (x2-y2) cos(45) 对应的 C语言表达式是 ( )。 ( A) (poW(x, 2)-pow(y, 2)*cos(3 1415926*45 180) ( B) (poW(2, x)-pow(2, y)*cos(3 1415926*45 180) ( C) (x*x-y*y)*cos(45) ( D) (x 2-y 22)*cos(45) 21 以下程序拟实现计算 s=1+2*2+3*3+n*n+ ,直到 s 1000为止。 #include stdio h main() int s, n; s=1; n
10、=1; do n=n+1; s=s+n*n; while(s 1000); printf(“s= d n“, s); 程序运行后,不能得到正确结果,以下修改方案正确的是 ( )。 ( A)把 n=n+1;改为 n=n*n; ( B)把 s=1;改为 s=0; ( C)把 n=1;改为 n=0; ( D)把 while(s 1000);改为 while(s =1000); 22 有如下程序 #include stdio h main() char a, b; int i; a=3: b=A; for(i=0; i 6; i+) if(i 2)putchar(a+i); else putchar(
11、b+i); 程序运行后的输出结果是 ( )。 ( A) AB56EF ( B) A4C6E8 ( C) B4D6F8 ( D) A5C7E9 23 设有定义: int sum=100, i; 以下选项中,能 够实现 sum-=1+2+3+10 的程序段是 ( )。 ( A) for(i=0; i =10; ) sum=sum-i+; ( B) i=0; do sum=sum-+1: while(i =10); ( C) i=0; while(i sum=sum-+i; ( D) i=1; for(; i 10; i+) sum=sum-i+; 24 有下列程序 #include stdio h
12、 main() int a=123456, b; while(a) b=a 10; a =10; switch(b) default: printf(“ d“, b+); case1; case2: printf(“ d“, b+); break; case3: printf(“ d“, b+); break; case4: printf(“ d“, b+); 程序执行后的输出结果是 ( )。 ( A) 76654321 ( B) 112345667 ( C) 67564321 ( D) 654321 25 有以下程序 #include stdio h main() char i, j, n;
13、 for(i=1; i =9; i+) if(i 3)continue; for(j=0; j =9; j+) if(j 2llJ =4)continue ; n=(i-0)*10+j-0; printf(“ d“, n); if(i=4)break; printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) 32 33 42 43 ( B) 30 31 40 41 ( C) 34 35 44 45 ( D) 35 36 45 46 26 以下叙述中正确的是 ( )。 ( A)无论指针变量 P具有何种基类型,表达式 p=p+1都代表指针 p移动一个字节 ( B)指针变量具有基类型
14、,基类型不同的指针变量不能直接相互赋值 ( C)指针变量的赋值操作: p=0;是非法的 ( D)通过指针变量存取某个变量值的方式称为 “直接存取 ”方式 27 有以下程序 #include stdio h void swap(int*a, int*b) int t, *tp; t=*a; *a=*b; *b=t; tp=a; a=b; b=tp; printf(“ d, d, “, *a, *b); main() int i=3, j=7, *p=&i, *q=&j; swap(p, q); printf(“ d, d, d, d“, i, j, *p, *q); 程序执行后的输出结果是 (
15、)。 ( A) 3, 7, 3, 7, 3, 7 ( B) 7, 3, 7, 3, 7, 3 ( C) 3, 7, 3, 7, 7, 3 ( D) 3, 7, 7, 3, 7, 3 28 对于函数声明 void fun(float array, int*ptr);以下叙述正确的是 ( )。 ( A)函数 fun的参数 array, ptr都是指针变量 ( B)函数 fun的参数 array是数组名, ptr是指针变量,它们有本质区别 ( C)调用函数 fun时,实参数组元素个数可以比形参 array数组元素个数多 ( D)调用函数 fun时,传送给形参 array的应是数组的所有元素 29 以
16、下叙述中正确的是 ( )。 ( A) x41和 101都是转义字符常量 ( B)与 都是字符串常量 ( C)是空的字符串, “是空字符 NULL ( D) n和 n都是回车字符 30 以下选项中,能够正确利用随机函数 rand(),产生一个英文字母的表达式是( )。 ( A) rand() 2=0?rand() A: rand() a ( B) rand() 26+A|rand() 26+a ( C) rand() 26+A&rand() 26+a ( D) rand() 2=0?rand() 26+A: rand() 26+a 31 若有定义, int a=3, *p=&a, *q=&p;,
17、则以下叙述中错误的是 ( )。 ( A) q是指针变量, *q就是变量 a ( B) P是指针变量, p指向变量 a ( C) q指向变量 p,所以 *q指 向变量 a ( D) *p与 *q都代表变量 a 32 有下列程序 #include stdio h void f(int x, int n) if(n 1) printf(“ d“, xn-1); f(x, n-1); printf(“ d“, xn-1); else printf(“ d“, xn-1); main() int a4=1, 2, 3, 4; f(a, 4); 程序执行后的输出结果是 ( )。 ( A) 1234321
18、( B) 43211234 ( C) 4321234 ( D) 12344321 33 有以下不完整函数 int fun(char*p) ehar*t=p; while(*t+); return(_); 该函数的功能是:计算 p所指字符串占用内存单元的个数,作为函数值返回。return语句下划线处应填入的是 ( )。 ( A) t-p ( B) *t ( C) *t-*p ( D) t 34 有下列程序 #include stdio h #include string h main() char v410=“efg“, “abed“, “mnopq“, “hijkl“, *p4, *t; in
19、ti, j; for(i=0; i 4; i+) Pi=vi; for(i=0; i 3; i+) for(j=i+1; j 4; j+) if(strcmp(pi, pi) 0) t=pi; pi=Pi; pi=t; for(i=0; i 4; i+) printf(“ s“, pi); 程序执行后的输出结果是 ( )。 ( A) efg abcd hijkl mnopq ( B) abcd efg hijkl mnopq ( C) mnopq hijkl efg abed ( D) efg abed mnopq hijkl 35 有以下程序 #include stdio h #define
20、 S1(z)4*z+4*(z) #define S2(x, y)4*(x)*(y)+y*x main() int a=1, b=2; printf(“ d, “, S1(a+b); printf(“ d, “, S2(a, b)+S1(3); printf(“ d“, S2(3+a, b+3); 程序执行后的输出结果是 ( )。 ( A) 18, 34, 100 ( B) 24, 34, 92 ( C) 24, 34, 100 ( D) 18, 34, 92 36 如图所示:带有头结点的单向链表 head,其三个数据结点 A、 B、 c的连接关系见图。结点类型的定义为: struct link
21、double dt; struet link*next; ;若指针 P指向 A结点,在不改变 P指向的前提下,以下选项中不能访问 C结点数据成员 dt的表达式是 ( )。 ( A) *(*p) next- next- dt ( B) Pp- next- next- dt ( C) (*(*(*p) next) next) dt ( D) (*(p- next- next) dt 37 设有定义 #include stdio h #include stdlib h typedef struetint x, y; T; typedef struetint x, y; *USER; USER fun
22、() USER p; p=(USER)malloc(sizeof(T); p- x=1: p- y=2: return p; 函数 fun返回值的类型是 ( )。 ( A) T类型的结构体 ( B)指向结构体类型的指针 ( C) int类型的元素 ( D) int类型的指针 38 有以下宏定义及调用 #define HA2 #define HB(a)(HA+1)*a x=HA*(HA+HB(2); 则以下判断正确的是 ( )。 ( A)宏定义不允许嵌套 ( B) x的值是 6 ( C) x的值是 16 ( D)宏调用不允许嵌套 39 若以 “a+”方式打开一个已存在的文件,以下叙述正确的是 (
23、 )。 ( A)文件打开时,原有文件内容不被删除,可以进行添加和读操作 ( B)文 件打开时,原有文件内容不被删除,位置指针移到文件开头,可以进行重写和读操作 ( C)文件打开时,原有文件内容不被删除,位置指针移到文件中间,可以进行重写和读操作 ( D)文件打开时,原有文件内容被删除,只可进行写操作 40 有下列程序 #include stdio h main() FILE*fp; int i, a6=1, 2, 3, 4, 5, 6; fp=fopen(“d dat“, “w+b“); for(i=0; i 6; i+) fwrite(&ai, sizeof(int), 1, fp); re
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 语言 模拟 145 答案 解析 DOC
