1、国家二级( C语言)笔试模拟试卷 105及答案与解析 1 由两个栈共享一个存储空间的好处是 _。 ( A)减少存取时间,降低下溢发生的几率 ( B)节省存储空间,降低上溢发生的几率 ( C)减少存取时间,降低上溢发生的几率 ( D)节省存储空间,降低下溢发生的几率 2 设有两个串 p和 q,求 q在 p中首次出现位置的运算称作 _。 ( A)连接 ( B)模式匹配 ( C)求子串 ( D)求串长 3 n个顶点的连通图中边的条数至少为 _。 ( A) 0 ( B) 1 ( C) n-1 ( D) n 4 对象实现了数据和操作的结合,是指对数据和数据的操作进行 _。 ( A)结合 ( B)隐藏 (
2、 C)封装 ( D)抽象 5 下列叙述中,正确的是 _。 ( A)软件就是程序清单 ( B)软件就是存放在计算机中的文件 ( C)软件应包括程序清单及运行结果 ( D)软件包括程序和文档 6 软件设计中,有利于提高模块独立性的一个准则是 _。 ( A)低内聚低耦合 ( B)低内聚高耦合 ( C)高内聚低耦合 ( D)高内聚高耦合 7 软件生命周期中花费时间最多的阶段 是 _。 ( A)详细设计 ( B)软件编码 ( C)软件测试 ( D)软件维护 8 下列 4项说法中,不正确的是 _。 ( A)数据库减少了数据冗余 ( B)数据库中的数据可以共享 ( C)数据库避免了一切数据的重复 ( D)数
3、据库具有较高的数据独立性 9 下列 4项中,必须进行查询优化的是 _。 ( A)关系数据库 ( B)网状数据库 ( C)层次数据库 ( D)非关系模型 10 最常用的一种基本数据模型是关系数据模型,它的表示应采用 _。 ( A)树 ( B)网 络 ( C)图 ( D)二维表 11 用 C语言编写的代码程序 ( )。 ( A)可立即执行 ( B)是一个源程序 ( C)经过编译即可执行 ( D)经过编译解释即可执行 12 ( A) 3*xn(2*x-1) ( B) 3*x*n(2*X-1) ( C) 3*pow(x, n)*(1/(2*x-1) ( D) 3*pow(n, x)/(2*x-1) 1
4、3 下列选项中,合法的 C语言关键字是 ( )。 ( A) VAR ( B) cher ( C) integer ( D) default 14 设有 定义语句: char b=123;则变量 b包括 ( )。 ( A) 4个字符 ( B) 3个字符 ( C) 2个字符 ( D)一个字符 15 若有说明语句 “int a; float b; ”,以下输入语句正确的是 ( )。 ( A) scanf(“%f%f“, scanf(“%d“, if(n+ 10) printf(“%dn“, n); else printf(“%dn“, n-); ( A) 11 ( B) 10 ( C) 9 ( D)
5、 8 18 有以下程序段: int k=O while(k=1)k+; while循环执行的次数是 ( )。 ( A)无限次 ( B)有语法错,不能执行 ( C)一次也不执行 ( D)执行 1次 19 以下程序的输出结果是 ( )。 #include stdio.h main() printf(“%dn“,NULL); ( A)不确定的值 (因变量无定义 ) ( B) 0 ( C) -1 ( D) 1 20 执行以下程序段时,输出结果为 ( )。 double a; a=333.721568; printf(“%-62en“, a); ( A)输出格式描述符的域宽不够,不能输出 ( B) 33
6、.721568e+01 ( C) 3.3e+02 ( D) -3.33e2 21 对于下面的语句,叙述正确的是 _。 char c1=“abcd“; char c2=a,b,c,d; ( A)数组 c1和数组 c2等价 ( B)数组 c1占用空间大于数组 c2占用空间 ( C)数组 c1占用空间小于数组 c2占用空间 ( D)数组 c1和数组 c2的长度相同 22 以下程序的运行结果是 _。 main() char n=0x20; printf(“%dn“,n=n 1); ( A) 100 ( B) 160 ( C) 128 ( D) 64 23 判断字符型变量 chr为小写字母的表达式是 _
7、。 ( A) a chr z ( B) (chr a)|(chr z) ( C) (chr A) a100;a+) if (b 20)break; if(b%3=1) b+=3; continue; b-=5; printf(“%d“,A) ; ( A) 7 ( B) 8 ( C) 9 ( D) 10 34 以下程序的输出结果是 _。 int x=1; fun(int p) int x=4; x+=p+; printf(“%d“,x); main() int a=3; fun(a) ; x+=a+; printf(“%dn“,x); ( A) 8 4 ( B) 4 5 ( C) 7 4 ( D
8、) 9 5 35 以下程序的输出结果是 _。 fun(int *s,int *p) static int t=3; *p=st; t-; main() int str=1,2, 3, 4,i,m=0; for(i=0;i 4;i+) fun(str,i 3;i+) for(j=0;j 2;j+) k=pij; printf(“%dn“,k); ( A) 17 ( B) 18 ( C) 19 ( D) 23 38 若有以下说明,则能打印出 “Yu”的语句是 _。 struct samp char name10; int number; kk3=“WarBin“,1,“LiYu“,2, “LuHu
9、i“,3; struct samp*str3; str0=str1=str2=k=str2+; printf(“%dn“,strcmp(str1, str2); ( A)正数 ( B)负数 ( C)零 ( D)不确定的值 43 若有以下说明和语句,则值为 6的表达式是 _。 struct stu int n; struct stu*next; ; struct stu a3,*p; a0).n=5; a0.next=gets(s3); for(i=0;i 4;i+) puts(si); 输入数据如下: (此处 CR代表回车符 ) aa bb CR cc dd CR 则程序的输出结果是 _。 (
10、 A) aa bb ccdd ( B) aa bb cc dd ( C) aa bb cc dd ( D) aa bb cc dd 46 下列程序的输出结果是 _。 union un int a3; long b; char c6; un1,*p; main() p=sub(b,i 1MAX;i+) ai-i+i; sub2() int aMAX,i,max; max=5; for(i=0;i max;i+) ai=i; sub3(int a) int i; for(i=0;i MAX;i+) printf(“%d“,ai); printf(“n“); ( A) 0 2 4 6 8 10 12
11、 14 16 18 0 1 2 3 4 ( B) 0 1 2 3 4 0 2 4 6 8 10 12 14 16 18 ( C) 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 ( D) 0 2 4 6 8 10 12 14 16 18 0 2 4 6 8 10 12 14 16 18 50 设有如下程序: fun(float*p1,int n,float*p2,int m,float*s) int i; *s=0.0; for(i=0;i n;i+)*s+=*p1+; for(i=0;i m;i+)*s+=*p2+; main() float a=1.1,2.2,b=1.0,2.
12、0,3.0),*s=a; fun(a,2,b,3,s); printf(“%fn“,*s); 上面程序的输出结果是 _。 ( A) 8.2 ( B) 9.3 ( C) 3.3 ( D) 1.1 51 某二叉树中度为 2的结点有 18个,则该二叉树中有【 】个叶子结点。 52 在面向对象方法中,类的实例称为【 】。 53 诊断和改正程序中错误的工作通常称为【 】。 54 在关系数据库中,把数据表示成二维表,每一个二维表称为【 】。 55 问题处理方案的正确而完整的描述称为【 】。 56 以下程序段的输出结果是 【 】。 int i=9; printf(“%on“,i); 57 以下程序运行后的输
13、出结果是【 】。 main() int a,b,c; a=25; b=025; c=0x25; printf(“%d%d%dn“,a,b,c) ; 58 以下程序运行后的输出结果是【 】。 main() int p7=11, 13, 14, 15, 16, 17, 18; int i=0, j=0; while(i 7 int k; p1=a; p2=b; for(k=0; k 7; k+) if(*(p1+k)=*(p2+k) printf(“%c“,*(p1+k); 62 以下程序运行后的输出结果是【 】。 main() char a=“123456789“,*p; int i=0; p=
14、a; while(*p) if(i%2=0) *p=*; p+; i+; puts(A) ; 63 以下程序中, for循环体执行的次数是【 】。 #define N 2 #define M N+1 #define K M+1*M/2 main() int i; for(i=1;i K;i+) 64 以下程序通过函数 SunFun求 这里 f(x)=x2+1,由 F函数实现。请填空。 main() printf(“The sum=%dn“,SunFun(10); SunFun(int n) int x, s=0; for(x=0;x n;x+)s+=F( 【 】 ); return s; F(
15、int x) return( 【 】 ); 65 以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。请填空。 main() int i,a20, sum, count; sum=count=0; for(i=0;i 20;i+) scanf(“%d“, 【 】 ); for(i=0;i 20;i+) if(ai 0) count+; sum+= 【 】; printf(“sum=%d, count=%dn“,sum,count); 66 以下程序中,函数 SumColumMin的功能是:求出 M行 N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。
16、请填空。 #define M 2 #define N 4 void SumColumMin(int aMN, int *sum) int i,j,k,s=0; for(i=0;i N;i+) k=0; for(j=1;j M;j+) if(aki aji)k=j; s+= 【 】; 【 】 =s; main() int xMN=3, 2, 5, 1, 4, 1, 8, 3, s; SumColumMin( 【 】 ); printf(“%dn“,s); 国家二级( C语言)笔试模拟试卷 105答案与解析 1 【正确答案】 B 【试题解析】 常常一个程序中要用到多个栈 ,为了不发生上溢错误,就必
17、须给每个栈分配一个足够大的存储空间。但实际中,很难准确地估计,若每个栈都分配过大的存储空间,势必造成系统空间紧张;若让多个栈共用一个足够大的连续存储空间,则可利用栈的动态特性使它们的存储空间互补。 2 【正确答案】 B 【试题解析】 子串的定位操作通常称作串的模式匹配,是各种串处理系统中最重要的操作之一,算法的基本思想是:从主串的开始字符起,与模式的第一个字符比较,若相等,则继续比较后续字符,否则从主串的下一个字符起再重新与模式的字符比较,依次类推,直至模式中的每一个字符 依次和主串中的一个连续的字符序列相等,称匹配成功,否则称匹配不成功。 3 【正确答案】 C 【试题解析】 在无向图 (边没
18、有方向性的图 )中,若从顶点 vi到 vj有路径,则称vi和 vj是连通的,若该图中任意两个顶点都是连通的,则称该图为连通图。 4 【正确答案】 C 【试题解析】 对象是由数据及可以对这些数据施加的操作组成的统一体。对象的内部,即处理能力的实行和内部状态,对外是看不见的,这一特性称为对象的封装。 5 【正确答案】 D 【试题解析】 软件 (software)是计算机系统 中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。 6 【正确答案】 C 【试题解析】 模块的独立程度是评价设计好坏的重要度量标准。衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。一般优秀的软件设计,
19、应尽量做到高内聚、低耦合,即减弱模块之间的耦合性,提高模块内的内聚性,有利于提高模块的独立性。 7 【正确答案】 D 【试题解析】 软件生命周期分为软件定义、软件开发及软件运行维护 3个阶段。本题中,详细设计、软件编码和软件测试都属于软件开发阶段;维护是软件生命周期的 最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。 8 【正确答案】 C 【试题解析】 数据库系统具有以下 4个特点:数据的集成性、数据的高共享性与低冗余性、数据的独立性、数据统一管理与控制。 9 【正确答案】 A 【试题解析】 关系数据模型诞生之后迅速发展,深受
20、用户喜爱,但关系数据模型也有缺点,其最主要的缺点是由于存取路径对用户透明,查询效率往往不如非关系数据模型。因此,为了提高性能,必须对用户的查询请求进行优化。 10 【正确答案】 D 【试题解析】 关系数据模型用统一的二维表结构表示实体及实体之间的联系 (即关系 )。 11 【正确答案】 B 【试题解析】 C语言是一种高级语言,用 C语言编写的代码程序经过编译程序编译之后,生成一个后缀为 OBJ的二进制文件 (称为目标文件 ),随后还要由 “连接程序 ”软件,把该 OBJ文件与 C语言提供的各种库函数连接在一起,生成一个以EXE为后缀的可执行文件,才可以执行,因此 C语言不能立即执行。故选项 A
21、、C和 D错误。用 C语言编写的代码程序是一个源程序,选项 B正确。 12 【正确 答案】 C 【试题解析】 在该题中, x的 n次方应该调用函数 pow(x, n)计算,故排除选项A、 B。在选项 D中, pow(n, x)的参数写反了,故选项 C正确。 13 【正确答案】 D 【试题解析】 选项 A中的 VAR不是 C语言中关键字,故选项 A不正确:选项 B中 cher,应改 char, char才是 C语言中的关键字,故选项 B不正确;选项 C中integer在 C语言中简化为 int,这里应该将 integer改为 int, int才是 C语言中的关键字,选项 D中 default为
22、C语言中默认的关键字,故选项 D正确。所 以, 4个选项中选项 D符合题意。 14 【正确答案】 D 【试题解析】 123为转义字符,是一个字符常量,斜线后面的是八进制数,可以由 0开头,最多由 3个八进制数组成。它只代表一个字符,此八进制数就是这个字符的代码。语句 charb=123是给字符变量赋初值,初值为一个字符。所以,选项 D符合题意。 15 【正确答案】 C 【试题解析】 说明语句中变量 a为整型,变量 b为实型。选项 A、 B和 D的格式控制中变量 a的格式描述符为 f,与定义的变量类型不符,故选项 A、 B和 D错误。 16 【正确答 案】 C 【试题解析】 +高于 =和 |,
23、=的优先级最低。而 |为自左向右的结合性,因此先计算表达式 +x的值, x的初值为 3, 3+1=4, 4为非零值,不必再计算 |右侧表达式的值,即可得到整个逻辑表达式的值 1, +y没有做运算,仍为原值 3,所以,选项 C正确。 17 【正确答案】 B 【试题解析】 程序的功能是从键盘输入一个整数,然后执行 if语句的条件表达式n+ 10。表达式 n+ 10,先执行 n 10,后对 n加 1。程序中从键盘输入的 n值为 9, 9 10,判断的条件为真,然后 n加 1,即 n的值变 为 10,程序执行后面的 printf语句输出 n的值为 10,所以,选项 B正确。 18 【正确答案】 A 【
24、试题解析】 程序中, k的初值为 0。执行 while后面小括号中的赋值表达式k=1,则 k的值为 1,即整个表达式的值为真。所以执行循环体,执行语句“k+; ”。因为 k进行自加,不再减小,没有值为 0的可能,即 while后面小括号中的赋值表达式的值一直为真,不能退出循环,因此 while循环将无限次地执行下去,所以,选项 A正确。 19 【正确答案】 B 【试题解析】 在 C语言中 NULL的 ASCII码 值为 0,而输出函数要求以整形格式输出,故最后的输出数 0。所以,选项 B正确。 20 【正确答案】 C 【试题解析】 格式输出符为 e,数据将按科学计数形式输出。 -控制数据左对齐
25、。所以,选项 C正确。 21 【正确答案】 B 【试题解析】 给字符数组按字符串方式初始化,则在字符串末尾有一个字符串结束标志,占一个字节的存储空间,如逐个元素赋值,则不加字符串结束标志。 22 【正确答案】 D 【试题解析】 n初始化时值是十六进制 20(即十进制 32),左移 1位,相当于乘以2,结果是 64。 23 【正确答案】 B 【试题解析】 程序段中定义 x值为 1, !x值为 0,因此循环执行的条件永远成立,该循环是死循环。 24 【正确答案】 C 【试题解析】 a为 5, b为 2,条件表达式不成立,执行 else中的语句, b%a值为 2。 25 【正确答案】 C 【试题解析
26、】 定义枚举类型时,若不给枚举元素指定初值,系统将从 0开始依次给每个枚举元素赋值,若只给某个 (或部分 )元素指定初值,其后元素的值将依次加1。 26 【正确答案】 A 【试题解析】 i+是先取值后判断,再自加,循 环体输出自加后的值,循环体执行 3次,控制符 t是移动水平制表位。 27 【正确答案】 D 【试题解析】 指针变量 ptr是指向长度为 3的整型一维数组,当 ptr指向二维数组 a时, ptr每移动一个单位将指向数组的下一行, *(*(a+1)+2)表示数组元素a12, *(*(ptr+1)+2)也可以。 28 【正确答案】 C 【试题解析】 函数声明语句必须以分号结束,形参要分
27、别说明,若二维数组作为函数的形参,则第二维的大小不能缺省。 29 【正确答案】 C 【试题解析】 ptr指 向指针变量 p, p指向数组 a的首地址, (ptr0+)1+=3;的意思是将 p指向数组元素 a1,并将它的值增 3变为 5,此时, ptr指向 p, p指向 a1。 30 【正确答案】 D 【试题解析】 str1和 str2是数组名,是常量,其值不可改变,所以 A和 B中将字符串常量赋值给 str1和 str2是错误的。字符变量 ch占一个字节,只能存放一个字符,所以 C也不正确。 31 【正确答案】 C 【试题解析】 定义 x时,初始值为十六进制数 48,先执行前置自减,再以十进制
28、数 71输出。 32 【正确答案】 B 【试题解析】 指针变量 p指向数组 a的第 5个元素, p3在原指向基础上移 3个单位,指针变量 p将指向第 8个元素 (下标为 7的元素 ),值为 7。 33 【正确答案】 B 【试题解析】 本题考查循环辅助控制语句 break和 continue,建议读者用本书采用的列表法分析本题。 34 【正确答案】 C 【试题解析】 本题考查局部变量和全局变量的关系。在调用 fun函数时,形参 p值为 3(实参 a传递的 ),在 x+=p+中, x是局部变量 (局部优先 ), x和 p的和 7放在变量 x中, p再自 加变为 4,显示输出 x的值 7;主函数中的
29、 x是全局变量,值为 1, x和 a的和 4放在变量 x中, a再自加变为 4,显示输出 x的值 4。 35 【正确答案】 D 【试题解析】 程序的功能是将字符数组 str中的内容以反序输出。函数 fun中 t为静态变量,每一次调用函数 fun时, t的值为上一次调用函数结束时的值。 36 【正确答案】 A 【试题解析】 整型指针变量 p指向整型变量 x,显然是先定义 x,后定义 p。定义 p时,必须在指针变量名前加 *(否则, p只是不同整型变量 ),取变量 x的地址,要用取地址符 &。 37 【正确答案】 C 【试题解析】 p是指向长度为 4的一维数组的指针变量,可看作是二维数组 a的行指
30、针,可以像使用数组名一样通过 p带数组下标的形式来引用数组中元素,变量 k最后是元素 a21的值。 38 【正确答案】 B 【试题解析】 str是指针数组,每个元素存放的是指向结构体类型数据的地址,每个元素可看作是一个指针变量,通过结构体指针变量引用结构体变量各成员的形式有两种:一是 (*指针变量名 )成员名;二是指针变量名 -成员名。本题可以是 “(*str1) name+2“或 “str1- name+2“。 39 【正确答案】 A 【试题解析】 t的二进制形式是 00000010,前置加之后, t值的二进制形式为 00000011,右移两位,最后两个 1将移出, t值最后是 0。 40
31、【正确答案】 B 【试题解析】 k为指向指针变量 j的二级指针变量,输出项 *(*k+2)等价于*(j+2), i的值是元素 a1的地址, j+2则是 a3的地址, *(j+2)则是取 a3的值。 41 【正确答案】 A 【试题解析】 strcpy(s+1,p2)是字符串复制, s中的内容变 为 “xABC“,strcat(s+2,p1)是字符串连接 (s的内容已不是初始化的内容,而是复制之后的内容 ),结果为 “xABCabc“。 42 【正确答案】 A 【试题解析】 当两个字符串比较到第 5个字符时, str1指向的字符是 e, str2指向的字符是 0,字符串比较函数 strcmp的返回
32、值是这两个字符 ASCII码值的差(101),是正数。 43 【正确答案】 C 【试题解析】 表达式 p+- n相当于先取 p- n的值 (即 a0 n),再 p+(指针后移指向元素 a1):表达式 p- n+相当于先取 p- n的值 (即 a0 n),再将 p- n的值 (即 a0 n的值 )加 1;表达式 +p- n先将 p- n的值加 1(即 a0 n的值加 1),可见,它的值应该是 6。选项 D和选项 B一样。 44 【正确答案】 D 【试题解析】 输入 7,先使 x加 1,条件表达式成立,执行语句printf(“%d“,x);,输出 8;输入 3,先使 x加 1,条件表达式不成立,执
33、行语句printf(“%dn“,x-);,输出 4,再将 x自减。 45 【正确答案】 C 【试题解析】 按题目要求输入数 据后,数组的第一行是字符串 “aa“,第二行是“bb“,第三行是 “cc dd“,第四行没有接收到字符串。 46 【正确答案】 B 【试题解析】 共用体中的成员共同占用一段内存单元,其中整型数组 a中的数据存储形式以及和字符数组的对应关系如图所示。47 【正确答案】 D 【试题解析】 选项 A中指针变量 p没有明确的指向,选项 B是值传递方式,显然不能改变实参中的值,选项 C不能完成交换,实参中的值都变成一样的,只有选项 D是正确的。 48 【正确答案】 C 【试题解析】
34、 函数 fun的功能是将 形参指针变量 y所指变量的值减去形参 x中的值,计算结果赋给 y所指变量。主函数第一次调用函数 sub之后, b的值为 1,第二次调用函数 sub之后, a的值为 0,程序输出为 0, 1。 49 【正确答案】 D 【试题解析】 函数 sub1给全局作用范围内数组 a(长度为 10)的每个元素赋值,函数 sub2中数组 a仅在本函数范围内有效,长度也是 10,但仅给前 5个元素赋值, main函数调用 sub3时,传递数组地址均是全局作用范围内数组 a的地址,因此两次调用打印的结果相同。 50 【正确答案】 A 【试题解析】 实 参指针变量 s指向数组 a的第一个元素
35、,在函数 fun中首先将 s所指数组 a的第一个元素赋值为 0.0,然后将数组 a和 b中的元素值依次累加到数组 a的第一个元素中。 51 【正确答案】 19 【试题解析】 在任意 棵二叉树中,度为 0的结点 (即叶子结点 )总是比度为 2的结点多一个。 52 【正确答案】 对象 【试题解析】 类是具有共同属性、共同方法的对象的集合,它描述了属于该对象类型的所有对象的性质,而一个对象则是其对应类的一个实例。 53 【正确答案】 程序调试 【试题解析】 程序调试是指在 发生程序错误的情况下,确定出错的位置并纠正错误,其中关键是要确定出错的位置。程序调试主要在开发阶段。 54 【正确答案】 关系
36、【试题解析】 在关系数据库中,一个关系的逻辑结构就是一张二维表。这种用二维表的形式表示实体和实体间联系的数据模型称为关系数据模型。 55 【正确答案】 算法 【试题解析】 算法是指解题方案的准确而完整的描述。 56 【正确答案】 11 【试题解析】 本题考核的知识点是 printf()函数的输出格式。本题中定义了一个整型变量 i并赋初值为 9,然后要求以八 进制输出 i的值, 9的八进制数的表示为11。 57 【正确答案】 25 21 37 【试题解析】 本题中先定义了整型变量 a、 b和 c,然后分别给赋值 a为 25, b为八进制的 025 c为十六进制 0x25。然后调用 printf(
37、)函数将 a、 b和 c分别用十进制输出,且中间用空格隔开,八进制 025转换为十进制的值为 21,十六进制的0x25转换为十进制的值为 37,故最后的输出结果为 25 21 37。 58 【正确答案】 24 【试题解析】 主函数中首先定义了一个长度为 7的数组,然后用一个 while循环引用数组的元素,当 i大于 7或者 pi为偶数时,循环结束。显然当 i=2时,p2=14为偶数时,循环结束,此时 j的值为 j=p0+p1=24; 59 【正确答案】 2 1 【试题解析】 外层 switch语句后面括号里的 x的值为 1,所以执行从 casel:后面的语句开始执行,而 cascl:后面语句也
38、为 switch语句,这个 switch语句后面括号里的 y的值为 0,所以从该 switch语句里的 case0:开始执行即执行 a+,这时a的值变为 1,执行完毕,遇到 break语句,退出内层 switch语句,又回到外层switch语句,继续执行 casel:下面的语句即 case2:执行完毕后, a自加 1变为2, b自加 1变为 1。所以最后输出的 a和 b的值为 21。 60 【正确答案】 92 【试题解析】 while循环的和 do-while循环的程序分析。主函数中首先定义了一个 4行 4列的二维数组,然后执行一个 while循环,该循环中又嵌套了一个 do-while循环。
39、现看 while循环,该循环通过 i+的值来判断是否结束循环当 i+的值为 4的时候结束循环,当 i=0时,执行 while的循环体,显然 if语 句条件不满足不执行,接着让 j=0,然后执行 do -while循环体,我们不难看出 do-while循环的功能是将第 i+1行的所有元素加起来,所以这时 s的值为s=a10+a11+a12+a13=26,当 i=1时, i+1=2, if后面括号里的表达式的值为真,执行后面的 continue:语句,结束该次循环;当 i=2时, i加 1变为 3,把第 3+1行的所有元素的加到 s上,此时 s=s+a20+a21+a2 2+a23=92,当 i=
40、3时, 3+1=4, if后面括 号里的表达式的值为真,执行后面的 continue语句,结束该次循环,当 i=3时, if后面括号里的表达式的值为真执行后面的 con- tinue语句,结束该次循环当 i=4时 while循环结束,所以最后输出的 s的值为 92。 61 【正确答案】 gae 【试题解析】 主函数中定义了字符数组 a和 b,其初值分别为 Language和Programe,然后定义了两个指针变量 p1和 p2,并让它们指向 a和 b。通过分析可知下面的 for循环中,每循环一次就将 p1+k和 p2+k所指向的字符进行比较,如果相等,输出该字符, 循环共执行 8次,显然 La
41、nguage和 Programe中只有字符gae相等,所以最后辖出为 gae。 62 【正确答案】 *2*4*6*8* 【试题解析】 程序中定义了一个字符数组 a,并初始化为 123456789,接着定义了一个指针 p并让它指向数组 a,紧接着执行了一个 while循环,此循环的作用是:当 i为偶数时,将 “*”赋给 ai, p指向数组末尾,循环结束,此时数组中a0、 a2、 a4、 a6和 a8的值都为 “*”,所以最后调用 puts()函数输出的 a的值为 *2*4*6*8*。 63 【正确答案】 4 【试题解析】 将程序中所有的宏替换掉可得: M=2+1, K=2+1*2+1/2=4,所以for循环共循环了 K-1+1次,即 4-1+1共 4次。 64 【正确答案】 x x*x+1或 1+x*x 【试题解析】 题目中要求从 x=0开始将 f(x)的值累加起来,直到 x=10。在SunFun()函数中用了一个 for循环,每循环一次将 f(x)累加到 s中,所以在本题的第一个空格处我们应该填 x,然后 x+1,共循环 10次。 F()函数的功能应该是求数学表达式 f(x)的值,所以其返回值应该为 x*x+1。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1