1、二级 C语言笔试-370 及答案解析(总分:102.50,做题时间:90 分钟)一、选择题(总题数:50,分数:64.00)1.以下叙述中错误的是( )。A) gets函数用于从终端读入字符串B) getchar函数用于从磁盘文件读入字符C) fputs函数用于把字符串输出到文件D) fwrite函数用于以二进制形式输出数据到文件(分数:1.00)A.B.C.D.2.设在 C语言中,float 类型数据占 4字节,则 double类型数据占( )字节。A) 1 B) 2C) 8 D) 4(分数:1.00)A.B.C.D.3.以下程序的输出结果是( )。main() int a=666, b=8
2、88; printf(“%d/n“, (a, b) ); A) 错误信息 B) 666 C) 888 D) 666, 888(分数:1.00)A.B.C.D.4.有以下程序#include stdio.hmain( )FILE *fp;int i,a6=1,2,3,4,5,6;fp=fopen(“d3.dat“,“w+b“);fwrite(a,sizeof(int),6,fp);fseek(fp,sizeof(int)*3,SEEK_SET);/*该语句使读文件的位置指针从文件头向后移动 3个 int型数据*/fread(a,sizeof(int),3,fp);fclose(fp);for(i
3、=0;i6;i+)printf(“%d,“,ai);程序运行后的输出结果是A)4,5,6,4,5,6, B)1,2,3,4,5,6, C)4,5,6,1,2,3, D)6,5,4,3,2,1,(分数:2.00)A.B.C.D.5.下列选项中不属于软件生命周期开发阶段任务的是_。A) 软件测试 B) 概要设计 C) 软件维护 D) 详细设计(分数:2.00)A.B.C.D.6.表达式8-2的值是( )。A) 整数 6 B) 字符 6 C) 表达式不合法 D) 字符 8(分数:1.00)A.B.C.D.7.有以下函数char *fun(char*p)return p; 该函数的返回值是_。A) 无
4、确切的值 B) 形参 p中存放的地址值C) 一个临时存储单元的地址 D) 形参 p自身的地址值(分数:1.00)A.B.C.D.8.以下选项中,不能正确赋值的是 ( )A) char sl 10;sl“Ctest“; B) char s2 C,t,e,s,t,C) char s320“Ctest“; D) char * s4“Ctest/n“;(分数:1.00)A.B.C.D.9.下列对于线性链表的描述中正确的是( )。A) 存储空间不一定连续,且备元素的存储顺序是任意的B) 存储空间不一定连续,且前件元素一定存储在后件元素的前面C) 存储空间必须连续,且前件元素一定存储在后件元素的前面D)
5、存储空间必须连续,且各元素的存储顺序是任意的(分数:2.00)A.B.C.D.10.若有如下定义:int x=3,y=2,Z;则表达式 Z=X/y*3.0的值是( )。A) 2 B) 2.0 C) 3 D) 3.0(分数:1.00)A.B.C.D.11.算法是求解问题的方法,具有输入、输出、有穷性、确定性和_的特性。A) 可行性 B) 计算性C) 程序设计性 D) 检索性(分数:2.00)A.B.C.D.12.以下符合 C语言语法的实型常量是A) 1.2E0.5 B) 3.14159E C) 5E-3 D) E15(分数:1.00)A.B.C.D.13.在深度为 5的满二叉树中,叶子结点的个数
6、为A) 32 B) 31 C) 16 D) 15(分数:1.00)A.B.C.D.14.C语言库函数 fgets(str,n,fg)的功能是_。A) 从中指向的文件中读取长度 n的字符串存入 str指向的内存B) 从 fp指向的文件中读取长度不超过 n-1的字符串存入 str指向的内存C) 从 fp指向的文件中读取 n个字符串存入 str指向的内存D) 从 sb读取至多 n个字符到文件 fp(分数:1.00)A.B.C.D.15.设在 C语言中,float 类型数据占 4个字节,则 double类型数据占( )个字节。A) 1 B) 2 C) 8 D) 4(分数:1.00)A.B.C.D.16
7、.数据库系统的核心是A) 数据库 B) 数据库管理系统 C) 模拟模型 D) 软件工程(分数:1.00)A.B.C.D.17.若有下列说明和语句,已知 int型数据占 2个字节,则下列语句的输出结果是( )。stmct stchar a15;int b;double c;printf(“%d“,sizeof(struct st);A) 15 B) 8 C) 25 D) 2(分数:1.00)A.B.C.D.18.若变量 a,i 已正确定义,且 i已正确赋值,下面合法的语句是( )。A) a=1 B) +i; C) a=a+=5; D) a=int(i);(分数:1.00)A.B.C.D.19.结
8、构化程序设计主要强调的是( )。A) 程序的规模 B) 程序的效率C) 程序设计语言的先进性 D) 程序的易读性(分数:2.00)A.B.C.D.20.以下程序输出正确的是_amovep(int *p,int (*a)3,int n)int i,j;for(i=0;in;i+)for(j=0;jn;j+) *p=aij;p+;main()int *p,a33=1,3,5, 2,4,6;p=(int*)mallox(100)amovep)p,a,3);printf(“%d%d/n“,p2,p5);free(p) A) 56 B) 25 C) 34 D) 程序错误(分数:2.00)A.B.C.D.
9、21.在面向对象的方法中, ( )描述的是具有相似属性与操作的一组对象。A) 属性 B) 事件 C) 方法 D) 类(分数:2.00)A.B.C.D.22.以下程序的输出结果是( )。 #includestdio.h main() int a=1,b=3; if(+a0)strcpy(arr“you“);strcpy(arr1,“me“);arr03=printf(“%s/n“,arr);程序的输出结果是( )。A) you B) p(int*)calloc(2*sizeof(int);C) p=(int*)malloc(2* sizeof(int); D) p=2 *(int*)calloc
10、(sizeof(int);(分数:1.00)A.B.C.D.28.有以下程序main()int x=1,3,5,7,2,4,6,0,i,j,k;for(i=0;i3;i+)for(j=2;ji;j-)if(xj+1xj) k=xj;xj=xj+1;xj+1=k;for(i=0;i3;i+)for(j=4;j7-i;j+)if(xjxj+1) k=xj;xj;xj+1;xj+1=k;for(i=0;i8;i+)printf(“%d“,xi);printf(“/n“);程序运行后的输出结果是A) 75310246 B) 01234567 C) 76310462 D) 13570246(分数:1.0
11、0)A.B.C.D.29.已知形成链表的存储结构如下图所示,则下述类型描述中的空白处应填_。struct linkchar data;_,node;data nextA) struct link next B) link *nextC) stuct next link D) struct link *next(分数:1.00)A.B.C.D.30.下列数据结构中,能用二分法进行查找的是( )。A) 顺序存储的有序线性表 B) 线性链表C) 二叉链表 D) 有序线性链表(分数:1.00)A.B.C.D.31.以下选项中可作为 C语言合法常量的是A) -80.0 B) -080 C) -8e1.0
12、 D) -80.0e(分数:1.00)A.B.C.D.32.数据库系统的核心是( )。A) 数据库 B) 数据库管理系统C) 模拟模型 D) 软件工程(分数:1.00)A.B.C.D.33.有以下程序#include stdio.h#include string.hstruct Aint a;char b10;double c;struct A f(stmct A t);main()struct A a=1001,“ZhangDa“,10980);a=f(a);printf(“%d,%s,%61f/n“,aa,ab,ac);stmct A f(struct A t)ta=1002;strepy
13、(tb,“changRong“);tc=12020;return t;程序运行后的输出结果是A) 1001,ZhangDa,10980B) 1002,ZhangDa,12020C) 1001,ChangRong,10980D) 1002,ChangRong,12020(分数:2.00)A.B.C.D.34.以下程序的输出结果是_。main()char ch34=“123“,“456“,“78“,*p3;int i;for(i=0;i3;i+) pi=chi;for(i=0;i3;i+) printf(“%s“,pi);A) 123456780 B) 123 456 780C) 12345678
14、 D) 147(分数:1.00)A.B.C.D.35.以下叙述错误的是_。A) 共用体的所有变量都有一个相同的地址B) 结构体变量可以作为共有用体中的成员C) 共用体的成员一个时刻只有一个生效D) 要传递共用体的成员通常采用函数(分数:1.00)A.B.C.D.36.若有以下的说明,对初值中整数 2的正确引用方式是( )。static structchar ch;int i;double x;a23=a,1,3,45,b,2,7,98,c,31,93;A) a01.ch B) a01.i C) a00.i D) a02.i(分数:1.00)A.B.C.D.37.有以下程序main()int x
15、=102,y=012;printf(“%2d,%2d/n“,x,y);执行后输出结果是A) 10,01 B) 02,12 C) 102,10 D) 02,10(分数:1.00)A.B.C.D.38.在数据库设计中,将 E-R图转换成关系数据模型的过程属于( )。A) 需求分析阶段 B) 逻辑设计阶段 C) 概念设计阶段 D) 物理设计阶段(分数:1.00)A.B.C.D.39.设有以下程序段,则int x=0,s=0;while(!x!=0)s+=+x;printf(“%d“,s);A) 运行程序段后输出 0 B) 运行程序段后输出 1C) 程序段中的控制表达式是非法的 D) 程序段执行无限次
16、(分数:1.00)A.B.C.D.40.设有下列二叉树:(分数:2.00)A.B.C.D.41.以下程序的输出结果是_。#define M(x,y,z) x*y+zmain()int a=1,b=2,c=3;printf(“%d/n“,M(a+b,b+c,c+a);A) 19 B) 17 C) 15 D) 12(分数:1.00)A.B.C.D.42.有如下程序main()char s5=“abc“,“de“,“fgh“;printf(“%c“,s26);其输出为_。A) 不确定 B) 编译错误 C) g D) 输出 null字符(分数:2.00)A.B.C.D.43.有以下程序:#includ
17、estdio.hmain()int x=1,y=0,a=0,b=0;switch(x)case 1:switch(y)case 0:a+;break;case 1: b+;break;case 2:a+;b+;break;case 3:a+;b+;printf(“a=%d,b=%d/n“,a,b);程序的运行结果是_。A) a=1,b=0 B) a=2,b=2 C) a=1,b=1 D) a=2,b=1(分数:2.00)A.B.C.D.44.有以下程序段main()char a7“abcdef“;charb4“ABC“;strcpy(a,b) ;printf(“%c“,a5);程序段运行后的输
18、出结果是 ( )A) a B) /0 C) e D) f(分数:1.00)A.B.C.D.45.算法分析的目的是( )。A) 找出数据结构的合理性 B) 找出算法中输入和输出之间的关系C) 分析算法的易懂性和可靠性 D) 分析算法的效率以求改进(分数:1.00)A.B.C.D.46.有以下程序#include stdio.hmain()int x;scanf(“%d“,if(x=3); elseif(x!=1O) printf(“%d/n“,x);程序运行时,输入的值在_范围才会有输出结果。A) 不等于 10的整数 B) 大于 3且不等 10的整数C) 大于 3或等于 10的整数 D) 小于
19、3的整数(分数:2.00)A.B.C.D.47.有以下程序:main()char s=“/n123/“;printf(%d,%d/n,strlen(s),sizeof(s);执行后输出结果是( )。A) 赋初值的字符串有错 B) 6,7C) 5,6 D) 6,6(分数:1.00)A.B.C.D.48.程序中若有如下说明和定义语句char fun(char *);main()char *s=“one“,a5=0,*f1)()=fun,ch;以下选项中对函数 fun的正确调用语句是_。A) (*f1)(a); B) *f1(*s); C) fun( D) ch=*f1(s);(分数:1.00)A.
20、B.C.D.49.设有以下语句:char x=3, y=6, z; z=xy2; 则 z的二进制值是( )。A) 00010100 B) 00011011 C) 00011100 D) 00011000(分数:1.00)A.B.C.D.50.有以下程序:int *f(int *x,int*y)if(*x*y)return x;else return y;main()int a=7,b=8,*p,*q,*r;p=printf(“%d,%d,%d/n“,*p,*q,*r);程序运行后输出结果是_。A) 7,8,8 B) 7,8,7 C) 8,7,7 D) 8,7,8(分数:1.00)A.B.C.D
21、.二、填空题(总题数:20,分数:38.50)51.fun函数的功能是:首先对 a所指的 N行 N列的矩阵,找出各行中的最大数,再求这 N个最大值中最小的那个数并作为函数值返回。请填空。#include stdio.h#define N 100int fun(int(*a)N)int row,col,max,min;for(row=0;rowN;row+)for(max=arow 0,col=1;colN;col+)if(_)max=arowcol;if(row=0)min=max;else if(_)min=max;return min;(分数:1.00)填空项 1:_52.有以下程序:ma
22、in()int t=1,i=5;for(;i=0;i-)t*=i;printf(“%d/n“,c);执行后输出结果是_。(分数:2.00)填空项 1:_53.下述程序的输出结果是_。#includestdio.hint fun(int x)int p;if(x=0|x=1)return 3;elsep=x-fun(x-2);return p;void main()printf(“/n%d“,fun(9);(分数:1.00)填空项 1:_54.某二叉树中度为 2的结点有 18个,则该二叉树中有 1 个叶子结点。(分数:2.00)填空项 1:_55.以下程序输出的最后一个值是_int ff(int
23、 n)static int f=1;f=f*n;return f;main()int i;for(i=1;i=5;i+) printf(“%d/n“,ff(i);(分数:1.00)填空项 1:_56.若有如下结构体说明:struct STRUint a,b;char c: double d;struct STRU *p1,*p2;请填空,以完成对 t数组的定义,t 数组的每个元素为该结构体类型。_t20(分数:1.00)填空项 1:_57.在关系模型中,把数据看成一个二维表,每一个二维表称为一个 1。(分数:2.00)填空项 1:_58.在长度为 n的顺序存储的线性表中删除一个元素,最坏情况下
24、需要移动表中的元素个数为 1。(分数:2.00)填空项 1:_59.设有以下程序,为使之正确运行,请在下划线中填入应包含的命令行。(注:try_me()函数在a:/myfile.txt 中有定义。)_main()printf(“/n“);try_me();printf(“/n“);(分数:1.00)填空项 1:_60.若 s是 int型变量,且 s=8,则 s%3+(s+1)%3表达式的值为 1。(分数:2.00)填空项 1:_61.若有以下定义和语句,sizeof(a)的值是_,sizeof(a.share)的值是_。struct dateint day;int month;int year
25、;unionint share1;float share2;share;a;(分数:4.00)填空项 1:_62.数据库管理系统常见的数据模型有层次模型、网状模型和 13 种。(分数:2.00)填空项 1:_63.在 ER图中,矩形表示 1。(分数:2.00)填空项 1:_64.SQL语句“SELECT TOP 10 PERCENT *FROM 订单 ORDER BY 金额 DESC”的查询结果是订单中金额 1的 10%的订单信息。(分数:2.00)填空项 1:_65.以下程序的运行结果是_。#includestdio.hlong fb(int g)switch(g)case 0:return
26、 0; case 1:case 2: return 1; return(fib(g-1)+fib(g-2); main()long k; k=fib(5); printf(“k=%51d/n“, k);(分数:2.00)填空项 1:_66.以下程序的输出结果是_。#include stdio.hmain()int ifor(i=a;if;i+,i+)printf(“%c“,i-a+A);printf(“/n“);(分数:2.00)填空项 1:_67.以下程序运行后的输出结果是_。main()int a,b,c;a=10;b=20;c=(a%b1)|(a/b1);printf(“%d%d%d/n
27、“,a,b,c);(分数:2.00)填空项 1:_68.以下程序的输出结果是_。#includestdio.h#define M 5#define N M+Mmain()int k;k=N*N*5;printf(“%d/n“,k);(分数:2.50)填空项 1:_69.下面程序的运行结果是_。#include stdio.hmain()int y,a;y=2,a=1;while(y-!=-1)doa*=y;a+; while(y-);printf(“%d,%d“,a,y);(分数:4.00)填空项 1:_70.软件生命周期包括 8个阶段。为使各时期的任务更明确,又可以分为以下 3个时期:软件定
28、义期、软件开发期、软件维护期。编码和测试属于 1 期。(分数:1.00)填空项 1:_二级 C语言笔试-370 答案解析(总分:102.50,做题时间:90 分钟)一、选择题(总题数:50,分数:64.00)1.以下叙述中错误的是( )。A) gets函数用于从终端读入字符串B) getchar函数用于从磁盘文件读入字符C) fputs函数用于把字符串输出到文件D) fwrite函数用于以二进制形式输出数据到文件(分数:1.00)A.B. C.D.解析:解析 本题主要考查的是输入输出函数。从终端输入的函数有:scanf、getchar、gets。输出到屏幕的函数有:printf、putchar
29、、puts。从磁盘文件输入的函数有:fscanf、fgetc、fgets、fread、getc。输出到磁盘文件的函数有:fprintf、fputc、fputs、fwrite、putc。由此可见,选项 B)的说法是错误的。2.设在 C语言中,float 类型数据占 4字节,则 double类型数据占( )字节。A) 1 B) 2C) 8 D) 4(分数:1.00)A.B.C. D.解析:解析 在 C语言中各种数据类型在内存中所占的字节数与机器的位数有关,16 位机中(也就是在标准 C中),若 int类型上占 2字节,则 float类型数据占 4字节,double 类型数据占 8字节。3.以下程序
30、的输出结果是( )。main() int a=666, b=888; printf(“%d/n“, (a, b) ); A) 错误信息 B) 666 C) 888 D) 666, 888(分数:1.00)A.B.C. D.解析:解析 本题考查的知识点是格式化输出的应用。printf函数的调用形式:printf(格式控制,输出项 1,输出项 2,),该题的输出项为一个逗号表达式,该表达式的值为 b的值,因此输出结果为 888,故本题选 C)。4.有以下程序#include stdio.hmain( )FILE *fp;int i,a6=1,2,3,4,5,6;fp=fopen(“d3.dat“,
31、“w+b“);fwrite(a,sizeof(int),6,fp);fseek(fp,sizeof(int)*3,SEEK_SET);/*该语句使读文件的位置指针从文件头向后移动 3个 int型数据*/fread(a,sizeof(int),3,fp);fclose(fp);for(i=0;i6;i+)printf(“%d,“,ai);程序运行后的输出结果是A)4,5,6,4,5,6, B)1,2,3,4,5,6, C)4,5,6,1,2,3, D)6,5,4,3,2,1,(分数:2.00)A. B.C.D.解析:解析 首先利用 fwrite函数将数组 a中的数据写到文件中,接着 fseek函
32、数的功能是读文件的位置,指针从文件头向后移动 3个 int型数据,这时文件位置指针指向的是文件中的第 4个 int数据“4”,然后 fread函数将文件 fp中的后 3个数据 4,5,6读到数组 a中,这样就覆盖了数组中原来的前 3项数据。最后数组中的数据就成了4,5,6,4,5,6。5.下列选项中不属于软件生命周期开发阶段任务的是_。A) 软件测试 B) 概要设计 C) 软件维护 D) 详细设计(分数:2.00)A.B. C.D.解析:解析 软件生命周期分为软件定义、软件开发及软件运行维护 3个阶段,其中详细设计、软件编码和软件测试都属于软件开发阶段。6.表达式8-2的值是( )。A) 整数
33、 6 B) 字符 6 C) 表达式不合法 D) 字符 8(分数:1.00)A. B.C.D.解析:解析 在 C语言中,虽然字符都是变为其对应的 ASCII码值来参与算术运算的,但字符间的相对位置关系还是不变的,字符 8和字符 2的 ASCII码值相差仍是 6。7.有以下函数char *fun(char*p)return p; 该函数的返回值是_。A) 无确切的值 B) 形参 p中存放的地址值C) 一个临时存储单元的地址 D) 形参 p自身的地址值(分数:1.00)A.B. C.D.解析:解析 p 本身就是一个字符型指针变量,返回 p也就是返回变量 p中存放的地址值。8.以下选项中,不能正确赋值
34、的是 ( )A) char sl 10;sl“Ctest“; B) char s2 C,t,e,s,t,C) char s320“Ctest“; D) char * s4“Ctest/n“;(分数:1.00)A. B.C.D.解析:9.下列对于线性链表的描述中正确的是( )。A) 存储空间不一定连续,且备元素的存储顺序是任意的B) 存储空间不一定连续,且前件元素一定存储在后件元素的前面C) 存储空间必须连续,且前件元素一定存储在后件元素的前面D) 存储空间必须连续,且各元素的存储顺序是任意的(分数:2.00)A. B.C.D.解析:解析 本题考查的是线性单链表、双向链表与循环链表的结构及其基本
35、运算。在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。故本题答案为 A)。10.若有如下定义:int x=3,y=2,Z;则表达式 Z=X/y*3.0的值是( )。A) 2 B) 2.0 C) 3 D) 3.0(分数:1.00)A.B.C. D.解析:解析 变量 z被定义为整型,所以选项 B和 D不符合题意,首先被排除。变量 x和 y也被定义为整型,所以表达式 x/y的值为整数 1,最后 z被赋值为 3,选项 C正确。11.算法是求解问题的方法,具有输入、输出、有穷性、确定性和_的特性。A)
36、 可行性 B) 计算性C) 程序设计性 D) 检索性(分数:2.00)A. B.C.D.解析:解析 操作的实现是用算法来描述的。算法就是解决问题的方法,它是由一个若干条指令组成的有穷序列,必须满足的 5个要素是:有穷性、确定性、输入、输出和可行性。12.以下符合 C语言语法的实型常量是A) 1.2E0.5 B) 3.14159E C) 5E-3 D) E15(分数:1.00)A.B.C. D.解析:解析 实型常量只能用十进制形式表示,不能用八进制或十六进制形式表示,实型常量可以用小数形式或指数形式表示,在 c语言中,可以用指数形式将实型常量表示为数值和指数两部分,数值部分不能为空,指数部分只能
37、为整数表示。选项 A中 1.2和 0.5都不是整数,选项 B中 3.14159也不是整数。13.在深度为 5的满二叉树中,叶子结点的个数为A) 32 B) 31 C) 16 D) 15(分数:1.00)A.B.C. D.解析:解析 满二叉树是指除最后一层外,每一层上的所有结点都有两个叶子结点。在满二叉树中,层上的结点数都达到最大值,即在满二叉树的第 k层上有 2k-1个结点且深度为 m的满二叉树有 2m-1个结点。14.C语言库函数 fgets(str,n,fg)的功能是_。A) 从中指向的文件中读取长度 n的字符串存入 str指向的内存B) 从 fp指向的文件中读取长度不超过 n-1的字符串
38、存入 str指向的内存C) 从 fp指向的文件中读取 n个字符串存入 str指向的内存D) 从 sb读取至多 n个字符到文件 fp(分数:1.00)A.B. C.D.解析:解析 fgets 函数的作用是从指定的文件读入一个字符串。fgets(str,n,fp);中的 n为要求得到的字符的个数,但只从 fp指向的文件输入 n-1个字符,然后在最后加一个/0字符,因此得到的字符串共有 n个字符。15.设在 C语言中,float 类型数据占 4个字节,则 double类型数据占( )个字节。A) 1 B) 2 C) 8 D) 4(分数:1.00)A.B.C. D.解析:解析 在 C语言中各种数据类型
39、在内存中所占的字节数和机器的指令周期有关,若 int类型占 2个字节,则 float类型数据占 4个字节,double 类型数据占 8个字节。16.数据库系统的核心是A) 数据库 B) 数据库管理系统 C) 模拟模型 D) 软件工程(分数:1.00)A.B. C.D.解析:解析 数据库管理系统(Database Management System,简称 DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,数据库管理系统是数据库系统的核心。17.若有下列说明和语句,已知 int型数据占 2个字节,则下列语句的输出结果是( )。stmct
40、 stchar a15;int b;double c;printf(“%d“,sizeof(struct st);A) 15 B) 8 C) 25 D) 2(分数:1.00)A.B.C. D.解析:解析 本题主要考查结构体的内存使用:对结构体而言,结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立。题中 int b占 2个字节,char a15占 15个字节,double c 占 8个字节,所以共 25个字节。18.若变量 a,i 已正确定义,且 i已正确赋值,下面合法的语句是( )。A) a=1 B) +i; C)
41、 a=a+=5; D) a=int(i);(分数:1.00)A.B. C.D.解析:解析 选项 A) 缺少分号,是一个表达式,而不是语句;选项 C) 包含一个不合法的运算符“+=”;选项 D) 应改为 a=(int)i;。19.结构化程序设计主要强调的是( )。A) 程序的规模 B) 程序的效率C) 程序设计语言的先进性 D) 程序的易读性(分数:2.00)A.B.C.D. 解析:解析 程序不光是编写完就结束了,为了测试和维护程序,往往还有其他人阅读和跟踪程序,因此,程序设计的风格应该强调简单和清晰,即程序的易读性,“清晰第一,效率第二”。20.以下程序输出正确的是_amovep(int *p
42、,int (*a)3,int n)int i,j;for(i=0;in;i+)for(j=0;jn;j+) *p=aij;p+;main()int *p,a33=1,3,5, 2,4,6;p=(int*)mallox(100)amovep)p,a,3);printf(“%d%d/n“,p2,p5);free(p) A) 56 B) 25 C) 34 D) 程序错误(分数:2.00)A. B.C.D.解析:解析 本题 main函数中定义了指针 p和二维数组 a,通过函数 amovep将数组的值存入指针 p所指向的存储单元中,a 的各元素分别:a00=1,a01=3,a01=3,a02=5,a12
43、=2,a11=4,a12=6,a20=0,a21=0,a22=0。通过 malloc()函数给指针分配内存空间,free()函数用于释放指针变量所用内存空间。在主函数中通过 amovep(p,a,3)调用函数 amovep,使得实参p与形参 P,实参数组 a与形参中指向数组的指针变量共用同一存储空间。最后输出 p2,p5为 56。21.在面向对象的方法中, ( )描述的是具有相似属性与操作的一组对象。A) 属性 B) 事件 C) 方法 D) 类(分数:2.00)A.B.C.D. 解析:解析 类(calss)描述的是具有相似属性与操作的一组对象,而一个具体对象则是其对应类的一个实例。22.以下程
44、序的输出结果是( )。 #includestdio.h main() int a=1,b=3; if(+a0)strcpy(arr“you“);strcpy(arr1,“me“);arr03=printf(“%s/n“,arr);程序的输出结果是( )。A) you B) p(int*)calloc(2*sizeof(int);C) p=(int*)malloc(2* sizeof(int); D) p=2 *(int*)calloc(sizeof(int);(分数:1.00)A.B.C. D.解析:28.有以下程序main()int x=1,3,5,7,2,4,6,0,i,j,k;for(i
45、=0;i3;i+)for(j=2;ji;j-)if(xj+1xj) k=xj;xj=xj+1;xj+1=k;for(i=0;i3;i+)for(j=4;j7-i;j+)if(xjxj+1) k=xj;xj;xj+1;xj+1=k;for(i=0;i8;i+)printf(“%d“,xi);printf(“/n“);程序运行后的输出结果是A) 75310246 B) 01234567 C) 76310462 D) 13570246(分数:1.00)A. B.C.D.解析:解析 主函数中定义了一个整型数组 x,并初始化。接着执行了一个二重 for 循环,在该二重循环的作用是将数组的前 4个元素按从
46、大到小排序,接着用了一个二重循环(也是冒泡算法)将数组的后 4个元素按从小到大的顺序排序,故最后依次输出数组各元素的值为 75310246。29.已知形成链表的存储结构如下图所示,则下述类型描述中的空白处应填_。struct linkchar data;_,node;datanextA) struct link next B) link *nextC) stuct next link D) struct link *next(分数:1.00)A.B.C.D. 解析:解析 在单向链表中,由于每个结点需要存储下一个结点的地址,且下个结点的数据类型与前个结点的数据类型完全相同,故应为 struct link *next。30.下列数据结构中,能用二分法进行查找的是( )。A) 顺序存储的有序线性表 B) 线性链表C) 二叉链表 D) 有序线性链表(分数:1.00)A. B.C.D.解析:解析 二分查找只适用于顺序存储的有序表。此处所说的有序表是指线性表中的元素按值非递减排列(即从小到大,但允许相邻元素值相