1、国家二级( C语言)笔试模拟试卷 23及答案与解析 1 算法执行过程中所需要的存储空间称为算法的 ( A)时间复杂度 ( B)计算工作量 ( C)空间复杂度 ( D)工作空间 2 以下数据结构中属于线性数据结构的是 ( A)集合 ( B)线性表 ( C)二叉树 ( D)图 3 下列数据结构中,能用二分法进行查找的是 ( A)顺序存储的有序线性表 ( B)线性链表 ( C)二叉链表 ( D)有序线性链表 4 函数重载是指 ( A)两个或两个以上的函数取相同的函数名,但形参的个数或类型不同 ( B) 两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同 ( C)两个以上的函数名字不
2、问,但形参的个数或类别相同 ( D)两个以上的函数取相同的函数名,并且函数的返回类型相同 5 检查软件产品是否符合需求定义的过程称为 ( A)确认测试 ( B)集成测试 ( C)验证测试 ( D)验收测试 6 在结构化程序设计方法中,下面哪种内聚的内聚性最弱 ? ( A)逻辑内聚 ( B)时间内聚 ( C)偶然内聚 ( D)过程内聚 7 支持数据库各种操作的软件系统叫做 ( A)数据库管理系统 ( B)文件系统 ( C)数据库系统 ( D)操作系统 8 数据库系统可分为三级模式,下列选项中不属于数据库三级模式的是 ( A)抽象模式 ( B)外模式 ( C)概念模式 ( D)内模式 9 在数据库
3、设计的四个阶段中,为关系模式选择存取方法应该是在 _阶段。 ( A)需求分析 ( B)概念设计 ( C)逻辑设计 ( D)物理设计 10 以下说法不正确的是 ( A) C程序中必须有一个 main()函数, C程序是从 main()函数的第 1条语句开始执行的。 ( B)非主函数都是在执行主函数时,通过函 数调用或嵌套调用而得以执行的。 ( C) C程序中的 main()函数必须放在程序的开始位置。 ( D) C程序中的 main()函数位置可以任意指定。 11 C语言中用于结构化程序设计的三种基本结构是 ( A)顺序结构、选择结构、循环结构 ( B) if、 switch、 break (
4、C) for、 while、 do-while ( D) if、 for、 continue 12 为了使模块尽可能独立,要求 ( A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强 ( B)模块的内聚程度要尽量高,且各模块间的耦合 程度要尽量弱 ( C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱 ( D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽最强 13 以下非法的赋值语句是 ( A) n=(i=2, +i); ( B) j+; ( C) +(i+1); ( D) x=j 0; 14 有以下程序: main() int a=1, b=2, m=0, n=0, k; k
5、=(n=b A) (m=a B) ; printf (“%d, %dn“, k, m); 程序运行后的输出 结果是 ( A) 0, 0 ( B) 0, 1 ( C) 1, 0 ( D) 1, 1 15 已知 i、 j、 k为 int型变量,若从键盘输入: 1, 2, 3回车,使 i的值为 1、 i的值为 2、 k的值为 3,以下选项中正确的输入语句是 ( A) scanf(“%2d%2d%2d”, if(a B) if(b C) printf (“%d“, d+ +1); else printf(“%d“, +d +1); printf(“%dn“, D) ; 程序运行后的输出结果是 ( A)
6、 2 ( B) 3 ( C) 43 ( D) 44 20 若定义: int a=511,*b= printf(“%dn“, S(i+i); 58 以下程序的输出结果是 _。 main() int a=0; a+- (a=8); printf (“%dn“ , a); 59 若有以下程序 main ( ) int a=4,b=3,c=5,t=0; if(a b)t=a;a=b;b=t; if(a c)t=a;a=c;c=t; printf(“%d %d %dln“,a,b,c); 执行后输出结果为 _。 60 以下程序的功能是计算 : s=1+12+123+1234+12345。请填空。 mai
7、n() int t=0,s=0,i; for(i=1;i =5;i+) t=i+_; s=s+t; printf(“s=%dn“,s); 61 若 有以下程序 main() char a; a=H-A+0; printf(“%cn“,a); 执行后输出的结果是 _。 62 以下程序的输出结果是 _。 main() char *p-“abcdefgh“,*r; long *q; q=(long*)p; q+; r=char*)q; printf(“%sn“,r); 63 以下程序中, for循环体执行的次数是 _。 #define N 2 #define M N+1 #define K M+1*
8、M/2 main() int i; for (i-1;i K;i+) . . 64 以下程序运行后的输出结果是 _。 struct NODE int hum; struct NODE *next; ; main ( ) struct NODE s3=1, 0 ,2, 0 ,3, 0 ,*p,*q,*r; int sum=0: s0.next=s+1; s1.next=s+2; s2.next=s: p=s; q=p- next; r=q- next; sum+=q- nexs- num; sum+=r next- next- num: prlntf(“%dn“,sum ; 65 设有以下定义
9、stnct ss int info; sEruc5 ss *link;x.y,z; 且已建立如下图所示链表结构: 请写出删除结点 y的赋值语句_。 66 已有文本文件 test.txt,其中的内容为: Hello,everyone!。以下程序中,文件test.txt已正确为 “读 ”而打开,由此文件指针 fr指向文件,则程序的输出结果是_。 #include stdio.h main() FILE *fr; char str40; fgets(str,5,fr); printf(“%sn,str); fclose(fr); 67 以下程序通过函数 SunFun 求 。这里 f(x) =x2+l
10、, 由 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(int x) return (_); 68 以下程序中 select函数的功能是 :在 N行 M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。 #define N 3 #define M 3 selectint aNM,int *n; int i,j,row=l,eolum=l; for(i=0
11、;i N;i+ for j=0;j M;j+) if(aij arowcolum)row=i;colum=j: *n=_; return_; main() int aNM=9,11,23.6,1,15,9,17,20, max,nj max=select(a, printf(“max=%d, line=%dn“,max.n ; 国家二级( C语言)笔试模拟试卷 23答案与解析 1 【正确答案】 C 【试题解析】 算法执行时所需要的存储空间,包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间,其中额外空间还包括算法程序执行过程的工作单元以及某种数据结构所需要的
12、附加存储空间这些存储空间共称为算法的空间复杂度。 2 【正确答案】 B 【试题解析】 所谓的线性结构是指:如果一个非空的数据结构满足下列两个条件,即 1)有且只有一个根结点; 2)每一个结点最多有一个前件,也最多有一个后件。同时满足两个条件的只有线性表,而其他三种数据结构的结点可能存在多个前件或后件,所以不是线性结构。故答案为 B。 3 【正确答案】 A 【试题解析】 二分查找只适用于顺序存储的有序表。在此所说的有序表是指线性表中的元素按值非递减排列 (即从小到大,但允许相邻元素值相等 )的。选项 A正确。 4 【正确答案】 A 【试题解析】 函数重载指的是两个或两个 以上的函数具有相同的函数
13、名,但形参的个数或类型不同。程序中通过判断主调函数传过来的参数的个数和类型,来决定选择调用哪个具体的函数。 5 【正确答案】 A 【试题解析】 确认测试是要检查已实现的软件是否满足了需求规格说明书中确定了的各种需求,以及软件配置是否完全、正确。软件需求规格说明书是软件确认测试的基础。 6 【正确答案】 C 【试题解析】 内聚有很多种类,其中内聚性由弱到强的顺序为:偶然内聚、逻辑内聚、时间内聚、过程内聚所以本题的答案为 C。 7 【正确答案】 A 【试题解 析】 数据库管理系统是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等操作。所以答案为 A。 8 【正确答案
14、】 A 【试题解析】 数据库的三级模式是指概念模式、内模式和外模式,其中外模式又叫子模式,内模式又叫物理模式所以本题答案为 A。 9 【正确答案】 D 【试题解析】 需求分析阶段是分析用户的需求,显然不属于这个阶段,由此可以排除选项 A概念设计是将需求分析得到的用户需求抽象为信息结构及概念模型的过程,涉及不到数据的存取,所以选项 D错误。逻辑设计是在概念设计的基础上将 E-R图转换成数据库管理系统的逻辑数据模型表示的逻辑模式,也不涉及存取问题,选项 C也不对。答案为 D。 10 【正确答案】 C 【试题解析】 本题考核的知识点是 main()函数的作用,以及 main()函数在程序中出现的位置
15、。一个完整的 C语言程序有且仅有一个主函数 (main()函数 )。程序总从 main()函数的第一条语句开始执行,到 main()函数的最后一条语句结束,其他函数都是在执行 main()函数时,通过函数调用或嵌套调用而得以执行的。 C语言规定, main()函数在程序中的位置是任意的,故选项 c不正确。所以, 4个选项中 C符合题意。 11 【正确答案】 A 【试题解析】 结构化程序设计是由 3种基本结构组成的,它们是顺序结构、选择结构和循环结构。所以, A选项为所选。 12 【正确答案】 B 【试题解析】 系统设计的质量主要反映在模块的独立性上评价模块独立性的主要 标准有两个:一是模块之间
16、的耦合,它表明两个模块之间互相独立的程度;二是模块内部之间的关系是否紧密,称为内聚一般来说,要求模块之间的耦合尽可能地弱,即模块尽可能独立,而要求模块的内聚程度尽量地高。综上所述,选项 B的答案正确。 13 【正确答案】 C 【试题解析】 本题考查的知识点是赋值语句的基本知识。在表达式的运算中,双目赋值运算符的格式为 “变量二表达式 ”,单目运算符一般形式为 “运算符表达式 ”或 “表达式运算符 ”。常量和表达式是不能被赋值的。选项 A为复合表达式,首先计算 (i=2, +i)的值,然后赋 值给 n,故选项 A正确;选项 B为简单自加运算,故选项 B正确;选项 C在表达式 +(i+1);中,
17、(i+1)不是变量,该表达式的值为常量,而在 +运算中,其运算对象必须为变量,故选项 C错误;选项 D中为复合赋值表达式,正确所以应当选择 C。 14 【正确答案】 C 【试题解析】 在 “|”运算中当其左边的表达式为真,右边的表达式将不再执行。主函数中, “|”左边的表达式 k=(n=ba), “21”为真,所以 n被赋值为 1,接着 k被赋值 1,即 “|”运算符左边表达式为真,此时不再计算 “|”右边的表达式, 因此 m的值没有被改变仍为 0,最后的输出结果 1, 0。所以, 4个选项中选项 C符合题意。 15 【正确答案】 C 【试题解析】 本题考查的知识点是输入函数 scanf()基
18、本用法。使用该语句时,要求除格式控制符以外的字符都要原样输入, “, ”为非格式符,要原样输入。选项 A,输入格式描述为 “ 2d 2d 2d”,输入要用空格隔开,不满足键盘输入1,2,3的条件,故 A错误:选项 B中,输入格式描述符为 “ d d d”,输入也要用空格隔开,故错误:选项 D中,输入格式描述符为 “i= d, i= d, k= d”,应该从键盘输入 i=1, j=2, k=3,才能使得 i, j, k的值为 1, 2, 3,故选项 D错误。 4个选项中 C正确。 16 【正确答案】 D 【试题解析】 逗号运算符的结合性为从左到右,其一般形式为 “表达成 1,表达式 2”,整个表
19、达式的值为表达式 2的值。故 4个选项中选项 D符合题意。 17 【正确答案】 C 【试题解析】 在数据库系统中,由于采用的数据模型不同,相应的数据库管理系统 (DBMS)也不同。目前常用的数据模型有三种:层次模型、网状模型和关系模型。在层次模型中,实体之间的联系是用树结构 来表示的,其中实体集 (记录型 )是树中的结点,而树中各结点之间的连线表示它们之间的关系。因此,本题的正确答案是 C。 18 【正确答案】 C 【试题解析】 本题考核的知识点是关系运算和逻辑运算的混合应用。选项 A用了一个绝对值函数 abs(),故选项 A正确:选项 B中用了一个 “&”逻辑与,故选项 B正确:选项 C中,
20、 “|”左边的式子如为真,将不再判断其后的表达式的值,故选项 C不正确;选项 D为本题中数学关系式的一个等价命题,故选项 D正确所以, 4个选项中选项 C符合题意。 19 【正确答案】 A 【试题解析】 本题考核的知识点是 if-else语句的程序分析。我们首先看程序中if-else的匹配,由于 C语言中规定 else总是与最近的 if搭配,因此程序中 else与第二个订搭配,即该 if-else语句为第一个 if语句的执行部分,接着判断第一个 if后面括号里的表达式的值 “ab”为假 (“34“为假 ),因此不执行后面 if-else语句,程序将执行下面的输出语句输出 d,而 d一直未被改变
21、故为原来的值 2,所以, 4个选项中选项 A符合题意。 20 【正确答案】 D 【试题解析】 本题考核的知识点是 printf()函数的输出格式本题中先定义了一个 int型的变量 a并赋初值为 511,接着定义了一个指向 a的指针变量 b,在printf()函数的输出格式中,是输出 *b,即输出指针所指向变量 a的值为 511,因此输出 511。所以, 4个选项中 D为所选。 21 【正确答案】 B 【试题解析】 本题中首先定义了三个整型变量 x、 y和 z并分别赋值为 0、 5和3, while循环的判定条件为 z- 0&+x 5,由于 x的初值为 3,所以当 z-执行3次后, z- 0将不
22、在成立,又由于 x的初值为 0,所以 +x执行 5次, +x 5将不再成立,而它们两个表达式的值为逻辑与的关系,故当 z- 0不成立时整个表达式的值为假,因此该循环共执行了 3次,即语句 y=y-1共执行了三次,但 while循环的判定表达式却执行了四次,故起最后输出的 x、 y、 z的值分别为 3, 2, -1,所以, 4个选项中选项 B符合题意。 22 【正确答案】 A 【试题解析】 程序中使用了两层 for循环,外层循环的作用是控制人数,循环一次是求一个人的成绩和,然后除以 4得到平均成绩。每个人的成绩总和一开始时都必须清 0,否则就会出现后面人的总成绩越来越大。 “sum=0.0”;应
23、在外层循环中。选项 A正确。 23 【正确答案】 D 【试题解析】 break语句只能在循环体和 switch语句体内使用,当 break出现在switch语句体内时,其作用只是跳出该 switch语句体。当 break出现在循环体中,但不在 switch语句体内时,则在执行 break后,跳出本层循环体而continue语句的作用是结束本次循环,即跳过本次循环中余下尚未执行的语句,接着再一次进行循环的条件判定。本程序中,变量 i的初始值为 0,判断 while后面括号内表达式的值为真,执行循环体 内的 if语句,判断 if后面括号内表达式的值为真,执行 “continue; ”语句因 con
24、tinue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判断,所以 i的值未发生变化,循环条件仍然为真, if语句也仍然成立,因此循环将无止境地进行下去。所以, 4个选项中 D为所选。 24 【正确答案】 C 【试题解析】 将题目中的定义语句去掉前面的 typedef和后面的 OLD(分号保留 ),就是一条完整的结构体定义语句,其中 struct是说明符, NODE是结构体名,大括号里面的是 结构体成员的定义此时要声明该结构体变量时需要使用 struct加结构体名一起来声明, struct NODE一起构成一个结构体类型,就好像字符类型 char。若只去掉
25、前面的 typedef,就是一条结构体定义同时声明一个结构体变量 OLD的语句,因为 OLD的前面部分是 struct NODE的完整写法,可以看作是 struct NODE。 C语言允许用 typcdcf说明一种新类型名,其语法格式为: typedef 类型名 标识符; 以后就可以用该标识符来代替被说明的类型名了。因此,当前面存在 typedef时,该语句就变 成 7给 struct NODE的完整写法定义一个新的名称 OLD。所以,此时的 OLD是一个结构体类型,它相当于 struct NODE,即可以和 char一样单独用来声明该结构体变量,而 NODE只是一个结构体名,不能单独用来声明
26、变量。所以, 4个选项中 C符合题意 25 【正确答案】 C 【试题解析】 选项 A中应将 y和 m前面的函数的类型说明符去掉,故选项 A不正确;选项 B中函数传了 2个参数,其中一个为整型一个为浮点型,而 fun()函数在定义时声明的 2个参数,一个为整型一个为双精度型,其参数类型不一致,故选项 B不正确;选项 D在调用函数时,不应该再声明其返回类型,故迭项 D不正确所以, 4个选项中选项 C符合题意。 26 【正确答案】 B 【试题解析】 scanf函数的第一个参数是格式控制字符串,该字符串中所出现的格式控制符必须与 scanf函数的笫二个及其后面的参数一一对应本题中四个选项的格式控制字符
27、串都是 “%d%s“,其中包括两个格式控制符 %d和 %s,它们分别表示输入一个十进制整数和输入一个字符串,其对应的参数应该分别为一个整型变量的地址和一个字符型数组的首地址。变量的地址可以通过对变量做取地址 (&)运 算来得到,而宇符型数组的首地址则可以直接通过数组名来得到。所以, 4个选项中选项 B符合题意。 27 【正确答案】 A 【试题解析】 当运算符 “/”的左右两边运算分量都是整数的时候,运算结果也是一个整数,如果除不净则舍去小数部分。若两个运算分量有一个是实数,才会返回真正除法上的实数结果。选项 A中传递给 sin()函数的参数表达式 1/2计算出来的结果为整数 0,所以不能正确计
28、算出题目要求的值,而其余选项中,除号两边都至少有一个运算分量是实数,故应该选择 A。 28 【正确答案】 B 【试题解析】 本 题定义了一个返回值为指针的函数 f(),此函数有两个指针型的形参 x和 y)该函数的功能,是返回 x和 y指向的变量中值较小的那个指针变量。主函数中定义了两个指针变量 p和小并让它们指向了变量 a和 b,调用函数 f(),返回指向的变量值较小的指针变量, r的值为指针变量 p的值 (变量 a的地址 ),因此最后输出的 *p、 *q和, r的值是 7, 8和 7。所以, B选项为所选。 29 【正确答案】 D 【试题解析】 在 C语言中字符串的比较用 strcmp()函
29、数,该函数有两个参数,分别为被比较的两个字符串。如果第一个字符串大于第二 个字符串返回值大于 0,若小于返回值小于 0,相等返回值为 0字符串比较大小的标准是从第一个字符开始依次向右比较,遇到某一个字符大,该字符所在的字符串就是较大的字符串,如果遇到某一个字符小,该字符所在的字符串就是较小的字符串。本题中要求当 s1所指字符串大于 s2所指串时,执行语句 s,因此应该为 strcmp(s1, s2) 0或者strcmp(s2, s1) 0,所以, 4个选项中选项 D符合题意。 30 【正确答案】 A 【试题解析】 因为条件运算符的结合方向为 “自右至左 ”,所以表达式 a b?a: c d?c
30、:d相当于 a b?a:(c d?c:D) 。由于 a=1, b=4,所以 a b的结果为 “真 ,所以整个表达式的值为 a的值 1。所以, 4个选项中选项 A符合题意。 31 【正确答案】 A 【试题解析】 本题考核的知识点是通过指针引用数组的元素的方法本题中首先定义了一个一维数组 a并初始化,由于定义该数组的时候省略了长度,因此该数组的长度为初始化时候赋初值的个数即为 12。数组名 a代表数组的首地址,所以*p=a+5语句使得 p指向数组的第 6个元素,而在程序中定义了一个指针 q并让它指向空,实际上程序并没有在内存中为 指针 q开辟存储空间,这样给 q赋值不允许的,故该程序运行后报错。所
31、以, 4个选项中选项 A符合题意。 32 【正确答案】 B 【试题解析】 选项 A定义数组时省略了长度,而 C语言中规定,只有在定义并同时进行初始化时,数组的长度才可以省略,数组的长度为初始化时候的成员个数,故选项 A错误:在 C语言中规定,数组的长度必须是一个整数或整型常量表达式,故选项 C不正确;定义时数组的长度不能使用变量表示,故选项 D不正确,所以, 4个选项中选项 B符合题意。 33 【正确答案】 A 【试题解析】 在 C语言中,行参的 缺省存储类为 auto。所以, 4个选项中 A为所选 34 【正确答案】 D 【试题解析】 本题首先定义了一个字符型指针变量 p,并用一个宇符串给它
32、赋值,然后调用 printf()函数输出 p所指向的字符串的长度。字符串的结束标记为“0”,其长度为 “0”前的字符个数,故长度为 5。所以 4个选项中 D正确。 35 【正确答案】 C 【试题解析】 在函数 fun()中有两个字符型指针变量 s1和 s1,在函数中程序执行while循环,该循环退出条件有两个:一个是 s1i!=s2i (两个字符串不相等 );第二个是 sli和 s2i相等均为 “0” (两个字符串相等 )。循环退出后,执行 return语句,即两个字符串相等则返回 1,不相等则返回 0。所以, C选项为所选。 36 【正确答案】 D 【试题解析】 在 C语言中,函数参数的默认
33、传递方式是传值,即函数内部的形参只是调用时的实参的一个拷贝,改变形参,实参不会被改变如果想要实现传址调用只能使用传递指针的方式来实现利用指针作函数的参数时,无论形参指针还是实参指针所指的都是同一个内存地址,所以形参如果改变了这个地址中的内容,也就是改变了实参所指 的地址内容本题程序开头定义了一个函数 f(),在函数中用一个临时变量 t交换了两个指针参数所指的地址内容,所以该函数的作用就是交换两个参数所指的内容。在主函数中,首先定义了一个 int型数组 a,并定义了两个 int型指针 p、 q分别指向数组 a的第一个元素和最后一个元素。然后使用一个 while循环调用函数 f()不断交换两个指针
34、所指的内容,每次交换后 p往后移动一个元素, q往前移动一个元素,直到 q不再大于 p,即直到两个指针在数组a的中间相遇为止。所以,程序最终运行的结果是数组 a中的所有元素全被反序排列一次。故应该选择选项 D。 37 【正确答案】 A 【试题解析】 本题定义了一个结构体类型并自定义类型名为 STD,用户自定义类型后,就可以利用它进行变量与数组的定义。定义的方法,与 c语言中其他类型的定义完全一样,定义结构型数组并赋初值时,每个元素用一对 “”和 “”括起来,字符型元素用 “”括起来,选项 A, B、 C、 D中只有选项 A符合条件。所以, A选项为所选。 38 【正确答案】 C 【试题解析】
35、在定义共用体的同时,定义了一个共用体型变量 u1,共占两个字节,有两个成员 n和 c,两个成员的首地址是相同的因此给 u1 c赋一个 “A”,其实就是给无符号整型成员 u1.n的低字节赋一个 “A”,输出 u1.n的时候是以字符型的形式输出,只输出它的低地址的一个字节,因此为 “A”。所以, C选项为所选。 39 【正确答案】 A 【试题解析】 字符串比较大小的标准是从第一个字符开始依次向右比较,遇到某一个字符 ASCII码值较大时,该字符所在的字符串就是较大的字符串。主函数中调用了函数 scmp(),分析不难知道该函数的作用是返回参加比较的两个字符串中的较小的字符串,它的主函数中定义了一个二
36、维字符数组来存放三个字符串接着通 过 for循环给每个字符串赋值,赋值后三个字符串分别为 “abcd”、 “abba”、 “abc”,接着比较 str0和 str1的大小,根据字符串大小比较标准可知 str0较小,然后通过函数 strcpy()把 str0中的字符串,拷贝到 string中,然后比较 string和 str2的大小,比较结果是 string较小,最后输出 string的值为 “abcd”,所以,4个选项中选项 A符合题意。 40 【正确答案】 B 【试题解析】 通过观察可知图形共四行,上函数中通过一个 for循环四次,输出4行。第一行输出 3个空格和 1个 “*”,第 2行输出
37、 2个空格和 3个 “”,第 3行输出 3个空格和 5个 “*”,第四行输出 7个 “*”,主函数中通过第二个循环控制每行的输出空格数,第三个 for循环控制输出的 “*”的个数,总结规律:每行输出的 “*”的个数,总比前一行的多 2个,且第一行的个数为 1,可以断定每行输出的 “*”的个数组成了一个公差为 2的等差数列,所以每行输出 “*”的个数即该等差数列的通项,故该空格处应该填写 2*i-1,所以, 4个选项中选项 B符合题意。 41 【正确答案】 C 【试题解析】 本题首先定义了一个 4行 5列的数组 s,又定义了一个指向由 5个元素组成的一维数组的指针变量 ps,通过赋值让 ps指向
38、了数组 s的首地址。此时数组元素 sij的地址为 “*(ps+1)+j”,数组元素 sij可表示为 *(*(ps+1)+j)。选项B表示的是数组元素 a30的地址;选项 D表示的是数组元素 s13的地址;选项 A中 “ps+1”为指向下一行 (第二行 )的地址;选项 c中 ps02无条件等价于“*(ps0+2)”又无条件等价于 ”(*(ps+0)+2)”,即是数组元素 s02。所以, 4个选项中 C为所选。 42 【正确答案】 B 【试题解析】 本题中定义了一个二维数组 b并初始化,定义了一个变量 t并赋初值 1。接着通过一个二重循环将若干个元素的值加到变量 t中。循环的执行步骤是:外层循环变
39、量 i=0时,内层循环变量 j=i,执行语句 “t=t+bibjj”,相当于 t=t+b0b00,由于 b00的值为 0,得到 t的值为 1;依次类推,循环共执行了 3次,最后输出 t的值为 4。所以, 4个选项中 B为所选。 43 【正确答案】 C 【试题解析】 data是一结 构体变量, a是它的成员,因此引用 a域的正确方法是: data.a,取它的地址赋值给指针变量 p的语句应该是: p=&data.a。选项 A,将 a的地址直接赋给了 p,而忽略了 a为结构体内部的一个成员,而不是一单独的变量,故选项 A不正确;选项 B在 p=data.a表达式中右边为一个结构体变量的成员不是地址,而左边为一指针应该将一地址赋给它,改选项 B不正确:选项 D表达式 *p=data.a是将结构体变量中的成员 a的值赋给指针 p所指向的变量值,而不是使指针 p指向 data中的 a域,故选项 D不正确; 4个选项中只有 C正确。 44 【正确答案】 B 【试题解析】 在一个循环体中,若执行到 break则跳出循环体,执行循环体后面第一条语句;若执行到 continue则开始下一次循环体的执行。本题中 a的初始值为 1,在循环体中首先判断 a,如果 =8就用 break跳出循环,接下来的判断语句
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1