1、国家二级( C语言)机试历年真题试卷汇编 23及答案与解析 一、选择题 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)
3、 7 ( 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#Sd , SdDc ( B) S#Sd ( C) S#Sd , (S#, C#)G ( D) CP# , (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=O+(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;,当输入为 1234 5678910 36时,以下选项中能给各个变量正确输入数据的是 ( )。 ( A) scanf(“ d c 1f“, &a, &ch, &d);
8、( B) scanf(“ 5d 2c 7 21f“, &a, &ch, &d); ( C) scanf(“ d c 1f t, 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 2)*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 有如下程序 #inelude stdio h main( ) char a, b; int i; a=3; b=A; for(i=0; i 6; i+) if(i 2)putchar(a+i); elseputchar
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
12、h main( ) int a=123456, b; while(a) b=a 10; a =10; switch(b) default: printf(“ d“, b+); case1: case2: printf(“ d“, b+); break; caBe3: prinff(“ d“, b+); break; case4: prinff(“ d“, b+); 程序执行后的输出结果是 ( )。 ( A) 76654321 ( B) 12345667 ( C) 67564321 ( D) 654321 25 有以下程序 #include stdio h main( ) char i, j,
13、n; for(i=1; i =9; i+) if(i 3)continue; for(j=0; j =9; j+) if(J 2|j =4)continue; n=(i-0)*10+j-0; prinff(“ d“, n); if(i=4)hreak; prinff(“ 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; prinff(“ d, d, “, *a, *b); main( ) int i=3, j=7, *p=&i, *q=&j; swap(p, q); prinff(“ 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,
17、 *p=&a, *q=&p;,则以下叙述中错误的是 ( )。 ( 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) prinff(“ d“, xn-1); f(X, n-1); prinff(“ d“, xn-1); else printf(“ d“, xn-1); main( ) int a4=1, 2, 3, 4: f(a, 4); 程序执行后的输出结果是 (
18、)。 ( A) 1234321 ( B) 43211234 ( C) 4321234 ( D) 12344321 33 有以下不完整函数 int fun(char*p) char*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“, “abcd“, “mnopq“, “hi
19、jkl“, *p4, *t; inti, 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 abed hijkl mnopq ( B) abed efg hijkl mnopq ( C) mnopq hijkl efg abed ( D) efg abcd mnopq hijkl 35 有以下程序 #includ
20、e stdio h #define 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); prinff(“ 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的连接关系见图。 结点
21、类型的定义为:struct linkdouble dt; struet link, *next; ;若指针 p指向 A结点,在不改变 P指向的前提下,以下选项中不能访问 C结点数据成员 dt的表达式是 ( )。 ( A) *(*p) next- next- dt ( B) p- 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,
22、 y; *USER; USER fun( ) 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, si
24、zeof(int), 1, fp); rewind(fp); fread(&a3, sizeof(int), 3, fp); felose(fp); for(i=0; i 6; i+) prinff(“ 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 使用 VC+2010打开考生文件夹下 blank1中的解决方案。此解决方 案的项目中包含一个源程序文件 blank1 c。在此程序中,
25、函数 fun的功能是:将一副扑克牌编号为 1, 2, 3, , 53, 54,以某种特定的方式洗牌,这种方式是将这副牌分成两半,然后将它们交叉,并始终保持编号为 1的牌在最上方,如第一次这样洗牌后的结果为: 1, 28, 2, 29, , 53, 27, 54。两次洗牌后的结果为: 1, 41, 28,15, 2, 42 , 53, 40, 27, 14, 54。 程序的功能是:输出经过 n次这样洗牌后的结果。 请在程序的下画线处填入正确的内容,并把下画线删除,使程序得出正确的结果。 注意:源程序存 放在考生文件夹下的 BLANK1 C中。不得增行或删行,也不得更改程序的结构 ! 试题程序:
26、#include stdio h void fun(int a55, int n) int i, k; *found* int【 1】 55; for(i=0; i n; i+) for(k=1; k =27; k+) b2*k-1=ak; *found* b【 2】 *k=ak+27; for(k=1; k =54; k+) *found* ak=【 3】 ; main( ) int m, a55, i; for(i=1; i 55; i+)ai=i; prinff(“请输入洗牌次数: “); seanf(“ d“, &m); fun(a, m); for(i=1; i 55; i+)pri
27、nff(“ d, “, ai); prinff(“ n“); 三、程序修改题 42 使用 VC+2010打开考生文件夹下 modi1中的解决方案 。此解决方案的项目中包含一个源程序文件 modi1 c。在此程序中,函数 fun的功能是:判断输入的任何一个正整数 n,是否等于某个连续正整数序列之和。若是,则输出所有可能的序列,否则输出 “不能分解 ”。 例如:当输入 100时,输出: 100=9+10+l1+12+13+14+15+16 100=18+19+20+21+22 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的
28、结构。 试题程序: #include stdio h void fun(int n) int j, b, c, m, flag=0; for(b=1; b =n 2; b+) *found* n=m; c=b; while(m!=0&m =c) *found* m=m-c: c+ *found* if(m!=0) prinff(“ d: “, n); for(j=b; j c-1; j+)printf(“ d+“, j); prinff(“ d n“, j); flag=1; if(flag=0) prinff(“不能分解 n“); main( ) int n; prinff(“请输入一个整数
29、: “); seanf(“ d“, &n); fun(n); 四、程序设计题 43 使用 VC+2010打开考生文件夹下 prog1中的解决方案。此解决方案的项目中包含一个源程序文件 prog1 c。在此程序中,编写函数 fun,其功能是:判断 t所指字符串中的字母是否由连续递增字母序列组成 (字符串长度大于等于 2)。例如字符串: uvwxyz满足要求;而字符串: uvxwyz不满足要求。 注意:部分源程序存放在 PROG1 C中,请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun指定的部位填入所编写的若干语句。 试题程序: #include stdio h #include
30、string h void NONO( ); int fun(char*t) main( ) char s26; prinff(“请输入一个字母组成的字符串: “); gets(s); if(fun(s)prinff(“ s是由连续字母组成的字符串 n“, s); else prinff(“ s不是由连续字母组成的字符串 ! n“, s); NONO( ); void NONO( ) *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * FILE*fp, *wf; int i; char s26, *p; fp=fopen(“in dat“, “r“); wf=fopen(“ou
31、t dat“, “w“); for(i=0; i 10; i+) fgets(s, 26, fp); p=strchr(s, n); if(p)*p=0; if(fun(s)fprinff(Wf, “ s n“, s+2); else fprinff(wf, “ s n“, strrev(s); felose(fp); felose(wf): 国家二级( C语言)机试历年真题试卷汇编 23答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 算法的时间复杂度是指执行算法所需要的计算机工作量,而算法的计算机工作量是用算法所执行的基本运算次数来度量的,算法所执行的基本运算次数和问题的规模有关
32、。算法的空间复杂度指执行这个算法所需要的内存空间。为降低算法的空间复杂度,主要应减少输入数据 所占的存储空间及额外空间,通常采用压缩存储技术。由于在编程时要受到计算机系统运行环境的限制,因此,程序的编制通常不可能优于算法的设计。算法执行时所需要的计算机资源越多算法复杂度越高,因此算法的复杂度和问题规模成正比。算法设计时要考虑算法的复杂度,问题规模越大越是如此。 算法的时间复杂度与空间复杂度没有必然的联系。算法的空间复杂度与算法运行输出结果的数据量无关。故本题答案为 A选项。 2 【正确答案】 A 【试题解析】 对长度为 n的线性表排序,在最坏情况下,冒泡排序需要比较的次数为 n(n-1) 2。
33、本 题中 n=20, 20(20-1) 2=190。故本题答案为 A选项。 3 【正确答案】 A 【试题解析】 由于带链栈利用的是计算机存储空间中的所有空闲存储结点,因此随栈的操作栈顶栈底指针动态变化。带链的队列中若只有一个元素,则首尾指针相同。故本题答案为 A选项。 4 【正确答案】 A 【试题解析】 在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。 根据题意,度为 3的树第 1层 1个根结点,第 2层 3个子结点,每个子结点下各 3个子结点,所以第 3层共 9个子结点,前 3层共 13个结点。第 3层有一个结点度为 2即有 2个子结点,本层其他结点各 1个
34、子结点;即第 4层共 10个结点。前 4层共 23个结点。第 4层中的两个结点下各有一个子结点,即第 5层有 2个结点,此 2个结点下各有一个子结点。 第 3层有 8个度为 1的结点,第 4层有 2个度为 1的结点,第 5层自 2个度为 1的结点, 8+2+2=12。故本题答案为 A选项。 5 【正确答案】 A 【试题解析】 软件设计中模块划分应遵循的准则 是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。故本题答案为 A选
35、项。 6 【正确答案】 A 【试题解析】 模块的扇出是指本模块的直属下层模块的个数。或者说是由一个模块直接调用的其他模块数。模块的扇入是指有多少个上级模块调用它。题干中某系统为一个模块,其扇出数目为 3,功能 2模块扇出数为 3,功能 3模块扇出数为2,功能 2 2扇出数目 为 2,故最大扇出数为 3。功能 2 2 2有 2个上级模块调用,为最大扇入数。 3+2=5。故本题答案为 A选项。 7 【正确答案】 A 【试题解析】 系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件,包括各种系统开发、维护工具软件。应用软件是为了应用于特定的领域而开发的软件。人事管理系统属于应
36、用软件。 Oracle数据库管理系统、 C+编译系统、 ios操作系统是系统软件。故本题答案为 A选项。 8 【正确答案】 A 【试题解析】 在关系数据库中,二维表由行数据组成,每行数据 包含若干属性值,每个属性都有指定的类型和取值范围。数据行数是有限的,每行数据互不相同 (元组唯一性 ),每行的次序可以任意交换 (元组的次序无关性 );表中属性名 (列各 )各不相同即字段名不重复,属性名 (列名 )次序可任意交换。故本题答案为 A选项。 9 【正确答案】 A 【试题解析】 零件可以存放在多个仓库中,而每一仓库中可存放多种零件,则实体仓库和零件间的联系是多对多。故本题答案为 A选项。 10 【
37、正确答案】 A 【试题解析】 设 X、 Y、 Z是关系 R中互不相同的属性集合,存在XY(Y!X) , Y Z,则称 Z传递函数依赖于 X。在关系 S中 S#Sd ,SdDc ,则 Dc传递函数依赖于 S#。故本题答案为 A选项。 11 【正确答案】 B 【试题解析】 任何 C语言程序,无论简单或复杂,都必须经过编译、链接生成可执行文件才能由计算机运行,选项 A、 D错误;结构化程序的三种基本结构是顺序结构、选择结构和循环结构,选项 B正确; N-S流程图是描述算法的很好的工具,复杂的算法也是可以描述的,选项 C错误;本题答案为 B。 12 【正确答案】 D 【试题解析】 C语言运行前,需要将
38、 C程序编译、链接,生成可执行 程序文件,在运行可执行文件时,只能从键盘读入用户输入的字符或数据,依据程序的逻辑,来改变程序运行的步骤,选项 D正确;不能从键盘读入 C源程序并附加到本程序的尾部一并执行,选项 A错误;也不能直接读入二进制指令并执行,选项B错误;也不能读入 c源程序并逐行运行,选项 C错误,本题答案为 D。 13 【正确答案】 B 【试题解析】 由于变量 c是字符变量,所以选项 A中的空格会赋给变量 c,丢弃f;选项 C会将单引号 “”赋给变量 c,丢弃 f;选项 D会将空格赋给变量 c,丢弃单引号 “”和 f;本题答案为 B。 14 【正确 答案】 A 【试题解析】 C语言中
39、赋值运算符具有右结合性,且括号内的表达式优先级最高,所以选项 A中首先运算 b=3,将 3赋给 b,表达式的值为 3,然后再将 l赋给3,这种逻辑是错误的, 3是常量,不能被赋值,本题答案为 A。 15 【正确答案】 C 【试题解析】 逗号表达式的计算结果是最后一个逗号之后的表达式的运算结果,选项 A正确;运算符是求模运算符,只能对整数类型的变量进行运算,选项 B正确;复合运算 a*=b+ch中,先计算 b+ch的值,再将 a与 b+ch之和相乘,结果再赋值给 a,选项 D正确;语句 ch=(unsigned int)a+b中,括号优先级最高,所以首先将 a强制转换成无符号整型,再与 b相加,
40、结果赋值给 ch,选项 C错误;本题答案为 C。 16 【正确答案】 A 【试题解析】 C语言中,合法的标识符是由字母、数字和下划线组成,并且第一个字符必须是字母或下划线,选项 D中的 3break错误;用户标识符不能是 C语言中的关键字或函数,选项 B中的 unsizned是关键字,不是合法的用户标示符,选项 C中的 getch是库函数名,不是合法的用户标识符; C语言区分字母大小写,选项 B中的 switch是合法的用 户标识符;选项 A中的两个标识符都是合法的用户标识符,所以本题答案为 A。 17 【正确答案】 A 【试题解析】 scanf。 ( )函数是标准输入函数,其中双引号之间的内
41、容是格式控制串,后面是输入参数列表。其中输入参数列表中各项都必须是变量地址,所以选项 C错误;在 seanf( )函数的格式字符前,可以加入一个正整数指定输入数据所占的宽度,但不可以对实数指定小数位的宽度,所以选项 B、 D错误;选项 A是正确的,按照 A的输入格式, 12345赋值给 a,空格赋值给 ch, 678910 36赋值给 d;本题答案为 A。 18 【正确答案】 B 【试题解析】 C语言中,实数有两种表示形式:十进制小数形式和指数形式,本题各选项都是以指数形式表示。当实数以指数形式表示:尾数 E(或 e)整型指数。其中尾数是小数形式的实型常量, E或 e是指数形式的标识,又称为阶
42、码标识;整型指数表示指数的大小。 C语言规定, E或 e之前的尾数必须要有数字, E或 e之后的整型指数必须是整数,且 E或 e前后以及数字之间不得插入空格。综上:本题答案为 B。 19 【正确答案】 B 【试题解析】 C语言中语句必须是以 “; ”结尾, #include是文件包 含的宏定义,不属于 C语言的语句,选项 A错误;一个 #include只可以包含一个文件,如果需要包含多个文件,必须使用多个 #include命令行,选项 C、 D错误; #include命令如果太长,可以使用符号 将命令写成多行,选项 B正确,本题答案为 B。 20 【正确答案】 A 【试题解析】 x的平方在 C
43、语言中有 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为止。题目的程序中使用 do while( )循环来实现,每次循环都是将 n自增 1后求平方,再累加给 s, while循环条件是当 s大于 1000时,才继续循环,所以本题程序的运行结果是 1+2*2=5,不是
44、正确结果,需要将 while的循环条件: s 1000修改为 s=1000,含义是:当 s =1000时继续循环,否则 s 1000后终止循环,本题答案为D。 22 【正确答案】 B 【试题解析】 程序首先赋值 a为字符 3,赋值 b为字符 A,循环变量 i的初值为 O,每次循环后自增 1,最大值为 5, if条件判断 i的值,当 i的值为偶数时,将b与 i的和当做字符输出;当 i的值为奇数时,将 a与 i的和当做字符输出;所以 i为 0时,输出 b+0即 A; i为 1时,输出 a+1即 4; i为 2时,输出 b+2即 C; i为3时输出 a+3即 6 ,综上,程序运行结果为: A4C6E
45、8,本题答案为 B。 23 【正确答案】 A 【试题解析】 题意中 sum初值为 100,要求实现 sum减去 1到 10之和,选项 A中, for循环将 i从 0循环到 10,每次循环都用 sum减去 i的当前值,再将 i自增l,满足题意,选项 A正确;选项 B中,使用 do while( )循环,每次循环前 i先自增 1,然后用 sum减去 i自增后的值,由于 i初值为 0,所以第一次循环 sum减去 1,直到 i为 10时,继续循环, i自增 1后, sum减去 11,不满足题意,选项B错误;选项 C中 while循环条件 i不合法,错误;选项 D中,循环终止条件为 i 10,所以结果是
46、 sum累减 1-9中所有奇数之和,不满足题意;本题答案为A。 24 【正确答案】 C 【试题解析】 程序中 a的初值为 1234 56, while循环的终止条件为 a为 0;每次循环,都将 a的最后一位数字赋给 b, a除以 10后 (丢弃最后一位 )重新赋给 a,所以循环过程中, a(b)的取值为 123456(6)、 12345(5)、 1234(4)、 123(3)、 12(2)、1(1);循环体中,每次循环都对 b执行 switch语句,当 b的数值不等于 1、 2、 3、4时,首先执行 default语句,输出 b并将 b自增 1,再执行 ease1, case2语句,输出自增后
47、的 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 【试题解析】 数字字符 0-9的 ASCII码值是连续递增的,即 1比 0的 ASCII码值大 1 所以题意中,外层 for循环的循环变量 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
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1