1、二级 C 语言笔试-330 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:50.00)1.若 x 和 y 代表整型数,以下表达式中不能正确表示数学关系x-y10 的是(分数:1.00)A.abs(x-y)10B.x-y-10COLOR;COLOR c1;B.struct color c1int redint green:int blue;C.struct colorint red ,int green :int blue :)cl;D.structint red;int green;int bluec1 ;3.下面对对象概念描述错误的是(分数:1.00)
2、A.任何对象都必须有继承性B.对象是属性和方法的封装体C.对象间的通讯靠消息传递D.操作是对象的动态属性4.有以下程序#includestdio. hmain()char c1=1,c2=2;c1=getchar();c2=getchar();putchar(c1);putchar(c2);当运行时输入:a回车 后,以下叙述正确的是(分数:1.00)A.变量 c1 被赋予字符 a,c2 被赋予回车符B.程序将等待用户输入第 2 个字符C.变量 c1 被赋予字符 a,c2 中仍是原有字符 2D.变量 c1 被赋予字符 a,c2 中将无确定值5.有以下程序:main ( )int X=3, y=2
3、, z=1;printf (“%d/n“, x/y(分数:1.00)A.3B.2C.1D.06.数字字符 0 的 ASCII 值为 48,若有以下程序main()char a=1,b=2;printf(“%c,“, b+);printf(“%d/n“, b-(分数:1.00)A.;程序运行后的输出结果是 A) 3,2B.50,2C.2,2D.2,507.若有以下说明和定义union dtint a;char b;double c; data;以下叙述中错误的是(分数:1.00)A.data 的每个成员起始地址都相同B.变量 data 所占内存字节数与成员 c 所占字节数相等C.程序段:data
4、. a=5;printf(“%Im”,data. C);输出结果为 5.000000D.data 可以作为函数的实参8.程序中对 fun 函数有如下说明void *fun();此说明的含义是(分数:1.00)A.fun 函数无返回值B.fun 函数的返回值可以是任意的数据类型C.fun 函数的返回值是无值型的指针类型D.指针 fun 指向一个函数,该函数无返回值9.软件详细设计的主要仟务是确定每个模块的(分数:1.00)A.算法和使用的数据结构B.外部接口C.功能D.编程10.为了使模块尽可能独立,要求(分数:1.00)A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B.模块的内聚程度
5、要尽量高,且各模块间的耦合程度要尽量弱C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽最强11.当把以下四个表达式用作 if 语句的控制表达式时,有一个选项与其他三个选项含义不同,这个选项是(分数:1.00)A.k%2B.k%2=1C.(k%2)!=0D.!k%2=112.有以下说明和定义语句struct studentint age;char num 8;struct student stu3=20,“200401”,21,“200402”),19,“200403”;struct student *p=stu;以下选项中引用结构体变
6、量成员的表达式错误的是(分数:1.00)A.(p+)-numB.p-numC.(*p).numD.stu3.age13.以下程序的输出结果是main ()char x=040;printf ( “%o/n“ ,x1);(分数:1.00)A.100B.80C.64D.3214.有以下程序main()char str 10=“China“, Beijing“,*p=str;printf(“%s/n“,p+10);程序运行后的输出结果是(分数:1.00)A.ChinaB.BeijingC.ngD.ing15.对长度为 n 的线性表进行顺序查找,在最坏情况下,所需要的比较次数为(分数:1.00)A.l
7、og2nB.n/2C.nD.n+116.概要设计是软件系统结构的总体设计,以下选项中不属于概要设计的是(分数:1.00)A.把软件划分成模块B.确定模块之间的调用关系C.确定各个模块的功能D.设计每个模块的伪代码17.若以下定义:struct linkint data;struck link *next;a,b,c,*p,*q;且变量 a 和 b 之间已有如下图所示的链表结构:(分数:1.00)A.next=c;c.next=b;B.next=q;q.next=p.next;C.p-next=(*q).next=k=*s; *s=*t; *t=k;s+; t-;if(*s) f(s, t);m
8、ain ()char stt10 =“abcdefg“, *p;p=str+strlen (str)/2+1;f (p,p-2);print f ( “%s/n“, str);(分数:1.00)A.abcdefgB.gfedcbaC.gbcdefaD.abedcfg20.有以下程序:main()int a=1, b=2, m=0, n=0, k;k=(n=b(分数:1.00)A.(m=aB.;printf(“%d/n“, F(a+, b+);(分数:1.00)A.12B.15C.16D.2025.若有下面的说明这定义:struct testint m1; char m2; float m3;u
9、nion uu char u15; int u2 2; ua;myaa;则 sizeof (struct test )的值是(分数:1.00)A.12B.16C.14D.926.以下叙述正确的是(分数:1.00)A.C 语言比其他语言高级B.C 语言可以不用编译就能被计算机识别执行C.C 语言以接近英语国家的自然语言和数学语言作为语言的表达形式D.C 语言出现的最晚、具有其他语言的一切优点27.下面叙述不正确的是(分数:1.00)A.算法的执行效率与数据的存储结构有关B.算法的空间复杂度是指执行这个算法所需要的内存空间C.算法的有穷性是指算法必须能在执行有限个步骤之后终止D.算法的时间复杂度是
10、指执行这个算法所需要的时间28.下列关于栈的叙述中正确的是(分数:1.00)A.在栈中只能插入数据B.在栈中只能删除数据C.栈足先进先山的线性表D.栈是先进后出的线性表29.以下非法的赋值语句是(分数:1.00)A.n=(i=2,+i);B.j+;C.+(i+1);D.x=j0;30.有以下程序段int n=0,p;do scanf(“%d”,p=for (i=0;i9; i+) pi =i;for(i=0;i3;i+) printf (“%d“ ,a1 i );程序运行后的输出结果是(分数:1.00)A.012B.123C.234D.34533.用树形结构表示实体之间联系的模型的是(分数:1
11、.00)A.关系模型B.网状模型C.层次模型D.以上三个都是34.设有如下程序段:int x=2002,y=2003;printf(“%d/n”, (x,y);则以下叙述中正确的是(分数:1.00)A.输出语句中格式说明符的个数少于输出项的个数,不能正确输出B.运行时产生出错信息C.输出值为 2002D.输出值为 200335.C 语言中用于结构化程序设计的三种基本结构是(分数:1.00)A.顺序结构、选择结构、循环结构B.if、switch、breakC.for、while、do-whileD.if、for、continue36.有以下程序main()int a=3,b=4,c=5,d=2;
12、if(aB) if(bC) printf (“%d“, d+ +1);elseprintf(“%d“, +d +1);printf(“%d/n“, D) ;程序运行后的输出结果是(分数:1.00)A.2B.3C.43D.4437.设有下列二叉树:(分数:1.00)A.ABCDEFB.BDAECFC.ABDCEFD.DBEFCA38.有以下程序main ()unsigned char a, b, c;a=0x3; b=a0x8; c=b1;printf (“%d% d/n“ ,b, C) ;程序运行后的输出结果是(分数:1.00)A.-11 12B.-6-13C.12 24D.11 2239.设
13、有定义语句int x6=(2,4,6,8,5,7.), *p=x, i;要求依次输出 x 数组 6 个元素中的值,不能完成此操作的语句是(分数:1.00)A.for(i=0;i6;i+) printf(“%2d”,* (p+);B.for(i=0;i6;i+) printf(“%2d”,*(p+i);C.for(i=0;i6;i+) printf(“%2d”,*p+);D.for(i=0;i6;i+) printf(“%2d”,*(p)+);40.有以下程序float fun(int x, int y)returnx+ y); main()int a=2,b=5,c=8;printf(“%3.
14、of/n“,fun(int)fun(a+ c, B) ,a-C) );程序运行后的输出结果是(分数:1.00)A.编译出错B.9C.21D.9.041.有以下程序void fun(char *c, int D) *c-*c+1;d=d+1;printf(“%c, %c,“,*c, D) ;main()char a=A, b=a;fun( printf(“%c, %c/n“, a,B.;C.A, b, A, bD.b, B, A, b42.有以下程序main ( )int num4 4=1,2,3,4,5,6,7,8, 9,10,11,12, 13,14,15,16,i, j;for (i=0;
15、i4; i+)for(j=1; j=i; j+) printf (“%4c“, );for(j=_;j4;j+) printf ( “%4d, num i j );printf ( “/n“ );若要按下形式输出数组右上半三角1 2 3 46 7 811 1216(分数:1.00)A.i-1B.iC.i+1D.4-i43.已知 i、j、k 为 int 型变量,若从键盘输入:1,2,3回车,使 i 的值为 1、i 的值为 2、k 的值为3,以下选项中正确的输入语句是(分数:1.00)A.scanf(“%2d%2d%2d”,printf(“%d/n“, d=ab?(ac ? a: C) :(B)
16、);(分数:1.00)A.5B.4C.6D.不确定45.有以下程序main()int a=1,2,3,4,5,6,7,8,9,0),*p;for(p=a;pa+10;p+)printf(“%d,”,*p);程序运行后的输出结果是(分数:1.00)A.1,2,3,4,5,6,7,8,9,0,B.2,3,4,5,6,7,8,9,10,1,C.0,1,2,3,4,5,6,7,8,9,D.1,1,1,1,1,1,1,1,1,1,46.有以下程序prt (int *m, int n)int i;for (i=0; in; i+)m i+;main ()int a=1,2,3,4,5,i;prta, 5)
17、;for i=0;i5;i+)printf (“%d “,ai);程序运行后输出结果是(分数:1.00)A.1,2,3,4,5,B.2,3,4,5,6,C.3,4,5,6,7,D.2,3,4,5,147.有以下程序main ( )char s=“/n123/“;printf ( “%d, %d/n“, strlen (s) , sizeof (s);执行后输出结果是(分数:1.00)A.赋初值的字符串有错B.6,7C.5,6D.6,648.以下程序中函数 reverse 的功能是将 a 所指数组中的内容进行逆置。void reverse(int a , int n)int i, t;for(i
18、=0;in/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;i10;i+) s+=bi;printf(“%d/n“, s);程序运行后的输出结果是(分数:1.00)A.22B.10C.34D.3049.以下叙述中正确的是(分数:1.00)A.预处理命令行必须位于源文件的开头B.在源文件的一行上可以有多条预处理命令C.宏名必须用大写字母表示D.宏替换不占有程序的运行时间50.若定义:int a=511,*b=break;case 1:b+;bre
19、ak;case 2: a+; b+; break;printf(“%d %d/n“, a, B) ;(分数:4.00)填空项 1:_59.有以下程序#include stdio. hmain()char ch1,ch2; int n1,n2;ch1=getchar(); ch2=getchar(n1=ch1-0; n2-n1*10+ (ch2-0);printf(“%d/n“,n2);程序运行时输入:12回车,执行后输出结果是_ 。(分数:4.00)填空项 1:_60.以下程序的功能是调用函数 fun 计算:m=1-2+3-4+9-10,并输出结果。请填空。int fun( int n)int
20、 m=0,f=1,i;for (i=1:i=n;i+)m+=i*f;f=_ ;return m;main()printf(“m=dn”,_ );(分数:4.00)填空项 1:_61.函数 YangHui 的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下11 11 2 11 3 3 11 4 6 4 1其构成规律是:(1)第 0 列元素和主对角线元素均为 1(2)其余元素为其左卜方和正上方元素之和(3)数据的个数每行递增 1请将程序补充完整。#define N 6void yanghui (int xNN)int i, j;x0 0=1;for(i=1;jN;i+)xi 0=_ =1;
21、for(j=1;ji; j+)xi j=_ ;(分数:4.00)填空项 1:_62.以下函数的功能是删除字符串 s 中的所有数字字符。请填空。viod dele(char *s)int n=0,i;for(i=0;s i;i+)if(_)sn+;si;sn= _;(分数:4.00)填空项 1:_63.以下程序运行后输入:3,abcde回车,则输出结果是_。#include string. hmove (char *str,int n)char cemp; int i;temp=strn-1;for (i=n-1;i0;i-) stri=stri-1);str0=temp; main()char
22、 s50; int n, i, z;scanf(“%d,%s”, i=n;i+)move (s,z);printf(“%s/n”,s);(分数:4.00)填空项 1:_64.以下程序中,函数 SumColumMin 的功能是:求出 M 行 N 列二维数组每列元素中的最小值,并计算它们酌和值。和值通过形参传回主函数输出。请填空。#define M 2#define N 4void SumColumMin(int aMN,int* sum)int i,i,k,s;0;for(i=0;iN;i+)k=0;for(j=1 jM;j+)if(akiaji)k=j;s+=_;_ =s;main()int
23、xMN= 3,2,5,1,4,1,8,3),s;SumColumMin(_ );printf(“%d/n”,s);(分数:4.00)填空项 1:_二级 C 语言笔试-330 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:50.00)1.若 x 和 y 代表整型数,以下表达式中不能正确表示数学关系x-y10 的是(分数:1.00)A.abs(x-y)10B.x-y-10COLOR;COLOR c1;B.struct color c1int redint green:int blue; C.struct colorint red ,int green :int
24、 blue :)cl;D.structint red;int green;int bluec1 ;解析:解析 本题考核的知识点是结构体类型定义。结构体类型的定义格式为:strcut 结构体名成虽说明列表;结构体变量的定义有 3 种形式:第一种,定义结构体型的同时定义结构体变量,如:strcut 结构体名 成员说明列表变量;选项 C 属于这种情况,故选项 C 正确:第二种,先定义一个结构体类型,然后使用该类型来定义结构体变量,如:strcut student成员说明列表:student 变量;选项 A 属于这种情况,故选项 A 正确;第三种,定义一个无名称的结构体类型的同时定义结构体变量,如:s
25、trcut student成员说明列表变量;选项 D 属于这种情况,故选项 D 正确所以,4 个选项中选项 B 符合题意。3.下面对对象概念描述错误的是(分数:1.00)A.任何对象都必须有继承性 B.对象是属性和方法的封装体C.对象间的通讯靠消息传递D.操作是对象的动态属性解析:解析 有时为了保护某些特有的对象,可以通过定义其为私有属性达到不被继承的目的,所以 A选项的说法错误,为所选。4.有以下程序#includestdio. hmain()char c1=1,c2=2;c1=getchar();c2=getchar();putchar(c1);putchar(c2);当运行时输入:a回车
26、 后,以下叙述正确的是(分数:1.00)A.变量 c1 被赋予字符 a,c2 被赋予回车符 B.程序将等待用户输入第 2 个字符C.变量 c1 被赋予字符 a,c2 中仍是原有字符 2D.变量 c1 被赋予字符 a,c2 中将无确定值解析:解析 本题考查的是 getchar()函数。getchar()函数执行时将从键盘缓冲区中读取用户的输入,而不管输入的是否可打印字符,所以当输入 a 后,键盘缓冲区被输入的实际上是两个字符:a和/n。故选项 A 的说法是正确的。5.有以下程序:main ( )int X=3, y=2, z=1;printf (“%d/n“, x/y(分数:1.00)A.3B.
27、2C.1D.0 解析:解析 本题考核的知识点是位运算符的应用。位与运算符“printf(“%c,“, b+);printf(“%d/n“, b-(分数:1.00)A.;程序运行后的输出结果是 A) 3,2B.50,2C.2,2 D.2,50解析:解析 本题考查了字符型变量的运算及输出。在 C 语言中,字符型变量可以看作整型变量来对待,与整型所不同的是字符型变量在内存中只占 1 个字节,而整型是 2 个字节。字符型变量中所存的数值是它所表示字符的 ASCII 码值。ASCII 码中的一些相关字符是顺序排列的,如0的 ASCII 码值为 48,1为49 以此类推一直到9;A的 ASCII 码值为
28、65,B为 66 以此类推一直到Z。本题程序一开始就定义了两个字符型变量 a 和 b,并初始化为字符1和2,由于题目已经告诉,0,的 ASCII 值为 48,所以变量a、b 中所存储的数据分别为 49 和 50。第一条输出语句是按字符格式输出表达式 b+的值和字符,,后缀自加表达式 b+的值就是 b 的值,不过执行完该表达式之后,变量 b 中的值会增 1。所以第一次输出的字符串是“2,“,执行完后 b 中的数据为 51第二条输出语句是按整型格式输出表达式 b-a 的值和一个换行符/n,b-a 的值是 51-49=2,故最终的输出应该为“2,2/n“,/n是非打印字符,即不会在屏幕上显示什么,所
29、以,4 个选项中选项 C 符合题意。7.若有以下说明和定义union dtint a;char b;double c; data;以下叙述中错误的是(分数:1.00)A.data 的每个成员起始地址都相同B.变量 data 所占内存字节数与成员 c 所占字节数相等C.程序段:data. a=5;printf(“%Im”,data. C);输出结果为 5.000000 D.data 可以作为函数的实参解析:解析 本题考查的共用体的概念。共用体变量中的所有成员共享一段公共存储区,所以共用体变量所占内存字节数与其成员中占字节数最多的那个成员相等本题定义的共用体中成员 C 所占的内存最多,因此选项 B
30、 是正确的。由于共用体变量中的所有成员共享存储空间,因此变量中的所有成员的首地址相同,选项 A 是正确的。同结构体变量一样,共用体类型的变量可以作为实参进行传递,也可以传送共用体变量的地址,选项 D 也是正确的。在内存中,实数与整数的存放形式完全不一样,共用体的成员共用的是同一块内存,而不是同一个数值,因此选项 C 是错误的。8.程序中对 fun 函数有如下说明void *fun();此说明的含义是(分数:1.00)A.fun 函数无返回值B.fun 函数的返回值可以是任意的数据类型C.fun 函数的返回值是无值型的指针类型 D.指针 fun 指向一个函数,该函数无返回值解析:解析 本题考核的
31、知识点是指针函数的基本概念。指针函数是指其返回值的类型为地址即指针类型本题中定义了一个指针类型的函数,所以,4 个选项中选项 C 符合题意。9.软件详细设计的主要仟务是确定每个模块的(分数:1.00)A.算法和使用的数据结构 B.外部接口C.功能D.编程解析:解析 从软件开发的工程化观点来看,在使用程序设计语言编制程序以前,需要对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。详细设计的任务就是要决定各个模块的实现算法,并精确表达出这些算法。10.为了使模块尽可能独立,要求(分数:1.00)A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B.模块的内聚程度要尽
32、量高,且各模块间的耦合程度要尽量弱 C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽最强解析:解析 系统设计的质量主要反映在模块的独立性上评价模块独立性的主要标准有两个:一是模块之间的耦合,它表明两个模块之间互相独立的程度;二是模块内部之间的关系是否紧密,称为内聚一般来说,要求模块之间的耦合尽可能地弱,即模块尽可能独立,而要求模块的内聚程度尽量地高。综上所述,选项 B 的答案正确。11.当把以下四个表达式用作 if 语句的控制表达式时,有一个选项与其他三个选项含义不同,这个选项是(分数:1.00)A.k%2B.k%2=1C.(k%2)
33、!=0D.!k%2=1 解析:解析 本题考查的是判断奇偶数。选项 A、B 和 c 中都是当 k 是奇数时表达式的值为 1,否则为0。而选项 D 中因为逻辑非!运算符的优先级最高,所以当 k 为 0 的时候,k 的值为 1,整个表达式的值也就是 1,而当 k 为非。的时候!k 的值为 0,整个表达式的值为 0。所以本题应该选择 D。12.有以下说明和定义语句struct studentint age;char num 8;struct student stu3=20,“200401”,21,“200402”),19,“200403”;struct student *p=stu;以下选项中引用结构
34、体变量成员的表达式错误的是(分数:1.00)A.(p+)-numB.p-numC.(*p).numD.stu3.age 解析:解析 本题考核的知识点是结构体数组元素成员的引用。结构体变量也有地址,因此可以把它的地址赋值给一个指针变量,然后通过该指针变量来引用结构体的成员,选项 A 和选项 B 就是通过指针变量来引用结构体的成员,故选项 A 和选项 B 都正确,也可以通过结构体数组元素的成员引用,选项 C 和选项 D 属于这种情况,而在选项 D 中 stu3.age 不正确,因为结构体数组 stu 共有三个元素,其下标应该为 0,1,2所以,4 个选项中选项 D 符合题意。13.以下程序的输出结
35、果是main ()char x=040;printf ( “%o/n“ ,x1);(分数:1.00)A.100 B.80C.64D.32解析:解析 本题考核的知识点是位运算符的应用首先将八进制 040 转换成二进制数 000100000, 在将此;进制数左移一位为 001000000,输出时转换成八进制数 100。所以,4 个选项中 A 为所选。14.有以下程序main()char str 10=“China“, Beijing“,*p=str;printf(“%s/n“,p+10);程序运行后的输出结果是(分数:1.00)A.ChinaB.Beijing C.ngD.ing解析:解析 本题考
36、核的知识点是二维数组的定义、初始化和指针的应用。本题中首先定义了一个字符串数组并初始化,初始化后使得 str0=“China“,str1=“Beijing“,然后定义一个指针变量 p 并让其指向 str,而在该二维数组中定义每个字符串的长度为 10 所以 p+10 将指向 str1的,因此最后输出*(p+10)的值为 Beijing。所以,4 个选项中选项 B 符合题意。15.对长度为 n 的线性表进行顺序查找,在最坏情况下,所需要的比较次数为(分数:1.00)A.log2nB.n/2C.n D.n+1解析:解析 在长度为 n 的线性表中进行顺序查找,最坏情况下需要比较 n 次选项 C 正确。
37、16.概要设计是软件系统结构的总体设计,以下选项中不属于概要设计的是(分数:1.00)A.把软件划分成模块B.确定模块之间的调用关系C.确定各个模块的功能D.设计每个模块的伪代码 解析:解析 概要设计是数据库的总体设计,其目的就是要按照需求规格说明书把软件按照功能划分为多个模块,然后确定每个模块要实现的功能,最后确定模块之间的调用关系,而设计每个模块的伪代码则属于详细设计。所以 D 选项不属于概要设计。17.若以下定义:struct linkint data;struck link *next;a,b,c,*p,*q;且变量 a 和 b 之间已有如下图所示的链表结构:(分数:1.00)A.ne
38、xt=c;c.next=b;B.next=q;q.next=p.next;C.p-next=(*q).next=k=*s; *s=*t; *t=k;s+; t-;if(*s) f(s, t);main ()char stt10 =“abcdefg“, *p;p=str+strlen (str)/2+1;f (p,p-2);print f ( “%s/n“, str);(分数:1.00)A.abcdefgB.gfedcba C.gbcdefaD.abedcfg解析:解析 本题考查的是递归函数。在一个函数中直接或间接地调用了自身,则称此函数为递归函数。本题定义的函数 f()就是一个递归函数。它先交
39、换两个字符指针所指的内容,然后将第 1 个指针往后移动一位,第 2 个指针往前移动一位,如果第 1 个指针所指内容不是字符串结束标志,则递归调用自身。主函数中首先定义了一个字符数组 sTR10=“abcdefg“,然后定义了一个字符指针 p=str+strlen(str)/2+1,即让 p 指向 str+4(或k=(n=b(分数:1.00)A.(m=aB.;printf(“%d/n“, F(a+, b+);(分数:1.00)A.12 B.15C.16D.20解析:解析 本题考核的知识点是宏与自增运算符的综合运用在程序中先用表达式将宏替换掉,则输出语句中的表达式为(a+)*(b+),而 a+的值
40、为 3,b+的值为 4。因此最后的值为 3*4=12。所以,4 个选项中选项 A 符合题意。25.若有下面的说明这定义:struct testint m1; char m2; float m3;union uu char u15; int u2 2; ua;myaa;则 sizeof (struct test )的值是(分数:1.00)A.12 B.16C.14D.9解析:解析 本题考核的知识点是结构体变量的存储空间。结构体所占用的存储空间是其所有成员占用的存储空间之和,而共用体所占用的存储空间是成员中占用存储空间最大者的空间,共用体类型 uu 是结构体的成员,它所占的内存长度为最大成员的长度
41、,即字符型数组 u1 的长度,即 15=5。每个整型数据占用 2 个字节,每个字符型数据占用一个字节,单精度型数据占 4 个字节, myaa 为结构体变量,它所占的存储空间为各个成员所占存储空间的之和,即 2+1+4+5=12。所以,4 个选项中 A 为所选。26.以下叙述正确的是(分数:1.00)A.C 语言比其他语言高级B.C 语言可以不用编译就能被计算机识别执行C.C 语言以接近英语国家的自然语言和数学语言作为语言的表达形式 D.C 语言出现的最晚、具有其他语言的一切优点解析:解析 C 语言是一种高级语言,必须编译成目标代码才能执行,故选项 B 错误;与其他语言相比C 语言更接近于硬件,
42、更“低级”:程序语言是不断发展的,不断有新的语言出现,C 语言不是出现最晚的,故选项 A 和选项 D 错误;高级语言类似于人类的自然语言和数学语言。所以,c 选项为所选。27.下面叙述不正确的是(分数:1.00)A.算法的执行效率与数据的存储结构有关B.算法的空间复杂度是指执行这个算法所需要的内存空间C.算法的有穷性是指算法必须能在执行有限个步骤之后终止D.算法的时间复杂度是指执行这个算法所需要的时间 解析:解析 算法的时间复杂度是指执行算法所需要的计算工作量,故 D 选项不正确。28.下列关于栈的叙述中正确的是(分数:1.00)A.在栈中只能插入数据B.在栈中只能删除数据C.栈足先进先山的线
43、性表D.栈是先进后出的线性表 解析:解析 对栈可进行插入和删除数据的操作,但必须牢记插入和删除数据都只能在栈顶,是一种特殊的线性表所以栈是先进后出的线性表。29.以下非法的赋值语句是(分数:1.00)A.n=(i=2,+i);B.j+;C.+(i+1); D.x=j0;解析:解析 本题考查的知识点是赋值语句的基本知识。在表达式的运算中,双目赋值运算符的格式为“变量二表达式”,单目运算符一般形式为“运算符表达式”或“表达式运算符”。常量和表达式是不能被赋值的。选项 A 为复合表达式,首先计算(i=2,+i)的值,然后赋值给 n,故选项 A 正确;选项 B 为简单自加运算,故选项 B 正确;选项
44、C 在表达式+(i+1);中,(i+1)不是变量,该表达式的值为常量,而在+运算中,其运算对象必须为变量,故选项 C 错误;选项 D 中为复合赋值表达式,正确所以应当选择C。30.有以下程序段int n=0,p;do scanf(“%d”,p=for (i=0;i9; i+) pi =i;for(i=0;i3;i+) printf (“%d“ ,a1 i );程序运行后的输出结果是(分数:1.00)A.012B.123C.234D.345 解析:解析 本题考查的是二维数组元素在内存中的排列形式。虽然二维数组成多维数组从结构上来看不是线性的,但是在 C 语言中,这些数组元素在内存中的排列是连续线
45、性存放的。它们的排列规则是:第一维下标变化最慢,最右边的下标变化最快例如本题中定义的二维数组 a33中 9 个元素在内存中的排列顺序是:a00,a01, a02,a10,a11,a12,a20, a21, a22。在主函数中,首先定义了二维数组 a33,然后定义了一个指针 p 指向数组 a 的第 1 个元素 a00。在第一个 for 循环中,依数组 a 在内存中的排列顺序为其元素赋从 08 九个值,然后用第二个 for循环依次输出 a10,a11,a12三个元素的值。所以,4 个选项中选项 D 符合题意。33.用树形结构表示实体之间联系的模型的是(分数:1.00)A.关系模型B.网状模型C.层
46、次模型 D.以上三个都是解析:解析 在数据库系统中,由于采用的数据模型不同,相应的数据库管理系统 (DBMS)也不同。目前常用的数据模型有三种:层次模型、网状模型和关系模型。在层次模型中,实体之间的联系是用树结构来表示的,其中实体集(记录型)是树中的结点,而树中各结点之间的连线表示它们之间的关系。因此,本题的正确答案是 C。34.设有如下程序段:int x=2002,y=2003;printf(“%d/n”, (x,y);则以下叙述中正确的是(分数:1.00)A.输出语句中格式说明符的个数少于输出项的个数,不能正确输出B.运行时产生出错信息C.输出值为 2002D.输出值为 2003 解析:解
47、析 逗号运算符的结合性为从左到右,其一般形式为“表达成 1,表达式 2”,整个表达式的值为表达式 2 的值。故 4 个选项中选项 D 符合题意。35.C 语言中用于结构化程序设计的三种基本结构是(分数:1.00)A.顺序结构、选择结构、循环结构 B.if、switch、breakC.for、while、do-whileD.if、for、continue解析:解析 结构化程序设计是由 3 种基本结构组成的,它们是顺序结构、选择结构和循环结构。所以,A 选项为所选。36.有以下程序main()int a=3,b=4,c=5,d=2;if(aB) if(bC) printf (“%d“, d+ +1);elseprintf(“%d“, +d +1);printf(“%d/n“, D) ;程序运行后的输出结果是(分数:1.00)A.2 B.3C.43D.44解析:解析 本题考核的知识点是 if-else 语句的程序分析。我们首先看程序中 if-else 的匹配,由于C 语言中规定 else 总是与最近的 if 搭配,因此程序中 else 与第二个订搭配,即该 if-else 语句为第一个 if 语