1、二级 C 语言笔试-366 及答案解析(总分:99.00,做题时间:90 分钟)一、选择题(总题数:50,分数:66.00)1.以下程序运行后的输出结果是#includestdio.hmain()int c=0, k;for(k=1; k3; k+)switch(k)default: c+=k;case 2: c+; break; case 4: c+=2; break;printf(“%d/n“, c);A) 3 B) 5 C) 7 D) 9(分数:1.00)A.B.C.D.2.有以下计算公式:(分数:1.00)A.B.C.D.3.与“for(i=0;i10;i+)putchar(a+i);
2、”功能不同的语句是_。A) for(i=0;i10;)putchar(a+(+i);B) for(i=0;i10;)putchar(a+(i+);C) for(i=0;i10;putchar(a+i),i+);D) for(i=0;i=9;i+)putchar(a+i);(分数:2.00)A.B.C.D.4.在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值 11,所需的关键码比铰次数为 _。A) 2 B) 3 C) 4 D) 5(分数:2.00)A.B.C.D.5.下面程序的输出是( )。main()int t=1;fun(fun(t);fun(i
3、nt h)static int a3=1,2,3;int k;for(k=0;k3;k+)ak+=ak-h;for(k=0;k3;k+)printf(“%d“,ak);printf(“/n“);return(ah);A) 1,2,3,1,5,9,B) 1,3,5,1,3,5,C) 1,3,5,0,4,8,D) 1,3,5,-1,3,7,(分数:1.00)A.B.C.D.6.若要用下面的程序片段使指针变量 p 指向一个存储整型变量的动态存储单元,则应填入 ( )int * p p_malloc(sizeof(int);A) intB) intC) (* int)D) (into*)(分数:1.0
4、0)A.B.C.D.7.若有语句 int * point,a=4;和 point=,则以下叙述中正确的是_。A) 定义了一个基类型为 int 的指针变量 p,该变量有三个指针B) 定义了一个指针数组 p,该数组含有三个元素,每个元素都是基类型为 int 的指针C) 定义了一个名为*p 的整型数组,该数组含有三个 int 类型元素D) 定义了一个可指向二维数组的指针变量 p,所指一维数组应具有三个 int 类型元素(分数:1.00)A.B.C.D.10.下列叙述中错误的是_。A) 一个 C 语言程序只能实现一种算法 B) C 程序可以由多个程序文件组成C) C 程序可以由一个或多个函数组成 D)
5、 一个 C 函数可以单独作为一个 C 程序文件存在(分数:1.00)A.B.C.D.11.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是( )。A) 概要设计 B) 详细设计 C) 可行性分析 D) 需求分析(分数:1.00)A.B.C.D.12.请读程序:#includestdio.hmain()int a;float b,c;scanf(“%2d%3f%4f“,for(i=1;i5; i+)switch (i)case 0case 3:a+ =2;case 1;case 2;a+=3;default, a+=5;printf(“%d/n“,a) ;A) 31 B
6、) 13 C) 10 D) 20(分数:1.00)A.B.C.D.14.定义如下变量和数组:int i;int x33=1,2,3,4,5,6,7,8,9;则下面语句的输出结果是for(i=0;i3;i+)printf(“%d“,x2-11);A) 9 5 1 B) 7 4 1 C) 7 5 3 D) 9 6 3(分数:1.00)A.B.C.D.15.将 E-R 图转换到关系模式时,实体与联系都可以表示成( )。A) 属性 B) 关系 C) 键 D) 域(分数:1.00)A.B.C.D.16.将 E-R 图转换到关系模式时,实体与联系都可以表示成_。A) 属性 B) 关系 C) 键 D) 域(
7、分数:2.00)A.B.C.D.17.若有定义:int a23;,以下选项中对 a 数组元素正确引用的是( )。A) a21 B) a23 C) a03 D) a12!1(分数:2.00)A.B.C.D.18.阅读下列程序,则执行后的结果为#include“stdio.h“main()int c4=1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56;printf(“%x,%x/n“,c22,*(*(c+1)+1);A) 3e,6 B) 62,5 C) 56,5 D) 3E,6(分数:2.00)A.B.C.D.19.下列说法不正确的是( )。A) C 语言程序是以函
8、数为基本单位的,整个程序由函数组成B) C 语言程序的一条语句可以写在不同的行上C) C 语言程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写D) C 语言程序的每个语句都以分号结束(分数:2.00)A.B.C.D.20.开发软件时对提高开发人员工作效率至关重要的是A) 操作系统的资源管理功能 B) 先进的软件开发工具和环境C) 程序人员的数量 D) 计算机的并行处理能力(分数:1.00)A.B.C.D.21.有以下程序struct s int x,y; data2=10,100,20,200;main( )struct s *p=data;printf(“%d/n“,+(p-
9、x);程序运行后的输出结果是 A)10B)11C)20D)21(分数:1.00)A.B.C.D.22.先用以下语句定义字符型变量:char c;然后要将字符 a 赋给变量 c,则下列语句中正确的是_。Ac=a; Bc=“a“; Cc=“97“; Dc=97;(分数:2.00)A.B.C.D.23.以下选项中非法的表达式是( )。A) 0=x100 B) i=j= =0 C) (char)(65+3) D) x+1=x+1(分数:1.00)A.B.C.D.24.若有运算符: 、*=、%、sizeof,则它们按优先级(由低至高)的正确排列次序为( )。A) *= % sizeof B) *= %
10、sizeofC) %= sizeof % D) *= % sizeof(分数:2.00)A.B.C.D.25.为了避免嵌套的 if-else 的二义性,C 语言规定:else 与_配对。A) 缩排位置相同的 if B) 其之前最近的 ifC) 其之后最近的 if D) 同一行上的 if(分数:1.00)A.B.C.D.26.有以下程序main()char ch=“uvwxyz“,*pc;pc=ch;printf(“%c/n“,*(pc+5);程序运行后的输出结果是A) z B) 0 C) 元素 ch5的地址 D) 字符 y 的地址(分数:1.00)A.B.C.D.27.若指针 p 已正确定义,
11、要使 p 指向两个连续的整型动态存储单元,则正确的语句是( )。A) p=2*(int*)malloc (sixeof(int) B) p=(int*)calloc (2*sixeof(int)C) p=(int*)malloc (2*sizeof(int) D) p=2*(int*)calloc (sizeof(int)(分数:1.00)A.B.C.D.28.若输入 12345、abc,程序的输出结果为_。main()int a;char ch;scanf(“%3d,%3c“,printf(“%d,%c“,a,ch);A) 123,abc B) 123,4 C) 123,a D) 12345
12、,abc(分数:1.00)A.B.C.D.29.有以下程序:#include stdio.hmain()FILE *fp;int i,k,n;fp=fopen(“data.dar“,“w+“);for(i=1;i6;i+)fprintf(fp,“%d “,i);if(i%3=0)fprintf(fp,“/n“);rewind(fp);fscanf(fp,“%d%d“, printf(“%d%d/n“,k,n);fclose(fp);程序运行后的输出结果是( )。A) 0 0 B) 123 45 C) 1 4 D) 1 2(分数:1.00)A.B.C.D.30.下面是对宏定义的描述,不正确的是_
13、。A) 宏不存在类型问题,宏名无类型,它的参数也无类型B) 宏替换不占用运行时间C) 宏替换时先求出实参表达式的值,然后代入形参运算求值D) 宏替换只不过是字符替代而已(分数:1.00)A.B.C.D.31.有以下程序:main() int c=35; printf(“%d/n“, cc); 程序运行后的输出结果是( )。A) 0 B) 70 C) 35 D) 1(分数:1.00)A.B.C.D.32.若有定义语句:int x=10;则表达式 x-=x+x 的值为A) -20 B) -10 C) 0 D) 10(分数:1.00)A.B.C.D.33.设有 int x=11:表达式(x+*1/3
14、)的值是( )。A) 3 B) 4 C) 11 D) 12(分数:1.00)A.B.C.D.34.若有以下程序:#includestdiohint a=2,4,6,8;main()int i;int *p=a;for(i=0;i4;i+) ai=*p;printf(“%d/n“,a2);上面程序的输出结果是( )。A) 6 B) 8 C) 4 D) 2(分数:1.00)A.B.C.D.35.当 a=1、b=2、c=3、d=4 时,执行下面程序段后,x 的值是( )。 if(ab) if(cd)x=1; else if(ac) if(bd)x=2: else x=3: else x=6: els
15、e x=7: A) 1 B) 6 C) 3 D) 2(分数:1.00)A.B.C.D.36.采用链接方式存储线性表的优点是_。A) 便于随机存取B) 花费的存储空间较顺序存储少C) 便于插入和删除操作D) 数据元素的物理顺序和逻辑顺序相同(分数:1.00)A.B.C.D.37.现有如下定义语句int*p,s20,i;p=s;表示数组元素 si的表达式不正确的是A) *(s+i) B) *(p+i) C) *(s=s+i) D) *(p=p+i)(分数:1.00)A.B.C.D.38.有以下程序#include stdio.hmain()FILE *fp; int a10=1,2,3,i,n;f
16、p=fopen(“d1.daf“,“w“);for(i=0;i3;i+) fprintf(fp,“%d“,ai);fprintf(fp,“/n“);fclose(fp);fp=fopen(“d1.dat“,“r“);fscanf(fp,“%d“,int a20;void f(int *a, int n)int i;for(i=0;in-1;i+)ai+=i;main()int i;struct S s=10,12,3,1,6,8,7,5,4 ,10,9;f(sa,sn);for(i=0;is.n;i+)printf(“%d,“,s.ai);程序运行后的输出结果是A) 2,4,3,9,12,12
17、,11,11,18,9, B) 3,4,2,7,9,8,6,5,11,10,C) 2,3,1,6,8,7,5,4,10,9, D) 1,2,3,6,8,7,5,4,10,9,(分数:1.00)A.B.C.D.40.下列程序的输出结果是_。main()int x=0,a=0,b=2;if(x=a+b) printf(“*/n“);else printf(“#/n“);A) 有语法错,不能通过编译 B) 通过编译,但不能连接C) * D) #(分数:1.00)A.B.C.D.41.下列叙述中错误的是( )。A) 线性表是由 n 个元素组成的一个有限序列B) 线性表是一种线性结构C) 线性表的所有结
18、点有且仅有一个前件和后件D) 线性表可以是空表(分数:2.00)A.B.C.D.42.下列程序执行后的输出结果是main()int a33, *p,i;p=int i;for(i=3;i=0;i-,i-)prinf(“%c“,*pi);print(“/n“)A) SO B) SP C) SPOPK D) SHOB(分数:2.00)A.B.C.D.44.下面能正确进行字符串赋值操作的是( )。A) char s5=“ABCDE“; B) char s5=A,b,C,D,E;C) char *s;s=“ABCDE“; D) char *s;scanf(“%s“,s);(分数:2.00)A.B.C.
19、D.45.A) *s B) S C) *s+ D) (*s)+(分数:1.00)A.B.C.D.46.设有以下定义和语句:int a32=1,2,3,4,5,6,*p3;p0=a1;则*(p0+1)所代表的数组元素是( )。A) a01 B) a10 C) a11 D) a12(分数:2.00)A.B.C.D.47.有以下程序main()char a,b,c,*d;a=/;b=/xbc;c=/0xab;d=“/0127“;pfintf(“%c%c%c%c/n“,a,b,c,*d) ;编译时出现错误,以下叙述中正确的是A) 程序中只有 a=/;语句不正确 B) b=/xbc;语句不正确C) d=
20、“/0127“;语句不正确 D) a=/;和 c=,0xab;语句都不正确(分数:1.00)A.B.C.D.48.有下列程序:main()char s=“abcde“;s+=2;printf(“%d/n“, s0;执行后的结果是( )。A) 输出字符 a 的 ASCII 码 B) 输出字符 c 的 ASCII 码C) 输出字符 c D) 程序出错(分数:1.00)A.B.C.D.49.若 x,i,j 和 k 都是 int 型变量,则计算表达式 x=(i=4,j=16,k=32)后 x 的值为( )。A) 4 B) 16 C) 32 D) 52(分数:1.00)A.B.C.D.50.下列选项中非
21、法的字符常量是( )。A) /t B) /039 C) , D) /n(分数:2.00)A.B.C.D.二、填空题(总题数:19,分数:33.00)51.有以下程序main( )int n=0,m=1,x=2;if(!n) x-=1; if(m) x-=2; if(x) x-=3; printf(“%d/n”,x);执行后输出结果是_。(分数:1.00)填空项 1:_52.顺序存储方法是把逻辑上相邻的结点存储在物理位置 1 的存储单元中。(分数:1.00)填空项 1:_53.下面程序的输出是_。main()int arr10,i,k=0;for(i=0;i10;i+)arri=i;for(i=
22、1;i4;i+)k+=arri+i;printf(“%d/n“k);(分数:2.00)填空项 1:_54.设有定义语句:int a3=0,12;,则数组元素 a12的值是 1。(分数:1.00)填空项 1:_55.按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于 1。(分数:2.00)填空项 1:_56.设有下列宏定义:#define A 2#define B (A+3) 则执行赋值语句“k=B*20;”(k 为 int 型变量)后,k 的值是_。(分数:2.00)填空项 1:_57.在对文件进行操作的过程中,若要使文件位置的指针回到文件的开头,应使用的函数是 1。(分数:1.00)
23、填空项 1:_58.在面向对象方法中,属性与操作相似的一组对象称为 1。(分数:1.00)填空项 1:_59.设有定义:int n,*k=n;以下语句将利用指针变量 k 读写变量 n 中的内容,请将语句补充家整。seanf(“%d“,_);printf(“%d/n“,_);(分数:2.00)填空项 1:_60.以下定义的结构体类型拟包含两个成员,其中成员变量 info 用来存入整型数据;成员变量 link 是指向自身结构体的指针,请将定义补充完整。struct nodeint info; _link; ;(分数:2.00)填空项 1:_61.以下程序从名为 filea.dat 的文本文件中逐个
24、读入字符并显示在屏幕上。请填空。#includemain()FILE*fp;char ch;fp=fopen(_);ch=fgetc(fp);while(!feof(fp)pufchar(ch);ch=fgetc(fp);putchar(/n);fcloseffp);(分数:2.00)填空项 1:_以下程序的功能是调用函数 fun 计算:m=1-2+3-4+9-10,并输出结果,请填空。int fun(int n)int m=0,f=1, i; for(i=1; i=n; i+)m+=i*f; f=_; return m; main() printf(“m=%d/n“,_);(分数:4.00)
25、填空项 1:_填空项 1:_62.下面程序的功能:将字符数组 a 中下标值为偶数的元素从小到大排列,其他元素不变。请填空。# includestdio. h# includestring. hmain()char a=“clanquage“, t;int i, j, k;k=strlen(A) ;for(i=0; i=k-2; i+=2)for(j=i+2;jk; j+=2)if(_)t=ai; ai=aj; aj=t; puts(A) ;printf(“/n“);(分数:2.00)填空项 1:_63.以下程序运行后的输出结果是 1。#includechar *ss(char *s)char
26、*p, t;p=s+1; t=*s;while(*p) *(p-1) = *p; p+;*(p-1)=t;return s;main2char *p, str10=“abcdefgh“;p = ss(str);printf(“%s/n“,p);(分数:2.00)填空项 1:_64.以下 sstrcpy()函数实现字符串复制,即将 t 所指字符串复制到 s 所指内存空间中,形成一个新字符串 s。请填空。void sstrcpy(char*s,char*t)while(*s+=_);main()char strl100,str2=“abcdefgh“;sstrcpy(strl,str2);prin
27、tf(“%s/n“,strl);(分数:1.00)填空项 1:_65.软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和 1 的设计来实现。(分数:2.00)填空项 1:_66.在 C 语言中(以 16 位 PC 机为例),一个 int 型数据在内存中所占的字节数为_;一个 float 型数据在内存中所占的字节数为_。(分数:2.00)填空项 1:_67.以下程序运行后的输出结果是_。struct NODEint k;struct NODE *link;main()struct NODE m5,*p=m,*q=m+4;int i=0;while(p!=q)p-k
28、=+i; p+;q-k=i+; q-;q-k=i;for(i=0;i5;i+) printf(“%d“,mi.k);printf(“/n“);(分数:2.00)填空项 1:_68.算法执行过程中,所需要的基本运算次数称为算法的 1。(分数:1.00)填空项 1:_二级 C 语言笔试-366 答案解析(总分:99.00,做题时间:90 分钟)一、选择题(总题数:50,分数:66.00)1.以下程序运行后的输出结果是#includestdio.hmain()int c=0, k;for(k=1; k3; k+)switch(k)default: c+=k;case 2: c+; break; ca
29、se 4: c+=2; break;printf(“%d/n“, c);A) 3 B) 5 C) 7 D) 9(分数:1.00)A. B.C.D.解析:解析 for 循环 2 次:当循环变量 k=1 时,从 default 入口,执行 c+=k;,再顺序执行c+;,break 跳出 switch 结构,此时 c 的值为 2;当循环变量 k=2 时,从 case 2 入口,执行c+;,break 跳出 switch 结构,此时 c 的值为 3;退出循环结构,输出 c 值 3。2.有以下计算公式:(分数:1.00)A.B.C. D.解析:解析 本题考查的重点是分段数学公式的求解。选项 D 是正确的
30、,它是用问号表达式“exp1? exp2: exp3”来代替 ifelse 语句,其运算过程是:先对 exp1 求值,如果 exp1 值为真时,对 exp2 求值并将所求结果作为整个问号表达式的值。若 exp1 的值为假时,对 exp3 求值并将结果作为整个问号表达式的值。因而程序“y=sqrt(x=0:-x)”是先判断 x=0,若为真,则计算结果为 sqrt(X),否则计算结果为sqrt(-X),且该函数包含于 math.h 头文件中。选项 A 和 B 也是对的,只有选项 C 不能正确计算上述功能。3.与“for(i=0;i10;i+)putchar(a+i);”功能不同的语句是_。A) f
31、or(i=0;i10;)putchar(a+(+i);B) for(i=0;i10;)putchar(a+(i+);C) for(i=0;i10;putchar(a+i),i+);D) for(i=0;i=9;i+)putchar(a+i);(分数:2.00)A. B.C.D.解析:4.在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值 11,所需的关键码比铰次数为 _。A) 2 B) 3 C) 4 D) 5(分数:2.00)A.B.C. D.解析:解析 二分法查找是用关键码与线性表的中间元素比较,然后根据比较结果来判断是结束查找,还是在左边或者右边
32、子表按相同的方法继续查找。本题中,与 11 比较的关键码分别为 15,8,10,12 四个。5.下面程序的输出是( )。main()int t=1;fun(fun(t);fun(int h)static int a3=1,2,3;int k;for(k=0;k3;k+)ak+=ak-h;for(k=0;k3;k+)printf(“%d“,ak);printf(“/n“);return(ah);A) 1,2,3,1,5,9,B) 1,3,5,1,3,5,C) 1,3,5,0,4,8,D) 1,3,5,-1,3,7,(分数:1.00)A.B.C.D. 解析:解析 本题考查双重函数调用及 for 循
33、环使用,fun 函数中第一个 for 循环语句的作用是给数组a 赋值。当第一次调用 fun 函数时,把实参 1 传给形参,输出 a 数组的元素为 1,3,5;第二次调用 fun函数时,由于数组 a 为静态局部变量,故输出 a 数组的元素为-1,3,7。6.若要用下面的程序片段使指针变量 p 指向一个存储整型变量的动态存储单元,则应填入 ( )int * p p_malloc(sizeof(int);A) intB) intC) (* int)D) (into*)(分数:1.00)A.B.C.D. 解析:7.若有语句 int * point,a=4;和 point=中的 n 为要求得到的字符的个
34、数,但只从中指向的文件输入 n-1 个字符,然后在最后加个/0字符,因此得到的字符串共有 n 个字符。9.若有定义 int*p3;,则以下叙述中正确的是_。A) 定义了一个基类型为 int 的指针变量 p,该变量有三个指针B) 定义了一个指针数组 p,该数组含有三个元素,每个元素都是基类型为 int 的指针C) 定义了一个名为*p 的整型数组,该数组含有三个 int 类型元素D) 定义了一个可指向二维数组的指针变量 p,所指一维数组应具有三个 int 类型元素(分数:1.00)A.B. C.D.解析:解析 由于运算符优先级比*高,int*p3;相当于 int*(p3);,表示数组 p 的三个元
35、素都是指针变量,且每个元素都是基类型为 int 的指针。10.下列叙述中错误的是_。A) 一个 C 语言程序只能实现一种算法 B) C 程序可以由多个程序文件组成C) C 程序可以由一个或多个函数组成 D) 一个 C 函数可以单独作为一个 C 程序文件存在(分数:1.00)A. B.C.D.解析:解析 一个 C 语言程序可以实现多种算法。C 程序可包含一个或多个函数,并可由多个程序文件组成。11.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是( )。A) 概要设计 B) 详细设计 C) 可行性分析 D) 需求分析(分数:1.00)A.B.C.D. 解析:解析 通常,
36、将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。软件生命周期的主要活动阶段为:可行性研究和计划制定。确定待开发软件系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可能方案,制定完成开发任务的实施计划。需求分析。对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。编写软件规格说明书及初步的用户手册,提交评审。软件设计。系统设计人员和程序设计人员应该在反复理解软件需求的基础上,给出软件的结构、模块的划分、功能的分配以及处理流程。软件实现。把软件设
37、计转换成计算机可以接受的程序代码。即完成源程序的编码,编写用户手册、操作手册等面向用户的文档,编写单元测试计划。软件测试。在设计测试用例的基础上,检验软件的各个组成部分。编写测试分析报告。运行和维护。将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。12.请读程序:#includestdio.hmain()int a;float b,c;scanf(“%2d%3f%4f“,for(i=1;i5; i+)switch (i)case 0case 3:a+ =2;case 1;case 2;a+=3;default, a+=5;printf(“%d/n
38、“,a) ;A) 31 B) 13 C) 10 D) 20(分数:1.00)A. B.C.D.解析:14.定义如下变量和数组:int i;int x33=1,2,3,4,5,6,7,8,9;则下面语句的输出结果是for(i=0;i3;i+)printf(“%d“,x2-11);A) 9 5 1 B) 7 4 1 C) 7 5 3 D) 9 6 3(分数:1.00)A.B.C. D.解析:解析 本题考查二维数组元素的引用方法。本题通过二维数组的行、列下标来定位元素的位置,从而实现元素的引用。15.将 E-R 图转换到关系模式时,实体与联系都可以表示成( )。A) 属性 B) 关系 C) 键 D)
39、 域(分数:1.00)A.B. C.D.解析:解析 把概念模型转换成关系数据模型就是把 E-R 图转换成一组关系模式,每一个实体型转换为一个关系模式,每个联系分别转换为关系模式。16.将 E-R 图转换到关系模式时,实体与联系都可以表示成_。A) 属性 B) 关系 C) 键 D) 域(分数:2.00)A.B. C.D.解析:解析 关系是由若干个不同的元组所组成,因此关系可视为元组的集合,将 E-R 图转换到关系模式时,实体与联系都可以表示成关系。17.若有定义:int a23;,以下选项中对 a 数组元素正确引用的是( )。A) a21 B) a23 C) a03 D) a12!1(分数:2.
40、00)A.B.C.D. 解析:解析 C 语言中数组下标是从 0 开始的,所以二维数组 a23的第一维下标取值为 0、1;第二维的下标取值为 0、1、2,因而选项 A)、B)、C)都是错误的,选项 D)表示数组元素 a00。18.阅读下列程序,则执行后的结果为#include“stdio.h“main()int c4=1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56;printf(“%x,%x/n“,c22,*(*(c+1)+1);A) 3e,6 B) 62,5 C) 56,5 D) 3E,6(分数:2.00)A. B.C.D.解析:解析 数组 c4表示一个 4
41、行 4 列数组,c22表示第 3 行第 3 列上的元素 62,*(*(c+1)+1)表示第 2 行第 2 列上的元素 6,通过十六进制输出为 3e,6。19.下列说法不正确的是( )。A) C 语言程序是以函数为基本单位的,整个程序由函数组成B) C 语言程序的一条语句可以写在不同的行上C) C 语言程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写D) C 语言程序的每个语句都以分号结束(分数:2.00)A.B.C. D.解析:解析 本题涉及 C 语言的 3 个基本知识点:C 语言的源程序是由函数构成的,函数是其基本单位,每一个函数完成相对独立的功能,其中只能包括一个主函数;C
42、 语言规定每个语句以分号结束,其书写格式是自由的,一条语句可以写在不同的行上,或者一行也可以写多条语句;注释行虽然对程序的运行不起作用,但是它可以方便程序员阅读,提高程序的可读性和可移植性,所以书写注释行还是很有必要的。20.开发软件时对提高开发人员工作效率至关重要的是A) 操作系统的资源管理功能 B) 先进的软件开发工具和环境C) 程序人员的数量 D) 计算机的并行处理能力(分数:1.00)A.B. C.D.解析:解析 软件工程鼓励研制和采用各种先进的软件开发方法、工具和环境。工具和环境的使用又进一步提高了软件的开发效率、维护效率和软件质量。21.有以下程序struct s int x,y;
43、 data2=10,100,20,200;main( )struct s *p=data;printf(“%d/n“,+(p-x);程序运行后的输出结果是 A)10B)11C)20D)21(分数:1.00)A.B. C.D.解析:解析 data 数组中共有两个元素,指针变量 p 所指的单元为数组的第一个存储单元,该单元中存储了数组中的第一个元素。故 p-x 值为 10,+(p-x)值为 11。22.先用以下语句定义字符型变量:char c;然后要将字符 a 赋给变量 c,则下列语句中正确的是_。Ac=a; Bc=“a“; Cc=“97“; Dc=97;(分数:2.00)A. B.C.D.解析:
44、23.以下选项中非法的表达式是( )。A) 0=x100 B) i=j= =0 C) (char)(65+3) D) x+1=x+1(分数:1.00)A.B.C.D. 解析:解析 选项 A)在 C 语言中是一个合法的关系表达式,但它并不代表数学式 o=x 100。计算0=x100 时,从左到右结合,先计算 0=x,其结果只能是 0 或 1,然后再比较 0 100 或 1100。根据运算符的优先级,选项 B)先判断 j=0 是否成立,其结果只能是 0 或 1,然后再将 0 或 1 赋给 i。选项 C)中,(char)(65+3)为类型强制转换,将整数型数据转换为字符型。选项 D)是将一个数据赋给
45、一个表达式,等号左边不合要求,所以错误。24.若有运算符: 、*=、%、sizeof,则它们按优先级(由低至高)的正确排列次序为( )。A) *= % sizeof B) *= % sizeofC) %= sizeof % D) *= % sizeof(分数:2.00)A.B.C.D. 解析:解析 本题主要考查算术运算的优先级。顺序如下;25.为了避免嵌套的 if-else 的二义性,C 语言规定:else 与_配对。A) 缩排位置相同的 if B) 其之前最近的 ifC) 其之后最近的 if D) 同一行上的 if(分数:1.00)A.B. C.D.解析:解析 在 if 语句中又包含一个或多
46、个 if 语句称为 if 语句的嵌套。应当注意 if 与 else 的配对关系,在 C 语言中,从最内层开始,else 总是与它上面最近的(未曾配对的)if 配对。26.有以下程序main()char ch=“uvwxyz“,*pc;pc=ch;printf(“%c/n“,*(pc+5);程序运行后的输出结果是A) z B) 0 C) 元素 ch5的地址 D) 字符 y 的地址(分数:1.00)A. B.C.D.解析:解析 将字符串的地址赋值给字符指针变量后,指针就指向了该字符串的第一个字符,即“*p =u”,所以*(p+5)指向的字符是z。27.若指针 p 已正确定义,要使 p 指向两个连续的整型动态存储单元,则正确的语句是( )。A) p=2*(int*)malloc (sixeof(int) B) p=(int*)calloc (2*sixeof(int)C) p=(int*)malloc (