1、二级 C 语言笔试-480 及答案解析(总分:103.00,做题时间:90 分钟)一、选择题(总题数:40,分数:63.00)1.下列关于栈的描述中错误的是( )。A) 栈是先进先出的线性表B) 栈只能顺序存储C) 栈具有记忆作用D) 对栈的插入与删除操作中,不需要改变栈底指针(分数:2.00)A.B.C.D.2.下面的描述中,符合结构化程序设计风格的是( )。A) 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑B) 模块只有一个入口,可以有多个出口C) 注重提高程序的执行效率D) 不使用 goto 语句(分数:1.00)A.B.C.D.3.下列描述中正确的是( )。A) 程序
2、就是软件 B) 软件开发不受计算机系统的限制C) 软件既是逻辑实体,又是物理实体 D) 软件是程序、数据和相关文档的集合(分数:2.00)A.B.C.D.4.软件没计中划分模块的一个准则是( )。A低内聚、低耦合 B高内聚、低耦合C低内聚、高耦合 D高内聚、高耦合(分数:1.00)A.B.C.D.5.下列叙述中,不属于软件需求规格说明书的作用的是_。A) 便于用户、开发人员进行理解和交流B) 反映出用户问题的结构,可以作为软件开发工作的基础和依据C) 作为确认测试和验收的依据D) 便于开发人员进行需求分析(分数:2.00)A.B.C.D.6.数据库设计的四个阶段是:需求分析,概念设计,逻辑设计
3、和_。(A) 编码设计(B) 测试阶段(C) 运行阶段(D) 物理设计(分数:2.00)A.B.C.D.7.可以在 C 语言程序中用做用户标识符的一组标识符是( )。A) void123BBNB) aa_abccasC) as+b3-123IfD) 6fDoSIG(分数:2.00)A.B.C.D.8.以下定义语句中正确的是_。A) char a=Ab=B; B) flo at a=b=10.0; C) int a=10,*b= D) float *a,b=(分数:1.00)A.B.C.D.9.设变量 a 是 int 型,f 是 float 型,i 是 double 型,则表达式 10+a+i*
4、f 值的数据类型为A) int B) float C) double D) 不确定(分数:1.00)A.B.C.D.10.下列选项中,不能用做标识符的是_。A) _1234_ B) _1_2 C) int_2_ D) 2_int_(分数:1.00)A.B.C.D.11.表达式 3.6-5/2+1.2+5%2 的值是A) 4.3 B) 4.8 C) 3.3 D) 3.8(分数:1.00)A.B.C.D.12.现有定义 int a;double b;float c;char k;,则表达式 a/b+c-k 值的类型为A) int B) double C) float D) char(分数:1.00
5、)A.B.C.D.13.以下关于 long、int 和 short 类型数据占用内存大小的叙述中正确的是( )。 A) 均占 4 个字节 B) 根据数据的大小来决定所占内存的字节数 C) 由用户自己定义 D) 由 C 语言编译系统决定(分数:1.00)A.B.C.D.14.若变量已正确定义,要求通过 scanf(“%c%d%c%d,for(i=3;i=1;i-)for(j=1;j=2;j+) printf(“%d “,i+j);printf(“/n“);程序运行的结果是_。(A) 2 3 4 3 4 5(B) 4 3 2 5 4 3(C) 2 3 3 4 4 5(D) 4 5 3 4 2 3(
6、分数:1.00)A.B.C.D.17.已知字母 A 的 ASCII 代码值为 65,若变量 kk 为 char 型,以下不能正确判断出 kk 中的值为大写字母的表达式是_。(A) kk=Akk=Z(B) !(kk=A|kk=Z)(C) (kk+32)=a(kk+32)=z(D) isalpha(kk)(kk91)(分数:1.00)A.B.C.D.18.以下程序运行后的输出结果是#includestdio.hmain()int a=1, b=2, C=3, d=0;if(a=1 else printf(%d, %d, %d/n“, a, b, C);else printf(“%d, %d, %d
7、/n“, a, b, C);A) 1,2,3 B) 1,3,2 C) 1,3,3 D) 3,2,1(分数:1.00)A.B.C.D.19.若变量 a 是 int 类型,并执行了语句:a=A+1.6;则正确的叙述是( )。A) a 的值是字符C B) a 的值是浮点型C) 不允许字符型和浮点型相加 D) a 的值是字符A的 ASCII 码值加上 1(分数:1.00)A.B.C.D.20.有以下程序#include stdio.hmain()int n=2,k=0;while(k+”则对 a 数组的第 i 行第 j 列元素的正确引用为( )。A) *(*(a+i)+j) B) (a+i)j C)
8、*(a+i+j) D) *(a+i)+j(分数:2.00)A.B.C.D.22.不能与 dowhile(exp)语句中的(exp)等价的表达式是( )。A) (!exp0) B) (exp0 exp0) C) (exp0) D) (exp!0)(分数:2.00)A.B.C.D.23.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是_。A) 函数的实参和其对应的形参共占同一存储单元B) 形参只是形式上的存在,不会占用具体存储单元C) 同名的实参和形参占同一存储单元D) 函数的形参和实参分别占用不同的存储单元(分数:2.00)A.B.C.D.24.有以下程序main()int a
9、44=1,4,3,2,8,6,5,7,3,7,2,5,4,8,6,1,i,j,k,t;for(i=0;i4;i+)for(j=0;j3;j+)for(k=j+1;k4;k+)if(ajiaki)t=aji;aji=aki;aki=t;/*按列排序*/for(i=0;i4;i+)printf(“%d,“,aii);程序运行后的输出结果是A) 1,6,5,7, B) 8,7,3,1, C) 4,7,5,2, D) 1,6,2,1,(分数:2.00)A.B.C.D.25.下列叙述中,错误的是( )。A) 在同一 C 程序文件中,不同函数中可以使用名字相同的变量B) 在 main()函数体内定义的变量
10、是全局变量C) 形参是局部变量,函数调用完成即失去意义D) 若同一文件中全局和局部变量同名,则全局变量在局部变量作用范围内不起作用(分数:1.00)A.B.C.D.26.下列叙述中错误的是( )。A) 在程序中凡是以“#”开始的语句行都是预处理命令行B) 预处理命令行的最后不能以分号表示结束C) #define MAX 是合法的宏定义命令行D) C 程序对预处理命令行的处理是在程序执行的过程中进行的(分数:2.00)A.B.C.D.27.设 q1 和 q2 是指向一个 float 型一维数组的指针变量,k 为 float 型变量,则不能正确执行的语句是( )。A) k=*q1+*q2; B)
11、q1=k; C) q1=q2; D) k=*q1*(*q2);(分数:2.00)A.B.C.D.28.以下语句中存在语法错误的是_。A) char ss620;ss1=“right?“; B) char ss20=“right?“;C) char*ss6;ss1=“right?“; D) char*ss=“right?“;(分数:2.00)A.B.C.D.29.下列关于 C 语言数据文件的叙述中正确的是( )。 A) 文件由 ASCII 码字符序列组成,C 语言只能读写文本文件 B) 文件由二进制数据序列组成,C 语言只能读写二进制文件 C) 文件由记录序列组成,可按数据的存放形式分为二进制文
12、件和文本文件 D) 文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件(分数:2.00)A.B.C.D.30.以下程序(strcat 函数用以连接两个字符串)运行后的输出结果是 #includestdio.h #includestring.h main() char a20=“ABCD/OEFG/0“, b=“IJK“; strcat(a, b); printf(“%s/n:, A); A) ABCD/0FG/0IJK B) ABCDIJK C) IJK D) EFGIJK(分数:2.00)A.B.C.D.31.下列语句中,在字符串 s1 和 s2 相等时显示“they are
13、Equal”的是( )。A) if(*s1=*s2) B) if(!strcmp(s1,s2)puts(“they are Equal“); puts(“they are Equal“);C) if(s1=s2) D) if(strcmp(s1,s2)Puts(“they are Equal“); pros(“they are Equal“);(分数:2.00)A.B.C.D.32.若有下列说明,则( )不是对 strcpy 库函数的正确的调用。strcpy 库函数用于复制一个字符串:char*str1=“abcdt“,str210,*str3=“hijklmn“,*str42,*str5=“
14、aaaa“;A) strcpy(str2,str1) B) strcpy(str3,str1)C) strcpy(str4,str1) D) strcpy(str5,str1)(分数:1.00)A.B.C.D.33.有以下程序:# define f(x) (x*x)main()int i1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf(“%d,%d/n“,i1,i2);程序运行后的输出结果是_。A) 64,28 B) 4,4C) 4,3 D) 64,64(分数:2.00)A.B.C.D.34.以下叙述中错误的是_。A) 可以通过 typedef 增加新的类型B
15、) 可以用 typedef 将已存在的类型用一个新的名字来代表C) 用 typedef 定义新的类型名后,原有类型名仍有效D) 用 typedef 可以为各种类型起别名,但不能为变量起别名(分数:2.00)A.B.C.D.35.以下叙述中错误的是_。(A) 可以通过 typedef 增加新的类型(B) 可以用 typedef 将已存在的类型用一个新的名字来代表(C) 用 typedef 定义新的类型名后,原有类型名仍有效(D) 用 typedef 可以为各种类型起别名,但不能为变量起别名(分数:2.00)A.B.C.D.36.下述关于数据库系统的叙述中正确的是 _。A) 数据库系统减少了数据冗
16、余B) 数据库系统避免了一切冗余C) 数据库系统中数据的一致性是指数据类型一致D) 数据库系统比文件系统能管理更多的数据(分数:2.00)A.B.C.D.37.设有定义:int n=0,*p=,则以下选项中,正确的赋值语句是 _。A) p=1; B) *q=2 C) q=p D) *p=5(分数:2.00)A.B.C.D.38.有以下程序#include stdiohmain()FILE *fp; int a10=1,2,3,i,n;fp=fopen(“d1dat“,“w“);for(i=0;i3;i+) fprintf(fp,“%d“,ai);fprintf(fp,“/n“);fclose(
17、fp);fp=fopen(“d1.dat“,“r“);fscanf(fp,“%d“,printf(“%d/n“,s);程序执行后的输出结果是_。A) 45 B) 50 C) 60 D) 55(分数:2.00)A.B.C.D.40.有以下程序main()unsigned char a=2,b=4,c=5,d;d=a|b;d=c;printf(“%d/n“,d);程序运行后的输出结果是_。(A) 3(B) 4(C) 5(D) 6(分数:2.00)A.B.C.D.二、填空题(总题数:15,分数:40.00)41.41. 数据结构分为逻辑结构与存储结构,线性链表属于U /U。(分数:2.00)填空项
18、1:_42.42. 数据库的逻辑模型设计阶段的任务是将 1 转换成关系模式。(分数:2.00)填空项 1:_43.一个模块直接调用的其他模块的模块个数称为 1。(分数:2.00)填空项 1:_44.定义 char ch“$“;int i=1,j;执行 j=!chi+以后,i 的值为 1。(分数:2.00)填空项 1:_45.下列程序段中循环体的执行次数是_。a15;b0,dob+2;a-2+b;while(a0);(分数:2.00)填空项 1:_46.以下程序的功能是:将输入的正整数按逆序输出。例如:若输入 135,则输出 531,请填空。#includestdio.hmain()int n,
19、s;printf(“Enter a number:“);scanf(“%d“,n);printf(“Output:“);dos=n%10;printf(“%d“,s);_;while(n!=0);printf(“/n“);(分数:2.00)填空项 1:_47.以下程序的运行结果是_。 #define MAX(a,b)(ab?a:b)+1 main () int i=6,j=8,k; printf(“%d/n“,MAX(i,j); (分数:2.00)填空项 1:_以下 isprime 函数的功能是:判断形参 a 是否为素数,是素数,函数返回 1,否则返回 0。请填空。int isprime(in
20、t a)int i;for(i=2;i=a/2;i+)if(a%i=0)U /U;U (11) /U;(分数:4.00)填空项 1:_填空项 1:_48.已有定义:double *p;,请写出完整的语句,利用 malloc 函数使 p 指向一个双精度型的动态存储单元 1。(分数:2.00)填空项 1:_49.下面程序的功能是:对字符串从小到大进行排序并输出,请填空。#include“string.h“#include“stdio.h“sort(char *a,int n)int i,j;char *p;for(j=1;j=n-1;j+)for(i=0;in-j;i+)if(_)0)p=ai;a
21、i=ai+1;ai+1=p;main()int i;char *book=“itisme“,“itisyou“,“howareyou“,“fine“,“goodnight“,“goodbye“;sort(_);for(i=0;i6;i+)printf(“%s/n“,booki);(分数:2.00)填空项 1:_50.下述函数统计字符串中的单词个数,单词是指处在空格之间的字符序列,请填空。int word(char*s)int num=0,flag=0;while(*s)if( 【13】 =“) flag=0;else if 【14】 flag=1;num+return 【15】 ;(分数:6.
22、00)填空项 1:_51.53. 下述函数统计个字符串中的单词个数,单词是指处在空格之间的字符序列,请填空。int word(char*s)int num=0,flag=0;while(*s)if(U /U=) flag=0;else if(U /U)flag=1;num+returnU /U;(分数:6.00)填空项 1:_52.#define 命令出现在程序中函数的外面,宏名的有效范围为 1。(分数:2.00)填空项 1:_53.55. 有一种攻击是针对网络低层协议而不是针对某项特定的应用服务,这种攻击称为U /U。下面 rotate 函数的功能:将 n 行 n 列的矩阵 A 转置为 A,
23、请填空。# define N 4void rotate(int aN)int i, j, t;fori=0; iN; j+forj=0;U /U; j+t=aij;aij=aji;aji=t;(分数:2.00)填空项 1:_54.56. 下面程序的功能:输出 100 以内能被 3 整除且个位数为 6 的所有整数,请填空。# includestdio. hmain()int i, j;for(i=0; i10 或 i=9; i+)j=i*10+6;if(U /U)continue;printf(“% d“, j);(分数:2.00)填空项 1:_二级 C 语言笔试-480 答案解析(总分:103
24、.00,做题时间:90 分钟)一、选择题(总题数:40,分数:63.00)1.下列关于栈的描述中错误的是( )。A) 栈是先进先出的线性表B) 栈只能顺序存储C) 栈具有记忆作用D) 对栈的插入与删除操作中,不需要改变栈底指针(分数:2.00)A.B. C.D.解析:解析 栈是限定只能在表的一端进行插入和删除操作的线性表,入栈和出栈都是在栈顶进行,它们的操作特点是先进后出,因此具有记忆作用。栈可以采用顺序存储,也可以采用链式存储。2.下面的描述中,符合结构化程序设计风格的是( )。A) 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑B) 模块只有一个入口,可以有多个出口C) 注
25、重提高程序的执行效率D) 不使用 goto 语句(分数:1.00)A. B.C.D.解析:解析 结构化程序设计方法的四条原则是:自顶向下;逐步求精;模块化;限制使用 goto 语句。“自顶向下”是指在程序设计时,先考虑总体,后考虑细节,先考虑全局目标,后考虑局部目标;“逐步求精”是指对复杂问题应设计一些子目标作过渡,逐步细节化;“模块化”是指一个复杂问题由若干稍简单的问题构成,解决这个复杂问题的程序也应由若干稍简单问题的小程序组成。3.下列描述中正确的是( )。A) 程序就是软件 B) 软件开发不受计算机系统的限制C) 软件既是逻辑实体,又是物理实体 D) 软件是程序、数据和相关文档的集合(分
26、数:2.00)A.B.C.D. 解析:解析 软件是运行在计算机硬件之上的逻辑实体,包括程序、数据和相关的文档。软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制。4.软件没计中划分模块的一个准则是( )。A低内聚、低耦合 B高内聚、低耦合C低内聚、高耦合 D高内聚、高耦合(分数:1.00)A.B. C.D.解析:解析 耦合性和内聚性是模块独立性的两个定性标准,是互相关联的。在软件设计中,各模块间的内聚性越强,则耦合性越弱。一般优秀的软件设计,应尽量做到高内聚、低耦合,有利于提高模块的独立性。5.下列叙述中,不属于软件需求规格说明书的作用的是_。A) 便于用户、开发人员进行理解和交流B)
27、 反映出用户问题的结构,可以作为软件开发工作的基础和依据C) 作为确认测试和验收的依据D) 便于开发人员进行需求分析(分数:2.00)A.B.C.D. 解析:评析 软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。它不能方便开发人员进行需求分析。6.数据库设计的四个阶段是:需求分析,概念设计,逻辑设计和_。(A) 编码设计(B) 测试阶段(C) 运行阶段(D) 物理设计(分数:2.00)A.B.C.D. 解析:7.可以在 C 语言程序中用做用户标识符的一组标识符是( )。A) void123BBNB) aa_abccasC) as+b3-123IfD) 6fDoSIG(分
28、数:2.00)A.B. C.D.解析:解析 C 语言规定,标识符是由字母、数字或下画线组成,并且它的第一个字符必须是字母或者下画线。8.以下定义语句中正确的是_。A) char a=Ab=B; B) flo at a=b=10.0; C) int a=10,*b= D) float *a,b=(分数:1.00)A.B.C. D.解析:解析 在 A 选项中,定义了两个 char 型的变量,但是在这两个变量之间应该加上逗号;在 B 选项中,没有对 b 进行定义,只是对 b 进行了赋值,因此是错误的;在 D 选项中,把一个指针赋值给了一个float 型的变量,因此是错误的。9.设变量 a 是 int
29、 型,f 是 float 型,i 是 double 型,则表达式 10+a+i*f 值的数据类型为A) int B) float C) double D) 不确定(分数:1.00)A.B.C. D.解析:解析 根据混合运算规则,如果有一个数据是 float 型或 double 型,则其他数据类型先转化为double 型,运算的结果最终也是 double 型。10.下列选项中,不能用做标识符的是_。A) _1234_ B) _1_2 C) int_2_ D) 2_int_(分数:1.00)A.B.C.D. 解析:解析 合法标识符的命名规则是:标识符可以由字母、数字、下画线三种字符组成,并且第一个
30、字符必须为字母或者是下画线,同时,标识符不可以与任意一个关键字同名。在选项 D 中,以数字 2 开头,不符合标识符的命名规则。11.表达式 3.6-5/2+1.2+5%2 的值是A) 4.3 B) 4.8 C) 3.3 D) 3.8(分数:1.00)A.B.C.D. 解析:解析 这道题要注意 2/5 的结果是 2,因为运算符两边的数值类型均为整型,故运算结果的数值类型也被认定为整型。12.现有定义 int a;double b;float c;char k;,则表达式 a/b+c-k 值的类型为A) int B) double C) float D) char(分数:1.00)A.B. C.D
31、.解析:解析 双目运算中两边运算量类型转换规律:运算数 1 运算数 2 转换结果类型短整型 长整型 短整型-长整型整型 长整型 整型-长整型字符型 整型 字符型-整型有符号整型 无符号整型 有符号整型-无符号整型整型 浮点型 整型-浮点型在 a/b 的时候,a、b 的类型不一致,根据类型转换规则,把整型转换成 double 类型,之后的加、减类似。转化规则为 charshortintunsignedlongdoublefioat。13.以下关于 long、int 和 short 类型数据占用内存大小的叙述中正确的是( )。 A) 均占 4 个字节 B) 根据数据的大小来决定所占内存的字节数 C
32、) 由用户自己定义 D) 由 C 语言编译系统决定(分数:1.00)A.B.C.D. 解析:解析不同的编译系统或计算机系统对几类整型数所占用的字节数有不同的规定。long、int 和short 类型数据占用内存大小是由选择何种 C 编译系统决定的。14.若变量已正确定义,要求通过 scanf(“%c%d%c%d,for(i=3;i=1;i-)for(j=1;j=2;j+) printf(“%d “,i+j);printf(“/n“);程序运行的结果是_。(A) 2 3 4 3 4 5(B) 4 3 2 5 4 3(C) 2 3 3 4 4 5(D) 4 5 3 4 2 3(分数:1.00)A.
33、B.C.D. 解析:17.已知字母 A 的 ASCII 代码值为 65,若变量 kk 为 char 型,以下不能正确判断出 kk 中的值为大写字母的表达式是_。(A) kk=Akk=Z(B) !(kk=A|kk=Z)(C) (kk+32)=a(kk+32)=z(D) isalpha(kk)(kk91)(分数:1.00)A.B. C.D.解析:18.以下程序运行后的输出结果是#includestdio.hmain()int a=1, b=2, C=3, d=0;if(a=1 else printf(%d, %d, %d/n“, a, b, C);else printf(“%d, %d, %d/n
34、“, a, b, C);A) 1,2,3 B) 1,3,2 C) 1,3,3 D) 3,2,1(分数:1.00)A.B.C. D.解析:解析 第一条 if 语句的条件判断成立,并且执行 b+操作后,b 的值为 3;第二条 if 语句判断,条件 b!=2 的值为真,不再进行 c-!=3 的判断,因此,c 未被改变,仍然为 3。19.若变量 a 是 int 类型,并执行了语句:a=A+1.6;则正确的叙述是( )。A) a 的值是字符C B) a 的值是浮点型C) 不允许字符型和浮点型相加 D) a 的值是字符A的 ASCII 码值加上 1(分数:1.00)A.B.C.D. 解析:解析 字符“A”
35、要转换成相应的 ASCII 码值,由于运算结果要赋值给 int 型变量,所以对 1.6进行取整运算,最后 a 的值应是 66。20.有以下程序#include stdio.hmain()int n=2,k=0;while(k+”则对 a 数组的第 i 行第 j 列元素的正确引用为( )。A) *(*(a+i)+j) B) (a+i)j C) *(a+i+j) D) *(a+i)+j(分数:2.00)A. B.C.D.解析:解析 本题考查如何通过地址来引用数组元素。通过地址来引用数组元素的方法有下列 5 种:aij;*(ai+j);*(*(a+i)+j);*(ai)j; *( B) q1=k;
36、C) q1=q2; D) k=*q1*(*q2);(分数:2.00)A.B. C.D.解析:解析 选项 A)是将指针 q1 和 q2 所指向的变量值相加,然后赋给 k;选项 B)中,float 型数据和指针型数据之间不能进行赋值运算:选项 C)中,是两个指针变量之间的赋值;选项 D)中,是两个指针型变量所指向的两个 float 型数据相乘。28.以下语句中存在语法错误的是_。A) char ss620;ss1=“right?“; B) char ss20=“right?“;C) char*ss6;ss1=“right?“; D) char*ss=“right?“;(分数:2.00)A. B.C
37、.D.解析:解析 数组赋值时需要用表示出来,故选项 A 错误。29.下列关于 C 语言数据文件的叙述中正确的是( )。 A) 文件由 ASCII 码字符序列组成,C 语言只能读写文本文件 B) 文件由二进制数据序列组成,C 语言只能读写二进制文件 C) 文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件 D) 文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件(分数:2.00)A.B.C.D. 解析:解析本题考查数据文件的基本概念。文件由数据流形式组成,可以按数据的存放形式分为二进制文件和文本文件;C 语言既能读写文本文件,又可以读写二进制文件。30.以下程序(str
38、cat 函数用以连接两个字符串)运行后的输出结果是 #includestdio.h #includestring.h main() char a20=“ABCD/OEFG/0“, b=“IJK“; strcat(a, b); printf(“%s/n:, A); A) ABCD/0FG/0IJK B) ABCDIJK C) IJK D) EFGIJK(分数:2.00)A.B. C.D.解析:解析 本题的关键是看懂字符数组 a 的定义和初始化。程序中对数组 a 的定义和初始化语句为“char a20=“ABCD/0EFG/0“”,字符串中字符D后出现字符串结束标记/0,所以 a 数组中实际存放的
39、字符串为“ABCD“,语句“strcat(a,b);“实现字符串 a 和字符串 b 的连接,所以 a 中的内容为字符串“ABCDIJK“。31.下列语句中,在字符串 s1 和 s2 相等时显示“they are Equal”的是( )。A) if(*s1=*s2) B) if(!strcmp(s1,s2)puts(“they are Equal“); puts(“they are Equal“);C) if(s1=s2) D) if(strcmp(s1,s2)Puts(“they are Equal“); pros(“they are Equal“);(分数:2.00)A.B. C.D.解析:
40、解析 字符串比较不能用两个等于号(=)来进行比较,应使用函数 strcmp(s1,s2)来比较。函数stremp(s1,s2)的功能是:当字符串 s1 和 s2 相等时,返回值为 0。因此,当表达式!strcmp(s1,s2)=1 时,条件成立,执行后面的语句,输出 they are Equal。32.若有下列说明,则( )不是对 strcpy 库函数的正确的调用。strcpy 库函数用于复制一个字符串:char*str1=“abcdt“,str210,*str3=“hijklmn“,*str42,*str5=“aaaa“;A) strcpy(str2,str1) B) strcpy(str3
41、,str1)C) strcpy(str4,str1) D) strcpy(str5,str1)(分数:1.00)A.B.C. D.解析:解析 strcpy(s1,s2)函数的功能是将字符串 s2 复制到字符串 s1 中(注意:要保证 s1 存储区能容纳下 s2 字符串)。33.有以下程序:# define f(x) (x*x)main()int i1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf(“%d,%d/n“,i1,i2);程序运行后的输出结果是_。A) 64,28 B) 4,4C) 4,3 D) 64,64(分数:2.00)A.B.C. D.解析:解析
42、 根据题意,i1=f(8)/f(4)进行宏替换后,11=(8*8)/(4*4)=4,i2=f(4+4)/f(2+2)=(4+4*4+4)/(2+2*2+2)=24/8=3。所以输出结果为 4、3。34.以下叙述中错误的是_。A) 可以通过 typedef 增加新的类型B) 可以用 typedef 将已存在的类型用一个新的名字来代表C) 用 typedef 定义新的类型名后,原有类型名仍有效D) 用 typedef 可以为各种类型起别名,但不能为变量起别名(分数:2.00)A. B.C.D.解析:解析 typedef 用来声明新的类型名来代替已有的类型名,typedef 只是对已经存在的类型增加
43、了一个类型名,原有类型名仍有效。typedef 不能用来定义变量。35.以下叙述中错误的是_。(A) 可以通过 typedef 增加新的类型(B) 可以用 typedef 将已存在的类型用一个新的名字来代表(C) 用 typedef 定义新的类型名后,原有类型名仍有效(D) 用 typedef 可以为各种类型起别名,但不能为变量起别名(分数:2.00)A. B.C.D.解析:36.下述关于数据库系统的叙述中正确的是 _。A) 数据库系统减少了数据冗余B) 数据库系统避免了一切冗余C) 数据库系统中数据的一致性是指数据类型一致D) 数据库系统比文件系统能管理更多的数据(分数:2.00)A. B.
44、C.D.解析:解析 数据库系统的主要目的是尽量减少和避免数据的冗余。数据库存放数据是按数据所提供的数据模式存放的,它能构造复杂的数据结构以建立数据间内在联系与复杂的关系,从而构成数据的全局结构模式。数据库中的数据具有“集成”、“共享”的特点,即是数据库集中了各种应用的数据,进行统一的构造与存储,而使它们可被不同应用程序所使用。所谓数据的一致性是指在系统中同一数据的不同出现应保持相同的值,而数据的不一致性指的是同一数据在系统的不同副本处有不同的值。37.设有定义:int n=0,*p=,则以下选项中,正确的赋值语句是 _。A) p=1; B) *q=2 C) q=p D) *p=5(分数:2.0
45、0)A.B.C.D. 解析:解析 本题中 n 是 int 型变量,p 是指向 int 型的指针变量,q 是指向指针的指针变量,故正确答案为 D。38.有以下程序#include stdiohmain()FILE *fp; int a10=1,2,3,i,n;fp=fopen(“d1dat“,“w“);for(i=0;i3;i+) fprintf(fp,“%d“,ai);fprintf(fp,“/n“);fclose(fp);fp=fopen(“d1.dat“,“r“);fscanf(fp,“%d“,printf(“%d/n“,s);程序执行后的输出结果是_。A) 45 B) 50 C) 60
46、D) 55(分数:2.00)A.B.C. D.解析:解析 fun 函数中用 static 声明的局部变量 sum 的值在函数调用结束后不消失而保留原值,即占用的存储单元不释放,在下一次调用该函数时,该变量已有值,就是上一次函数调用结束时的值。40.有以下程序main()unsigned char a=2,b=4,c=5,d;d=a|b;d=c;printf(“%d/n“,d);程序运行后的输出结果是_。(A) 3(B) 4(C) 5(D) 6(分数:2.00)A.B. C.D.解析:二、填空题(总题数:15,分数:40.00)41.41. 数据结构分为逻辑结构与存储结构,线性链表属于U /U。(分数:2.00)填空项 1:_ (正确答案:存储结构)解析:解析 数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构;数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式。在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。42.42. 数据库的逻辑模型设计阶段的任务是将 1 转换成关系模式。(分数:2.00)填空项 1:_ (正确答案:E-R 图