[计算机类试卷]国家二级(C语言)机试模拟试卷145及答案与解析.doc

上传人:dealItalian200 文档编号:502883 上传时间:2018-11-29 格式:DOC 页数:31 大小:92.50KB
下载 相关 举报
[计算机类试卷]国家二级(C语言)机试模拟试卷145及答案与解析.doc_第1页
第1页 / 共31页
[计算机类试卷]国家二级(C语言)机试模拟试卷145及答案与解析.doc_第2页
第2页 / 共31页
[计算机类试卷]国家二级(C语言)机试模拟试卷145及答案与解析.doc_第3页
第3页 / 共31页
[计算机类试卷]国家二级(C语言)机试模拟试卷145及答案与解析.doc_第4页
第4页 / 共31页
[计算机类试卷]国家二级(C语言)机试模拟试卷145及答案与解析.doc_第5页
第5页 / 共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

24、wind(fp); fread(&a3, sizeof(int), 3, fp); fclose(fp); for(i=0; i 6; i+) printf(“ d, “, ai); 程序执行后的输出结果是 ( )。 ( A) 4, 5, 6, 4, 5, 6, ( B) 1, 2, 3, 4, 5, 6, ( C) 4, 5, 6, 1, 2, 3, ( D) 1, 2, 3, 1, 2, 3, 二、程序填空题 41 下列给定程序中,函数 fun的功能是:从形参 ss所指字符串数组中,删除所有串长超过 k的字符串,函数返回剩余字符串的个数。 ss所 指字符串数组中共有 N个字符串,且串长小于

25、 M。 请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! #include stdio h #include string h #deftne N5 #defineM 10 int fun(char(*ss)M, int k) int i, j=0, len; *found* for(i=O; i【 1】; i+) len=strden(ssi); *found* if(1en =【 2】 ) *found* strcpy(ssj+,【 3】 ); return j; main() c

26、har xNM=t“Beijing“, “Shanghai“, “Tianjin“, “Nanjing“, “Wuhan“; int i, f; pIintf(“ nThe original string n n“); for(i=0; i N; i+) puts(xi); printf(“ n“); f=fun(x, 7); printf(“The string witch length is less than or equal to7: n“); for(i=0; i f; i+)puts(xi); printf(“ n“); 三、程序修改题 42 下列给定程序中函数 fun的功能是:用

27、冒泡法对 6个字符串进行升序排列。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件 MODI1 C中,不得增行或删行,也不得更改程序的结构 ! #include stdio h #include string h #define MAXLINE20 fun(char*pstr6) int i, j; char*p; for(i=0; i 5; i+) *found* for(j=i+1, j 6, j+) if(strcmp(*(pstr+i), *(pstr+j) 0) p=*(pstr+i); *found* *(pstr+i)=pstr+j; *(pstr+j)=p;

28、 main() int i; char*pstr6, str6MAXLINE; for(i=0; i 6; i+)pstri=stri; printf(“ nEnter6string(1string at each line): n“); for(i=0; i 6; i+)scanf(“ s“, pstri); fun(pstr); printf(“The strings after sorting: n“); for(i=0; i 6; i+)printf(“ s n“, pstri); 四、程序设计题 43 规定输入的字符串中只包含字母和 *号。请编写函数 fun,其功能是:将字符串尾部的

29、 *号全部删除,前面和中间的 *号不动。 例如,字符串中的内容为: “*A*BC*DEF*G*”,删除后,字符串中的内容应当是: “*A*BC*DEF*G”。在编写函数时,不得使用 C语言提供的字符串函数。 注意:部分源程序在文件 PROG1 C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include stdio h void fun(ehar, *a) main() char s81; void NONO(); printf(“Enter a string: n“); gets(s); fun(s); printf(“The s

30、tring after deleted: n“); puts(s); NONO(); void NONO() *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * FILE*=in, *out; int i; char s81; in=fopen(“in dat“, “r“); out=fopen(“out dat“, “w“); for(i=0; i 10; i+) fscanf(in, “ s“, s); fun(s); fprintf(out, “ s n“, s); felose(in); fclose(out); 国家二级( C语言)机试模拟试卷 145答案与解析 一、

31、选择题 1 【正确答案】 A 【试题解析】 算法的时间复杂度是指执行算法所需要的计算机工作量,而算法的计算机工作量是用算法所执行的基本运算次数来度量的 ,算法所执行的基本运算次数和问题的规模有关。算法的空间复杂度指执行这个算法所需要的内存空间。为降低算法的空间复杂度,主要应减少输入数据所占的存储空间及额外空间,通常采用压缩存储技术。由于在编程时要受到计算机系统运行环境的限制,因此,程序的编制通常不可能优于算法的设计。算法执行时所需要的计算机资源越多算法复杂度越高,因此算法的复杂度和问题规模成正比。算法设计时要考虑算法的复杂度,问题规模越大越是如此。 算法的时间复杂度与空间复杂度没有必然的联系。

32、算法的空间复杂度与算法运行输出结果的数据量无关。故本题答案为 A选项。 2 【正确答案】 A 【试题解析】 对长度为 n的线性表排序,在最坏情况下,冒泡排序需要比较的次数为 n(n-1) 2。本题中 n=20, 20(20-1) 2=190。故本题答案为 A选项。 3 【正确答案】 A 【试题解析】 由于带链栈利用的是计算机存储空间中的所有空闲存储结点,因此随栈的操作栈顶栈底指针动态变化。带链的队列中若只有一个元素,则首尾指针相同。故本题答案为 A选项。 4 【正确答案】 A 【试题解析】 在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。 根据题意,度为 3的

33、树第 1层 1个根结点,第 2层 3个子结点,每个子结点下各 3个子结点,所以第 3层共 9个子结点,前 3层共 13个结点。第 3层有一个结点度为 2即有 2个子结点,本层其他结点各 1个子结点;即第 4层共 10个结点。前 4层共 23个结点。第 4层中的两个结点下各有一个子结点,即第 5层有 2个结点,此 2个结点下各有一个子结点。 第 3层有 8个度为 1的结点,第 4层有 2个度为 1的结点,第 5层有 2个 度为 1的结点, 8+2+2=12。故本题答案为 A选项。 5 【正确答案】 A 【试题解析】 软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适

34、当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。故本题答案为 A选项。 6 【正确答案】 A 【试题解析】 模块的扇出是指本模块的直属下层模块的个数。或者说是由一个模块直接调用的其他模块数。模块的扇入 是指有多少个上级模块调用它。题干中某系统为一个模块,其扇出数目为 3,功能 2模块扇出数为 3,功能 3模块扇出数为2,功能 2 2扇出数目为 2,故最大扇出数为 3。功能 2 2 2有 2个上级模块调用,为最大扇入数。 3+2=5。故本题答案为 A选项。 7 【正确答案】

35、 A 【试题解析】 系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件,包括各种系统开发、维护工具软件。应用软件是为了应用于特定的领域而开发的软件。人事管理系统属于应用软件。 Oracle数据库管理系统、 C+编译系统、 ios操 作系统是系统软件。故本题答案为 A选项。 8 【正确答案】 A 【试题解析】 在关系数据库中,二维表由行数据组成,每行数据包含若干属性值,每个属性都有指定的类型和取值范围。数据行数是有限的,每行数据互不相同 (元组唯一性 ),每行的次序可以任意交换 (元组的次序无关性 );表中属性名 (列各 )各不相同即字段名不重复,属性名 (列名 )次序可

36、任意交换。故本题答案为 A选项。 9 【正确答案】 A 【试题解析】 零件可以存放在多个仓库中,而每一仓库中可存放多种零件,则实体仓库和零件间的联系是多对多。故本题答案 为 A选项。 10 【正确答案】 A 【试题解析】 设 X、 Y、 Z是关系 R中互不相同的属性集合,存在XY(Y!X) , YZ ,则称 z传递函数依赖于 X。在关系 S中 S#Sd , SdDc 。则 Dc传递函数依赖于 S#。故本题答案为 A选项。 11 【正确答案】 B 【试题解析】 任何 C语言程序,无论简单或复杂,都必须经过编译、链接生成可执行文件才能由计算机运行,选项 A、 D错误;结构化程序的三种基本结构是顺序

37、结构、选择结构和循环结构,选项 B正确; N-S流程图是描述算法的很好的工具,复杂的算法也是可以描 述的,选项错误;本题答案为 B。 12 【正确答案】 D 【试题解析】 C语言运行前,需要将 C程序编译、链接,生成可执行程序文件,在运行可执行文件时,只能从键盘读入用户输入的字符或数据,依据程序的逻辑,来改变程序运行的步骤,选项 D正确;不能从键盘读入 C源程序并附加到本程序的尾部一并执行,选项 A错误;也不能直接读入二进制指令并执行,选项B错误;也不能读入 C源程序并逐行运行,选项 C错误,本题答案为 D。 13 【正确答案】 B 【试题解析】 由于变量 c是字符变量,所以选项 A中的空格会

38、赋给变量 c, 丢弃f;选项 C会将单引号 “赋给变量 c,丢弃 f;选项 D会将空格赋给变量 c,丢弃单引号 “”和 f;本题答案为 B。 14 【正确答案】 A 【试题解析】 C语言中赋值运算符具有右结合性,且括号内的表达式优先级最高,所以选项 A中首先运算 b=3,将 3赋给 b,表达式的值为 3,然后再将 1赋给3,这种逻辑是错误的, 3是常量,不能被赋值,本题答案为 A。 15 【正确答案】 C 【试题解析】 逗号表达式的计算结果是最后一个逗号之后的表达式的运算结果,选项 A正确;运算符是求模运算符,只能对整数类型的变量 进行运算,选项 B正确;复合运算 a: lc=b+ch中,先计

39、算 b+ch的值,再将 a与 b+ch之和相乘,结果苒赋值给 a,选项 D正确;语句 ch=(unsigned int)a+b中,括号优先级最高,所以首先将 a强制转换成无符号整型,再与 b相加,结果赋值给 ch,选项 C错误;本题答案为 C。 16 【正确答案】 A 【试题解析】 C语言中,合法的标识符是由字母、数字和下划线组成,并且第一个字符必须是字母或下划线,选项 D中的 3break错误;用户标识符不能是 C语言中的关键字或函数,选项 B中的 unsigned是关键 字,不是合法的用户标识符;选项 C中的 getch是库函数名,不是合法的用户标识符; C语言区分字母大小写,选项 B中的

40、 Switch是合法的用户标识符;选项 A中的两个标识符都是合法的用户标识符,所以本题答案为 A。 17 【正确答案】 A 【试题解析】 scanf()函数是标准输入函数,其中双引号之间的内容是格式控制串,后面是输入参数列表。其中输入参数列表中各项都必须是变量地址,所以选项 C错误;在 scanf()函数的格式字符前,可以加入一个正整数指定输入数据所占的宽度,但不可以对实数指定小数位的宽度,所以选 项 B、 D错误;选项 A是正确的,按照 A的输入格式, 12345赋值给 a,空格赋值给 ch, 678910 36赋值给d;本题答案为 A。 18 【正确答案】 B 【试题解析】 C语言中,实数

41、有两种表示形式:十进制小数形式和指数形式,本题各选项都是以指数形式表示。当实数以指数形式表示:尾数 E(或 e)整型指数。其中尾数是小数形式的实型常量, E或 e是指数形式的标识,又称为阶码标识;整型指数表示指数的大小。 C语言规定, E或 e之前的尾数必须要有数字, E或 e之后的整型指数必须是整数,且 E或 e前后以及数字之间不得插入空格 lo综上:本题答案为 B。 19 【正确答案】 B 【试题解析】 C语言中语句必须是以 “; ”结尾, #include是文件包含的宏定义,不属于 C语言的语句,选项 A错误;一个 #include只可以包含一个文件,如果需要包含多个文件,必须使用多个

42、#include命令行,选项 C、 D错误; #include命令如果太长,可以使用符号 将命令写成多行,选项 B正确,本题答案为 B。 20 【正确答案】 A 【试题解析】 x的平方在 C语言中有 2种表示方法: pow函数和 x*x,选项 D错误; pow()菌数第一 个参数是底数,第二个参数是指数,所以 x的平方是 pow(x,2),选项 B错误;余弦值需要使用 COS函数,数学上, 360度等价于 2,所以 45度转换成整数是 1 4,选项 C错误;本题答案为 A。 21 【正确答案】 D 【试题解析】 题意中,需要求得 n平方和并赋给 s,直到 s大于 1000为止。题目的程序中使用

43、 dowhile() 循环来实现,每次循环都是将 n自增 1后求平方,再累加给 s, while循环条件是当 s大于 1000时,才继续循环,所以本题程序的运行结果是 1+2*2=5,不是正确结果,需要将 while的 循环条件: s 1000修改为 s=1000,含义是:当 s =1000时继续循环,否则 s 1000后终止循环,本题答案为D。 22 【正确答案】 B 【试题解析】 程序首先赋值 a为字符 3,赋值 b为字符 A,循环变量 i的初值为 0,每次循环后自增 1,最大值为 5, if条件判断 i的值,当 i的值为偶数时,将b与 i的和当做字符输出;当 i的值为奇数时,将 a与 i

44、的和当做字符输出;所以 i为 0时,输出 b+0即 A; i为 1时,输出 a+1即 4; i为 2时,输出 b+2即 C; i为3时输出 a+3即 6 ,综上,程序运行 结果为: A4C6E8,本题答案为 B。 23 【正确答案】 A 【试题解析】 题意中 sum初值为 100,要求实现 sum减去 1到 10之和,选项 A中, for循环将 i从 0循环到 10,每次循环都用 sum减去 i的当前值,再将 i自增1,满足题意,选项 A正确;选项 B中,使用 dowhile() 循环,每次循环前 i先自增 1,然后用 sum减去 i自增后的值,由于 i初值为 0,所以第一次循环 sum减去1

45、,直到 i为 10时,继续循环, i自增 1后, sum减去 11,不满足题意,选项 B错误;选项 C中 while循环条件 i不合法,错误 ;选项 D中,循环终止条件为 i 10,所以结果是 sum累减 19中所有奇数之和,不满足题意;本题答案为 A。 24 【正确答案】 C 【试题解析】 程序中 a的初值为 123456, while循环的终止条件为 a为 0;每次循环,都将 a的最后一位数字赋给 b, a除以 10后 (丢弃最后一位 )重新赋给 a,所以循环过程中, a(b)的取值为 123456(6)、 12345(5)、 1234(4)、 123(3)、 12(2)、1(1);循环体

46、中,每次循环都对 b执行 switch语句,当 b的数值不等于 1、 2、 3、4时,首先执行 defaulf语句,输出 b并将 b自增 1,再执行 rase1, case2语句,输出自增后的 b值;当 b的数值等于 1、 2、 3、 4时,只执行 case语句,输出 b的值;综上,当 b为 6、 5时,分别输出 67、 56;当 b为 4、 3、 2、 1时,分别输出4、 3、 2、 1,最终程序输出结果为: 67564321,本题答案为 C。 25 【正确答案】 A 【试题解析】 数字字符 09的 ASCII码值是连续递增的,即 1比 0的 ASCII码值大 1 所以题意中,外层 for循

47、环的循环变量 i取值为 1、 2、 9 ;内层 for循环的循环变量 j取值为 0、 19 ;另外外层 for循环的循环体中 if(i 3)语句表示当 i的 ASCII码小于字符 3的 ASCII码值时,执行 continue语句跳入下一次循环 (i的 ASCII码值自增 1); if(i=4)语句表示当 i是字符 4时,执行 break语句跳出循环;同理,内层 for循环中的 if(j 2|j =4)语句在 j的值不等于 2、 3时,执行 continue跳入下一次循环;综上,只有在 i取值为 3或 4, j取值为 2或 3时,才执行语句: n=(i-0)*10+j-0;和 printf(“ d“, n);所以当 i取值为 3时, j取值为 2, n的值为 3*10+2=32,输出 32(空格 ), j取值为 3, n的值为 3*10+3=33,输出 33(空格 );当 i取值为

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1