1、国家二级( C语言)笔试模拟试卷 254 及答案与解析 1 若某二叉树的前序遍历访问顺序是 abdgcefh,中序遍历访问顺序是 dgbaechf,则其后序遍历的结点访问顺序是 ( A) bdgcefha ( B) gdbecfha ( C) bdgaechf ( D) gdbehfca 2 开发大型软件时,产生困难的根本原因是 ( )。 ( A)大型系统的复杂性 ( B)人员知识不足 ( C)客观世界千变万化 ( D)时间紧、任务重 3 对长度为 n的线性表进行顺序查找,在最坏的情 况下需要比较的次数为 ( )。 ( A) 125 ( B) n/2 ( C) n ( D) n+1 4 在进行
2、单元测试时,常用的方法是 ( A)采用白盒测试,辅之以黑盒测试 ( B)采用黑盒测试,辅之以白盒测试 ( C)只使用白盒测试 ( D)只使用黑盒测试 5 下列叙述中正确的是 ( )。 ( A)线性链表是线性表的链式存储结构 ( B)栈与队列是非线性结构 ( C)双向链表是非线性结构 ( D)只有根结点的二叉树是线性结构 6 算法一般都可以用 _控制结构组合而成。 ( A)循环、分支、 递归 ( B)顺序、循环、嵌套 ( C)循环、递归、选择 ( D)顺序、选择、循环 7 设有下列二叉树:对此二叉树前序遍历的结果为 ( A) ZBTYCPXA ( B) ATBZXCYP ( C) ZBTACYX
3、P ( D) ATBZXCPY 8 下列关系运算中,能使经运算后得到的新关系中属性个数多于原来关系中属性个数的是 ( )。 ( A)选择 ( B)连接 ( C)投影 ( D)并 9 下列关系运算的叙述中,正确的是 _。 ( A)投影、选择、连接是从二维表行的方向进行的运算 ( B)并、交、 差是从二维表的列的方向来进行运算 ( C)投影、选择、连接是从二维表列的方向进行的运算 ( D)以上 3种说法都不对 10 结构化程序设计主要强调的是 _。 ( A)程序的规模 ( B)程序的易读性 ( C)程序的执行效率 ( D)程疗的可移植性 11 有下列程序段: struct st intx;int*
4、y;*pt; int a=1,2,b=3,4; struct st c2=10,a,20,b; pt=c; 下列选项中表达式的 值为 11的是 ( )。 ( A) *pt- y ( B) pt- x ( C) +pt- x ( D) (pt+)- x 12 已有定义: char c;,程序前面已在命令行中包含 ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是 ( A) isupper(C) ( B) A =c =Z ( C) A =c char c=a;scanf(“%d%c%d“,printf(“%d,%c,%dn“,m,c,n);若从键盘上输入:10A10,则输出结果是:
5、 ( A) 10,A,10 ( B) 10,a,10 ( C) 10,a,0 ( D) 10,A,0 21 若 a是数值类型,则逻辑表达式( a I)( a! 1)的值是 ( A) 1 ( B) 0 ( C) 2 ( D)不知道 a的值,不能确定 22 已有定义: char a=“xyz“b=x, y, z);,以下叙述中正确的是 _。 ( A)数组 a和 b的长度相同 ( B) a数组长度小于 b数组长度 ( C) a数 组长度大于 b数组长度 ( D)上述说法都不对 23 若函数调用时,参数为基本数据类型的变量,下列叙述中正确的是 ( )。 ( A)实参与其对应的形参共占存储单元 ( B)
6、只有当实参与其对应的形参同名时才共占存储单元 ( C)实参与其对应的形参分别占用不同的存储单元 ( D)实参将数据传递给形参后,立即释放原先占用的存储单元 24 下列 4个关于 C语言的结论中错误的是 ( )。 ( A)可以用 dowhile 语句实现的循环一定可以用 while语句实现 ( B)可以用 for语句实现的循环一定可以用 while语句实现 ( C)可以用 while语句实现的循环一定可以用 for语句实现 ( D) dowhile 语句与 while语句的区别仅是关键字 “while”出现的位置不同 25 下列能正确进行字符串赋值的是 ( )。 ( A) chars5 “ABC
7、DE“; ( B) char s5+A,B,C,D,E), ( C) char*s;s “ABCDE“; ( D) char*s;printf(“%SS); 26 若有定义: int a23;,以下选项中对 a数组 元素正确引用的是 ( )。 ( A) a2!1 ( B) a23 ( C) a03 ( D) a1 2!1 27 若有以下说明和定义 fun(int*c). main() int(*a)()=fun, (*b)(),w10, c; 在必要的赋值之后,对 fun()函数的正确调用语句是 _。 ( A) a=a(w); ( B) (*a)( int i,j,s=0; for(i=0;i
8、0;j+=2) s=10*s+pij-0; printf(“%dn“,s); 该程序的输出结果是 ( A) 69825 ( B) 63825 ( C) 6385 ( D) 693825 29 有以下程序 :#include stdio, h main( ) char c1=1, c2=2; c1=getchar(); c2=getchar(); putchar(c1); putchar(c2); 当运行时输入: a回车后,以下叙述正确的是 ( )。 ( A)变量 c1被赋予字符 a, c2被赋予回车符 ( B)程序将等待用户输入第二个字符 ( C)变量 c1被赋予字符 a, c2中仍是原有字符
9、 2 ( D)变量 c1被赋予字符 a, c2中将无确定值 30 若已定义: int a=0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *p=a, i;其中 0i9,则对 a数组元素不正确的引用是 ( )。 ( A) ap-a ( B) *( for(i=0; i n/2; i+) t=ai; ai=an-1 -i; an-1-i =t; main() int b10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10; int i, s=0; reverse(b, 8); for(i=6; i 10; i+)s+=bi; printf(“%dn“, s); ( A) 2
10、2 ( B) 10 ( C) 34 ( D) 30 32 以下四个选项中,不能看作一条语句的是 ( )。 ( A); ( B) a=5, b=2.5, c=3.6; ( C) if(a 5); ( D) if(b! =5)x=2; y=6; 33 以下不能正确计算代数式 sm2()值的 C语言表达式是 ( A) 1/3*sin(1/2)*sin(1/2) ( B) sin(0.5)*sin(0.5)/3 ( C) pow(sin(0.5), 2)/3 ( D) 1/3.0*pow(sin(1.0/2), 2) 34 有以下程序 #define P 3 void F(int x) return(
11、pxx); main() pritnf(“%dn“,F(3+5); 程序运行后的输出结果是 ( A) 192 ( B) 29 ( C) 25 ( D)编译出错 35 以下程序的输出结果是 _。 int d=1; fun(int p) static int d=5; d+=p; printf(“%d “,d); return(d); main() int a=3; printf(“%dn“,fun(a+fun(d); ( A) 699 ( B) 669 ( C) 6 15 15 ( D) 6615 36 下列描述说明正确的是 ( ) ( A)定义结构体时,它的每个成员的数据类型可以不同 ( B)
12、不同结构体的成员名不能相同 ( C)结构体定义时,其成员的数据类型不能是结构体本身 ( D)结构体定义时各成员项之间可用分号也可用逗号隔开 37 有以下程序 main() char a,b,c,d; scanf(“%c,%c,%d,%d“, printf(%c,%c,%c,%cn“,a,b,c,d); 若运行时从键 盘上输入 6,5,65,66回车。则输出结果是 ( )。 ( A) 6,5,A,B ( B) 6,5,65,66 ( C) 6,5,6,5 ( D) 6,5,6,6 38 有以下程序: void f(int a,int i,int j) int t; if(i j) t=ai;ai
13、=aj;aj=t; f(a,i+1,j-1); main() int i, aa5=1,2,3,4,5; f(aa,0,4); for(i=0;i 5;i+) printf(“%d,“,aai); printf(“n“); 执行后输出结果是( )。 ( A) 5,4,3,2,1, ( B) 5,2,3,4,1, ( C) 1,2,3,4,5, ( D) 1,5,4,3,2, 39 若有如下程序: main() int x=14,32,65,69,78,59,*t; t= x +5; printf(“%dn“,*-t); 则程序执行 后的输出结果是 ( )。 ( A) 78 ( B) 65 (
14、C) 32 ( D) 14 40 以下程序运行后的输出结果是 ( ) main( ) int a, b; a 50; b90; printf(“%dn“, (a, b) ( A) 90 ( B) 50 90 ( C) 50 ( D) 450 41 若 x=10010111,则表达式 (3+(int)(x) ( 3)的运算结果是 ( )。 ( A) 10011000 ( B) 10001100 ( C) 10101000 ( D) 10110000 42 当所有结点的权值都相等时,用这些结点构造的二叉排序树是【 】。 43 【 】是数据库设计的核心。 44 在关系模型中,把数据看成一个二维表,每
15、一个二维表称为一个【 】。 45 如果两个 8位二进制数 00010101与 01000111相加,其结果用十进制表示为【 】。 46 数据的独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,这称为 _。 47 若 x和 a均是 int型变量,则计算完 x=(a=4,6*2)后的 x值为 _。 48 定义 int a=5,b;,则执行表达式 b=+a*-a之后,变量 b的值为 ( )。 49 符合结构化原则的三种基本控制结构是顺序结构、 ( )和循环结构。 50 以下程序运行后的输出结果是 _。 #include string.
16、h main() char ch=“abc“,x34; int i; for(i=0; i 3; i+) strcpy(xi, ch); for(i=0; i 3; i+) printf(“%s“, ”(k为 int型变量 )后, k的值是 _。 52 有以下程序: #include stdio.h main() char c; while(c=getchar()!=?) putchar(-c); 程序运行时,如查从键盘输入: Y?N?回车,则输出的结果为 _。 53 以下程序运行后的输出结果是 _。 int f(int a,int n) if(n =l) return f(a,n-1)+an
17、-1; else return 0; main ) int aa5=1, 2, 3, 4, 5, s; s=f(aa,5); printf%dn“,s); 54 下面程序的运行结果是【 】。 #include stdio.h #define SIZE 12 main() char sSIZE; int i; for(i=0; i SIZE; i+) si=A+i+321; sub(s, 7, SIZE-1); for(i=0; i SIZE; i+) printf(“%c“, si); printf(“n“); sub(char*a, int tl, int t2) char ch; whil
18、e(t1 t2) ch=*(a+t1); *(a+t1)=*(a+t2); *(a+t2)=ch; t1+; t2-; 55 以下程序的输出结果是 【 】 。 double sub(double x, double y, double z) y- 1.0; z z+x; return z; main() double a=2.5, b 9.0; printf(“function running result is: %6.1fn“, sub(b-a, a, A) ); 56 设有以下定义和语句,则 *(*(P+2)+1)的值为 【 】 。 int32=10,20,30,40,50,60,(*p
19、)2; p=a; 57 以下函数的功能是删除字符串 s中的所有数字字符。请填空。 void dele (char *s) int n=0,i; for(i=0, si; i+) if (【 】 ) sn+=si; sn=【 】 ; 国家二级( C语言)笔试模拟试卷 254 答案与解析 1 【正确答案】 D 【试题解析】 前序遍历的第一个结点 a为树的根节点;中序遍历中 a的左边的结点为 a的左子树, a的右边的结点为 a的右子树;再分别对 a的左右子树进行上述两步处理,直到每个结点都找到正确的位置。 2 【正确答案】 C 【试 题解析】 线性表是一种线性结构,由 n(n0)个元素组成,所以线性
20、表可以是空表。但是在线性表中,第一个结点没有前件,最后一个结点没有后件,其他结点有且只有一个前件和后件,所以选项 C是错误的。 3 【正确答案】 C 【试题解析】 对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏的情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为 n。 4 【正确答 案】 A 【试题解析】 白盒测试是测试程序内部逻辑结构,黑盒测试只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。从程序内部的逻辑结构对系统进行测试
21、才是测试的根本,更容易发现和解决程序中的问题,因此单元测试时应该以白盒测试为主,而黑盒测试为辅。 5 【正确答案】 A 【试题解析】 线性链表是线性表的链式存储结构,选项 A的说法是正确的。栈与队列是特殊的线性表,它们也是线性结构,选项 B的说法足错误的;双向链表是线性表的链式存储结构,其对应的逻辑结构也是线性结构,而不是非线性结构,选 项 c的说法是错误的;二叉树是非线性结构,而不是线性结构,选项 D的说法是错误的。 6 【正确答案】 D 【试题解析】 算法的控制结构给出了算法的基本框架,不仅决定了算法中各操作的执行顺序,也直接反映了算法的设计是否符合结构化原则。一个算法一般都可以用顺序、选
22、择、循环三种基本控制结构组合而成。 7 【正确答案】 B 【试题解析】 所谓二叉树的前序遍历 (DLR)是指在访问根结点、遍历左子树与遍历右子树这 3者中,首先访问根结点,然后遍历左子树,最后遍历右子树,并且,在遍历左右子树时,上述规则同样 适用,即 “根 -左 -右 ”。故该二叉树的前序遍历结果为 “ATBZXCYP”。注意:对于本题,若使用后序遍历和中序遍历的结果分别为 “ZBTYCPXA“和 “TZBACYXP“。 8 【正确答案】 B 【试题解析】 两个关系的笛卡尔积中的属性个数是两个原关系中的属性个数之和。即两个关系经连接运算后得到的新关系中属性个数多于原来关系中属性个数。 9 【正
23、确答案】 C 【试题解析】 在关系模型的数据语言中,一般除了运用常规的集合运算 (并、交、差、笛卡尔积等 ),还定义了一些专门的关系运算,如投影、选择、 连接等。前者是将关系 (即二维表 )看成是元组的集合,这些运算主要是从二维表的行的方向来进行运算的。后者是从二维表的列的方向来进行运算的。 10 【正确答案】 B 【试题解析】 结构化程序设计主要强调的是结构化程序清晰易读,可理解性好,程序员能够进行逐步求精、程序证明测试,以保证程序的正确性。 11 【正确答案】 C 【试题解析】 由题目的已知条件可知, Pt 指向结构体数组 c2的第一元素cO,所以 pt- x=10,执行自加运算后为 11
24、。 12 【正确答案】 B 【试题解 析】 在本题中,选项 B)实际是先计算关系表达式 “A =c”的值是 0还是 1再比较该值与字符 z之间的大小关系,显然不能实现题目所要求的功能,而选项 A)、 C)、 D)都可以。 13 【正确答案】 C 14 【正确答案】 A 【试题解析】 在程序中因为 fun 函数的返回值为 char,而 p 是指向 char的指针变量,因此类型不匹配,故选择 A选项。 15 【正确答案】 C 【试题解析】 在表达式的运算中,双目赋值运算符的格式为 “变量 =表达式 ”,单目运算符一般形式为 “运算符表达式 ”或 “表达式 运算符 ”。常量和表达式是不能被赋值的。选
25、项 A为复合表达式,首先计算 (i=2, +i)的值,然后赋值给 n;选项 B为简单自加运算;选项 C在表达式 +(i+1);中, (i+1)不是变量,该表达式的值为常量,而在 +运算中,其运算对象必须为变量;选项 D中为复合赋值表达式。 16 【正确答案】 D 【试题解析】 C语言的自减运算符有前置与后置两种形式。当自减运算符前置时,变量先自减一后再参与表达式运算;而后置时,变量先参与表达式运算后再自身减一。 17 【正确答案】 B 【试题解析】 选项 D显然是 错的,而选项 A没有分号结束,不是 C语句;a+=5违反了赋值表达式工侧必须为一个变量 (不能是常量或表达式 )的规定。 18 【
26、正确答案】 A 【试题解析】 本题的考查点是 while()循环语句。本题首先要注意的是对 *y+的运算,由于 +和 *为同 优先级别,且结合方向为自右向左,因此它相当于*(y+)。由于 +在 y的右侧是 “后加 ”,因此先对 y的原值进行 *运算,然后使 y的值改变。 19 【正确答案】 D 【试题解析】 赋值运算符的结合方向是自右至左,所以表达式 a+=a-=a*a先运算最右边 的 a*a得 9,再运算 a=a-9,即 a=3-9,所以此时 a的值由 3变成了 -6,最后运算 a=a-+(-6),即 a=(-6)+(-6)=-12。 20 【正确答案】 A 【试题解析】 scanf语句中,
27、键盘输入时使用的间隔符应与输入项之间的间隔符一致。 21 【正确答案】 A 【试题解析】 当 A=1时,( A=1) |( A!=1)为真;当 A!=1时,( A=1) |( A!=1)也为真,故正确答案为 A。 22 【正确答案】 C 【试题解析】 a数组是字符串,系统会自动地给它加一个结 束标志符 0,因此 a的长度就变为 4了,所以 a数组比 b数组长。 23 【正确答案】 C 【试题解析】 本题考查函数调用时的参数传递。函数的形参是函数定义时由用户定义的形式上的变量,实参是函数调用时,主调函数为被调函数提供的原始数据。在函数调用时,实参和其所对应的形参分别占用不同的存储单元,彼此之间不
28、影响。 24 【正确答案】 D 【试题解析】 本题考查几个循环语句的关系。 dowhile 语句、 while语句、for语句所实现的循环可以相互替代; dowhile 语句和 while语句的 区别是dowhile 语句至少执行一次。 25 【正确答案】 C 【试题解析】 字符串存储要有结束符 “0”且要占用一个空间,选项 A)、 B)的空间不够; printf用来输出字符,不能输入字符串。 26 【正确答案】 D 【试题解析】 a是一个 2行 3列的二维数组,行下标和列下标都是从 0开始的,数组中的元素为 a00、 a01、 a02、 a10、 a11、 a12,行下标最大值为 1,列下标
29、最大值为 2,因此选项 A、 B、 C都是错误的引用。计算选项 D中数组元素 的下标后得 a00,为正确的引用。 27 【正确答案】 B 28 【正确答案】 C 【试题解析】 该题稍微难一点。主要要搞清楚以下几点 : 定义了一个指针数组char *p2后 ,程序中第一个循环 for(i=0;i2;i+)pi=chi;的作用 ,是使指针数组的p0元素 (它本身是一个指针 )指向了二维数组 ch 的第一行字符串 ,并使指针数组的p1元素指向二维数组 ch 的第二行字符串 ,这样 ,就使指针数组 p和二维数组 ch建立起了一种对应关系 ,以后对二维数组 ch 的某个元素的引用就有两 种等价的形式 :
30、chij或 pij。 对二维数组 ch 的初始化 ,使其第一行 ch0中存入了字符串“6937“,第二行 ch1中的内容为字符串 “8254“。 程序中第二个循环中的循环体s=s*10+pij-0;的功能是这样的 ,每执行一次 ,将 s中的值乘以 10(也即 ,将 s中的数值整体向左移动一位 ,并在空出来的个位上添一个 0),再将当前 pij中的字符量转换为相应的数字 ,然后把这个数字加到 s 的个位上。 注意到内层循环的循环条件0 是指 pij中的字符只要 不是字符串结束标志 0就继续循环 ,语句j+=2;是使下标 j每次增加 2,也即一个隔一个地从 p i所指向的字符串中取出字符。经过上述
31、解析后,不难看出,该程序首先从 p 0所指向的字符串 “6937“中一个隔一个地取出字符,分别是 6和 3,然后从 p 1所指向的字符串 “8254“中一个隔一个地取出字符,分别是 8和 5,同时经过转换和相加运算后,结果 s中的值应该是 6385。 29 【正确答案】 A 【试题解析】 函数 getchar()的作用是从终端 (或系统隐含指定的输入设备 )输入一个字符, 且只能接受一个字符 (回车符也是一个字符 )。故本题中变量 c1 被赋予字符 a, c2 被赋予回车符。 30 【正确答案】 D 【试题解析】 通常,引用一个数组元素可以用下标法,如 sp-a和 pi的形式;或指针法,如 *
32、(&ai)的形式。在本题中 a0=0, a9=9,显然 a10超出了数组范围。 31 【正确答案】 A 【试题解析】 在 main 函数中,调用 reverse函数将 b数组中的前 8个成员进行互置,执行完毕后, b数组中的成员为 8, 7, 6, 5, 4, 3, 2, 1, 9, 10,然后再执行 for循环结构,将 b6, b7, , b9的值相加,结果为 22。 32 【正确答案】 D 【试题解析】 选项 D) 为两条语句,每条语句以分号结束。 33 【正确答案】 A 【试题解析】 当运算符 “/”的左右两边运算分量都是整数的时候,运算结果也是一个整数,如果除不净则舍去小数部分。若两个
33、运算分量有一个是实数,才会返回真正除法上的实数结果。选项 A中传递给 sin()函数的参数表达式 1/2计算出来的结果为整数 0,所以不能正确计算出题目要求的值,而其余选项中,除号两边都至少有一个 运算分量是实数,故应该选择 A。 34 【正确答案】 D 【试题解析】 本题考查的是函数的定义。 C语言中有两种函欺,一种是没有返回值的函数,这种函数的返回值类型是 void;另一种是有返回值的函数,其返回值类型是 void以外的任何类型。 void 类型函数不能返回值,否则编译通不过。本题是一道陷阱题,考生如果没注意到 F()函数被定义为 void类型的话,很容易错选为选项 A,其实应该选择选项
34、D,编译出错 ! 35 【正确答案】 C 【试题解析】 本题要注意静态变量 d。第 1次执行 fun(d),即 fun(1),在函数fun里对静态变量赋初值 5,得到 d=d+p=5+1=6 并输出,返回 6;第 2次执行fun(a+fun(d),即 fun(3+6)=fun(9),在函数 fun 中直接执行 d=d+p=6+9=15 并输出,然后返回 15再一次输出。 36 【正确答案】 A 37 【正确答案】 A 【试题解析】 主函数中首先定义了 4个字符变量 a、 b、 c、 d,然后通过 scanf()函数输入 a、 b、 c、 d。 a和 b 是按字符格式输入, c和 d 是按带符号
35、整型格式输入,并要求 a、 b、 c、 d 都按字符输出。故 a和 b 原样输出为 6、 5, c和 d 将把ASCII码值分别为 65和 66的字符输出, A的 ASCII码值为 65, B 的 ASCII码值为 66,故最后的输出为 6, 5, A, B。所以, 4个选项中选项 A符合题意。 38 【正确答案】 A 【试题解析】 在 C语言中所谓函数的递归是指在调用一个函数的过程中,又出现了直接或间接调用该函数本身,直接调用该函数本身的称为函数递归,而间接调用该函数称为函数的间接递归调用。由程序可以看出函数 f(a,i,j)为一递归函数,其功能是当 i j时,将数组中的元素 ai和 aj交
36、换,然后再调用函数 f(a,i+1,j-1),将数组中 ai+1和 aj-交换,这样一直递归到数组下标 i=j,可见该递归函数的作用是使数组中首尾元素依次互换。主函数中定义了一个长度为 5的数组 aa并初始化,然后调用 f(a,0,4),将数组 a中的元素依次互换,故最后 for循环输出的数组 aa中各元素的值为 5、 4、 3、 2、 1,所以, 4个选项中选项 A符合题意。 39 【正确答案】 A 【试题解析】 执行 t=x+5:使指针指向数组元素 59,运算符 *和 -的优先级相同,结合性为自右向左,先计算 -t,对 t减 1,使 t指向数组元素 78,再 计算 *t,取该地址单元的值
37、78。 40 【正确答案】 A 41 【正确答案】 A 【试题解析】 本题主要考查运算表达式的运算。 3+(int)(x)的结果是10011010, 3的结果是 11111100,二者逻辑与得 10011000。 42 【正确答案】 右子树 (单支树 ) 【试题解析】 二叉排序树对于任意新结点,若大于等于根结点,则在右子树上建立。 43 【正确答案】 数据模型 44 【正确答案】 关系 【试题解析】 关系模型用二维表表示,则每个二维表代表一种关系。 45 【正确答案】 92 46 【正确答案】 物理独立性 【试题解析】 数据的独立性是指数据和应用程序相互独立,分为物理独立性和逻辑独立性。其中物
38、理独立性是指数据的物理结构 (包括存储结构、存取方式 )改变时,不需要修改应用程序。而逻辑独立性是指当逻辑结构改变时,不需要修改应用程序。 47 【正确答案】 12 【试题解析】 x=(表达式 1,表达式 2, ) 的形式,结果为最后一个表达式的值: x=(a=4,6*2)=2*6=12。 48 【正确答案】 25 【试题解析】 首先,执行 +a之后, a的值变为 6而表达式 +a的值为 5,再接着执行 -a后, a的值变为 5,表达式 -a的值为 5,所以 b=5*5=25 49 【正确答案】 选择结构 【试题解析】 程序设计语言仅仅使用顺序、选择和重复 (循环 )三种基本控制结构就足以表达
39、出各种其他形式结构的程序设计方法。遵循程序结构化的设计原则,按结构化程序设计方法设计出的程序易于理解、使用和维护;可以提高编程工作的效率,降低软件的开发成本。 50 【正确答案】 abcbcc 51 【正确答案】 100 【试题解析】 本题考查带参 数的宏定义及相关运算。运算过程为:k=B*20=(A+3)*20=(2+3)*20=100。 52 【正确答案】 x 【试题解析】 本题考查的知识点是 while循环的程序分析;主函数中首先定义了一个字符型变量 C,接着执行下面 while语句,在 while循环中,首先从键盘上读入一个字符 Y并给赋给字符变量 C,赋值表达式的值不为 ?,执行输出
40、语句,输出字符 x。接着判断 while中的循环条件,读入一个字符 ?,并赋值给 c,赋值表达式的值为 ?,循环条件不再满足,退出循环。 53 【正确答案】 15 【试题解析】 在函数 f()中只有一条 if 语句,如果 n不小于 1,则返回 f(a,n-1)+an-1);,否则返回 0。所以 f(aa,5)返回 f(aa, 4)+aa4,而 f(aa,4)返回f(aa,3)+aa3 直到 f(aa,0)返回 0故 f(aa,5)实际返回值是0+aa1+aa2+aa3+aa4+ aa5,所以本题最终输出 15。 54 【正确答案】 a b c d e f g l k j i h 【试题解析】
41、本题主要考查了字符变量可参与的运算。因为字符在计算机 中是以ASCII码的形式存放的,所以字符变量可看作整型变量来处理,如参与算术运算等,某字符的大写字母的 ASCII码值比它对应的小写字母 ASCII 码值小 32。 55 【正确答案】 function running result is: 9.0 56 【正确答案】 60 【试题解析】 本题定义了一个 3行 2列的二维数组 a,并定义了一个指向两个元素的一维数组指针 p,让 p 指向二维数组 a的首行。 *(*(p+2)+1)是引用 a21,其值是 60。 57 【正确答案】 si 0|si 9 或 !(si =0&si =9)或 !(i
42、sdigit(si)或 isdigit(si)=0或 si 9|si 0或 !(si =9&si =0)或 *(s+i) 0|*(s+i) 9 或 !(*(s+i) =0&*(s+i) =9或 !(isdigit(*(s+i) 或 *(s+i) =9&*(s+i) =0或 !(*(s+i) =9&*(s+i) =0 或 isdigi 【试题解析】 从一个字符 串中删除某字符的力 法是从字符串的第一个字符开始一一判断该字符是否是要被删除,若不是则把它放到结果字符串中,若是则不放入结果字符串中。本题的第一个空应判断 si是否为数字字符,只有在不是数字字符的情况下才存入结果字符串,所以应填入 si 0|si 9。最后应在结果字符串的末尾填上字符串结束标志 0。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1