1、二级 C语言笔试-482 及答案解析(总分:92.00,做题时间:90 分钟)一、选择题(总题数:40,分数:60.00)1.软件是指( )。A程序 B程序和文档C算法加数据结构 D程序、数据和相关文档的集合(分数:1.00)A.B.C.D.2.算法的时间复杂度是指( )。A) 执行算法程序所需要的时间B) 算法程序的长度C) 算法执行过程中所需要的基本运算次数D) 算法程序中的指令条数(分数:2.00)A.B.C.D.3.数据的存储结构是指( )。A) 数据所占的存储空间B) 数据的逻辑结构在计算机中的存放形式C) 数据在计算机中的顺序存储方式D) 存储在计算机外存中的数据(分数:2.00)
2、A.B.C.D.4.在面向对象方法中, ( )描述的是具有相似属性与操作的一组对象。A) 属性 B) 事件 C) 方法 D) 类(分数:2.00)A.B.C.D.5.下列选项中不属于软件生命周期开发阶段任务的是( )。A) 软件测试 B) 概要设计 C) 软件维护 D) 详细设计(分数:1.00)A.B.C.D.6.数据独立性是数据库技术的重要特点之一。所谓数据独立性是指( )。A) 数据与程序独立存放B) 不同的数据被存放在不同的文件中C) 不同的数据只能被对应的应用程序所使用D) 以上三种说法都不对(分数:2.00)A.B.C.D.7.关系表中的每一横行称为一个A) 元组 B) 字段 C)
3、 属性 D) 码(分数:2.00)A.B.C.D.8.有下列二叉树,对此二叉树前序遍历的结果为( )。(分数:2.00)A.B.C.D.9.有三个关系 R、S 和如下;(分数:2.00)A.B.C.D.10.下列叙述中正确的是( )。A为了建立一个关系,首先要构造数据的逻辑关系B表示关系的二维表中各元组的每一个分量还可以分成若干数据项C一个关系的属性名表称为关系模式D一个关系可以包括多个二维表(分数:1.00)A.B.C.D.11.下面各选项中,均是 C语言合法标识符的选项组是A) 33 we auto B) _23 me _3ewC) _43 3e_ else D) ER-DF 32(分数:
4、1.00)A.B.C.D.12.若有下列定义(设 int类型变量占 2字节):int i=8,j=9;则下列语句:printf(“i=%d,j=%d/n“,i,j);输出的结果是( )。Ai=8,j=9 Bi=%d,j=%dCi=%8,j=%9 D8,9(分数:1.00)A.B.C.D.13.在 C语言中,运算对象必须是整型数的运算符是A) % B) / C) %和/ D) *(分数:1.00)A.B.C.D.14.现有定义 int a;double b;float c;char k;,则表达式 a/b+c-k值的类型为A) int B) double C) float D) char(分数:
5、1.00)A.B.C.D.15.在 ASCII代码表中每一个大写字母比它相应的小写字母的 ASCII码( )。A) 小 32 B) 小 64C) 大 32 D) 大 1(分数:2.00)A.B.C.D.16.下列程序输出的结果是( )。main()double d=3.2;int x,y;x=1.2;y=(x+3.8)/5.0;printf(“%d/n“,d*y);A3 B3.2 C0 D3.07(分数:1.00)A.B.C.D.17.两次运行下面的程序,如果从键盘上分别输入 3和 2,则输出结果是( )。 #includestdio.h main() int x; scanf(“%d“, e
6、lse printf(“%d/n“,y);B)if(a=0)printf(“%d/n“,y); else printf(“%d/n“,x);C)if(a!=0)printf(“%d/n“,x); else printf(“%d/n“,y);D)if(a=0)printf(“%d/n“,x); else printf(“%d/n“,y);(分数:2.00)A.B.C.D.20.下列能正确定义一维数组的选项是( )。A) int a5=0,1,2,3,4,5); B) char a=0,1,2,3,4,5;C) char a=A,B,C; D) int a5=“0123“;(分数:1.00)A.B
7、.C.D.21.若 x和 y代表整型数,以下表达式中不能正确表示数学关系|xy|10 的是( )。A) abs(x-y)10 B) x-y -10 B) while(ch=getchar()=/n)putchar(ch);C) while(ch=getchar()!=/N)putchar(ch); D) while(ch=getchar()!=/n)putchar(ch);(分数:2.00)A.B.C.D.23.已有定义“char c;”,程序前面已在命令行中包含 ctype.h文件,不能用于判断 c中的字符是否为大写字母的表达式是( )。Aisupper(c) BA-c=ZCA=cchar
8、*argv ;int i;printf(“%d/n“,argc);A)3 B)4 C)2 D)以上答案都不正确(分数:2.00)A.B.C.D.27.若有定义 int(*pt)3;,则下列说法正确的是A) 定义了基类型为 int的三个指针变量B) 定义了基类型为 int的具有三个元素的指针数组 ptC) 定义了一个名为*pt、具有三个元素的整型数组D) 定义了一个名为 pt的指针变量,它可以指向每行有三个整数元素的二维数组A.B.C.D.28.有以下程序main()int a33,*p,i;p=a00;for(i=0;i9;i+)pi=i;for(i=0;i3;i+)printf(“%d“,a
9、1i);程序运行后的输出结果是_。(A) 0 1 2(B) 1 2 3(C) 2 3 4(D) 3 4 5(分数:2.00)A.B.C.D.29.以下函数返回 a所指数组中最大值所在的下标值:fun(int *a,int n)int i,j=0,p;p=j;for(i=j;in;i+)if(aiap)_;return(p);在下划线处应填入的内容是( )。A) i=p B) ap=ai C) p=j D) p=i(分数:1.00)A.B.C.D.30.字符(char)型数据在微机内存中的存储形式是_。A) 反码 B) 补码 C) EBCDIC 码 D) ASC码(分数:2.00)A.B.C.D
10、.31.下列说法中不正确的是( )。A) 指针是一个变量B) 指针中存放的是数值C) 指针可以进行加、减等算术运算D) 指针变量占用存储空间(分数:1.00)A.B.C.D.32.以下叙述中错误的是A) 改变函数形参的值,不会改变对应实参的值B) 函数可以返回地址值C) 可以给指针变量赋一个整数作为地址值D) 当在程序的开头包含头文件 stdio.h时,可以给指针变量赋 NULL(分数:2.00)A.B.C.D.33.以下程序运行后的输出结果是#define F(X,Y)(X) * (Y)main( )int a=3,b=4;printf(“%d/n“,F(a+,b+);A) 12 B) 15
11、 C) 16 D) 20(分数:2.00)A.B.C.D.34.下列字符数组初始化语句中,不正确的是( )。 A) char c=goodmorning; B) char c20=“goodmorning“; C) char c=a,b,c,d;D) char c=“goodmorning“;(分数:2.00)A.B.C.D.35.以下不能将 s所指字符串正确复制到 t所指存储空间的是( )。 A) while(*t= *s)t+;s+;) B) for(i=0;ti=si;i+); C) do*t+=*s+;while(*s); D) for(i=0,j=0;ti+=sj+;);(分数:2.
12、00)A.B.C.D.36.有下列程序:#includestdio.hstructstint(x,y)date2=1,10,2,20;main()structst*p=date;printf(“%d,“,p-y);printf(“%d/n“,(+p)-x);程序的运行结果是( )。A10,1 B20,1 C10,2 D20,2(分数:1.00)A.B.C.D.37.以下正确的程序段是A) char str1=“12345“,str2=“abcdef“;B) char str10,*st=“abcde“;strcat(str,st);C) charstr10=“ “。*st=“abcde“;st
13、rcat(str,st);D) char*st1=“12345“,*st2=“abcde“;strcat(st1,st2);(分数:2.00)A.B.C.D.38.设函数中有整型变量 a,为保证其在未赋初值的情况下初值为 0,应选择的存储类别是( )。 A) static B) register C) auto D) auto或 register(分数:2.00)A.B.C.D.39.以下程序有语法错误,有关错误原因的正确说法是( )。main()int G=5,k;void prt_char();k=prt_char(G);A) 语句 void prt_char();有错,它是函数调用语句,
14、不能用 void说明B) 变量名不能使用大写字母C) 函数说明和函数调用语句之间有矛盾D) 函数名不能使用下划线(分数:1.00)A.B.C.D.40.下面程序段中 c的二进制值是_。char a=3,b=6,c;c=ab1;A) 00001011 B) 00001111 C) 00011110 D) 00011100(分数:2.00)A.B.C.D.二、填空题(总题数:15,分数:32.00)41.诊断和改正程序中错误的工作通常称为 1。(分数:2.00)填空项 1:_42.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、 1 和选择排序。(分数:2.00)填空项 1:_43
15、.常用的黑箱测试有等价分类法、_、因果图法和错误推测法 4种。(分数:2.00)填空项 1:_44.软件工程研究的内容主要包括: 1 技术和软件工程管理。(分数:2.00)填空项 1:_45.已有定义:char c= ;int a=1,b;(此处 c的初值为空格字符),执行 b=!c a;后 b的值为 1。(分数:2.00)填空项 1:_46.若整型变量 a和 b中的值分别为 7和 9,要求按以下格式输出 a和 b的值:a=7b=9请完成输出语句:printf(“U /U“,a,b);。(分数:2.00)填空项 1:_47.设 y为血型变量,请写出描述“y 是偶数”的表达式 1。(分数:2.0
16、0)填空项 1:_48.以下程序运行后的输出结果是U /U。main()int a, b, c;a=25;b=025;c=0x25;printf(“% d % d % d/n“, a, b, c);(分数:2.00)填空项 1:_49.执行下列语句段后,x 的值是_。int *p,x;x=100;p=while(c=getchar() !=,) putchar(+C) ;程序运行时,如果从键盘输入:A,B,CR,则输出结果为_。(分数:2.00)填空项 1:_51.下列程序运行后的输出的结果是_。#includestdio.hmain()char s20;scanf(“%s“,s);print
17、f(“%s“,s);运行程序,输入 HOW ARE YOU。(分数:2.00)填空项 1:_52.以下程序的运行结果是:U /U。#include stdio.h#include string.hchar *ss(char *s)return s+strlen(s)/2; main()char *p,*str=“abcdefgh“;p=ss(str);printf(“%s/n“,p);(分数:2.00)填空项 1:_53.下列程序的输出结果是_。#includestdio.hfun()static int a0;a+3;printf(“%d“,a) ;main()int cc;for(CC1;
18、cc5;CC+)fun();printf(“/n);(分数:2.00)填空项 1:_54.下面 rotate函数的功能是:将 n行 n列的矩阵 A转置未 AT,例如:*请填空#define N 4void rotate(int a)int i,j,t;for(i=0;iN;i+)for(j=0;U /U;j+)t=aij;U /U; aji=t; (分数:4.00)填空项 1:_55.以下程序运行后的输出结果是_。void swap(int x,int y)int t;t=x;x=y;y=t; printf(“%d %d “,x,y);main()int a=3,b=4;swap(a,b);
19、printf(“%d %d/n“,a,b);(分数:2.00)填空项 1:_二级 C语言笔试-482 答案解析(总分:92.00,做题时间:90 分钟)一、选择题(总题数:40,分数:60.00)1.软件是指( )。A程序 B程序和文档C算法加数据结构 D程序、数据和相关文档的集合(分数:1.00)A.B.C.D. 解析:解析 计算机系统由硬件和软件两部分组成。其中,计算机软件包括程序、数据与相关文档的完整集合。2.算法的时间复杂度是指( )。A) 执行算法程序所需要的时间B) 算法程序的长度C) 算法执行过程中所需要的基本运算次数D) 算法程序中的指令条数(分数:2.00)A.B.C. D.
20、解析:解析 所谓的算法的时间复杂度,是指执行算法所需要的工作量,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。3.数据的存储结构是指( )。A) 数据所占的存储空间B) 数据的逻辑结构在计算机中的存放形式C) 数据在计算机中的顺序存储方式D) 存储在计算机外存中的数据(分数:2.00)A.B. C.D.解析:解析 数据的存储结构,又称为数据的物理结构,是数据的逻辑结构在计算机中的存放形式。数据的存储结构有顺序结构、链式结构、散列结构和索引结构等。4.在面向对象方法中, ( )描述的是具有相似属性与操作的一组对象。A) 属性 B) 事件 C) 方法 D) 类(分数:2.00)A
21、.B.C.D. 解析:解析 类(class)描述的是具有相似属性与操作的一组对象,而一个具体对象则是其对应类的一个实例。5.下列选项中不属于软件生命周期开发阶段任务的是( )。A) 软件测试 B) 概要设计 C) 软件维护 D) 详细设计(分数:1.00)A.B.C. D.解析:解析 软件的生命周期可分为软件定义、软件开发及软件运行维护 3个阶段。其中软件定义阶段的主要工作有可行性研究与计划制定和需求分析等;软件开发阶段的主要工作有概要设计、详细设计和测试等:软件运行维护阶段的主要工作是软件的运行及后期的维护等。6.数据独立性是数据库技术的重要特点之一。所谓数据独立性是指( )。A) 数据与程
22、序独立存放B) 不同的数据被存放在不同的文件中C) 不同的数据只能被对应的应用程序所使用D) 以上三种说法都不对(分数:2.00)A.B.C.D. 解析:解析 数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。所以选项 A),选项 B)和选项 C)都不正确。7.关系表中的每一横行称为一个A) 元组 B) 字段 C) 属性 D) 码(分数:2.00)A. B.C.D.解析:解析 关系表中,每一行称为一个元组,对应表中的一条记录;每一列称为一个属性,对应表中的一个字段;在二维表中凡能唯一标识元组的最小属性集称为该表的键或码。8.有下列二叉树,对此二叉树前序遍历的
23、结果为( )。(分数:2.00)A.B.C.D. 解析:解析 对二叉树的前序遍历是指先访问根结点,然后访问左子树,最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子树。记住 3种遍历的顺序:前序,访问根按前序遍历左子树按前序遍历右子树;中序,按中序遍历左子树访问根按中序遍历右子树;后序,按后序遍历左子树按后序遍历右子树访问根。9.有三个关系 R、S 和如下;(分数:2.00)A.B.C.D. 解析:解析 关系 R与 S经交运算后所得到的关系是由那些既在 R内又在 S内的有序组组成的,记为RS。10.下列叙述中正确的是( )。A为了建立一个关系,首先要构造数据的逻辑关系
24、B表示关系的二维表中各元组的每一个分量还可以分成若干数据项C一个关系的属性名表称为关系模式D一个关系可以包括多个二维表(分数:1.00)A. B.C.D.解析:解析 元组分量的原子性要求二维表中元组的分量是不可分割的基本数据项。关系的框架称为关系模式。一个称为关系的二维表必须同时满足关系的 7个性质。11.下面各选项中,均是 C语言合法标识符的选项组是A) 33 we auto B) _23 me _3ewC) _43 3e_ else D) ER-DF 32(分数:1.00)A.B. C.D.解析:解析 合法的标识符是由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,用户定义的标识
25、符不能与关键字相同。选项 A),数字不能为第一个字母,auto 为关键字;选项 C)中,也是数字不能为第一个字母,else 为关键字;选项 D)中负号不合法。12.若有下列定义(设 int类型变量占 2字节):int i=8,j=9;则下列语句:printf(“i=%d,j=%d/n“,i,j);输出的结果是( )。Ai=8,j=9 Bi=%d,j=%dCi=%8,j=%9 D8,9(分数:1.00)A.B. C.D.解析:解析 本题考查函数的输出格式。在 printf函数的格式说明符中有两个“%”说明;将第 1个%后面的字符原样输出,并不输出其对应的变量值。13.在 C语言中,运算对象必须是
26、整型数的运算符是A) % B) / C) %和/ D) *(分数:1.00)A. B.C.D.解析:解析 在 C语言中,“%”运算符两侧的运算数必须是整型。14.现有定义 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.解析:解析 双目运算中两边运算量类型转换规律:运算数 1 运算数 2 转换结果类型短整型 长整型 短整型-长整型整型 长整型 整型-长整型字符型 整型 字符型-整型有符号整型 无符号整型 有符号整型-无符号整型整型 浮点型 整型-
27、浮点型在 a/b的时候,a、b 的类型不一致,根据类型转换规则,把整型转换成 double类型,之后的加、减类似。转化规则为 char,shortintunsignedlongdoublefloat。15.在 ASCII代码表中每一个大写字母比它相应的小写字母的 ASCII码( )。A) 小 32 B) 小 64C) 大 32 D) 大 1(分数:2.00)A. B.C.D.解析:解析 本题考查大小写字母的 ASCII码值的关系。大写字母比它相应的小写字母的 ASCII码小32。16.下列程序输出的结果是( )。main()double d=3.2;int x,y;x=1.2;y=(x+3.8
28、)/5.0;printf(“%d/n“,d*y);A3 B3.2 C0 D3.07(分数:1.00)A.B.C. D.解析:解析 根据赋值运算的类型转换规则,先将 double型的常量 1.2转换为 int型,因为 x的类型是int,则 x的值为 1;执行语句 y=(x+3.8)/5.0时即先将整型变量 x的值 1转换为 double型 1.0,然后3.8相加得 4.8,进行除法运算 4.8/5.0结果为 0,即变量 y的值为 0,d*y 的值也为 0,故选 C选项。17.两次运行下面的程序,如果从键盘上分别输入 3和 2,则输出结果是( )。 #includestdio.h main() i
29、nt x; scanf(“%d“, else printf(“%d/n“,y);B)if(a=0)printf(“%d/n“,y); else printf(“%d/n“,x);C)if(a!=0)printf(“%d/n“,x); else printf(“%d/n“,y);D)if(a=0)printf(“%d/n“,x); else printf(“%d/n“,y);(分数:2.00)A.B.C.D. 解析:解析 选项 A)、B)、C)这三条语句都是在变量不等于 0的情况下,输出 x;等于 0的情况下输出y,而选项 D)则正好相反。20.下列能正确定义一维数组的选项是( )。A) int
30、 a5=0,1,2,3,4,5); B) char a=0,1,2,3,4,5;C) char a=A,B,C; D) int a5=“0123“;(分数:1.00)A.B. C.D.解析:解析 在定义数组时,如果赋给的初始值个数大于数值的长度,这样就会越界,因此选项 A)错误;选项 C)中定义的是一个字符变量 C:选项 D)中整型数组 a中只能存储整型数据,而不能存储字符串常量“0123”。21.若 x和 y代表整型数,以下表达式中不能正确表示数学关系|xy|10 的是( )。A) abs(x-y)10 B) x-y -10 B) while(ch=getchar()=/n)putchar(
31、ch);C) while(ch=getchar()!=/N)putchar(ch); D) while(ch=getchar()!=/n)putchar(ch);(分数:2.00)A.B.C.D. 解析:解析 本题考查两个知识点:C 语言用/n这个字符常量表示换行:getchar 函数的作用是从终端输入一个字符,当遇到换行时结束输入。23.已有定义“char c;”,程序前面已在命令行中包含 ctype.h文件,不能用于判断 c中的字符是否为大写字母的表达式是( )。Aisupper(c) BA-c=ZCA=cchar *argv ;int i;printf(“%d/n“,argc);A)3
32、B)4 C)2 D)以上答案都不正确(分数:2.00)A.B. C.D.解析:解析 argc 中存入的是命令行中字符串的个数。argv 是一个指向字符型的指针数组的指针。27.若有定义 int(*pt)3;,则下列说法正确的是A) 定义了基类型为 int的三个指针变量B) 定义了基类型为 int的具有三个元素的指针数组 ptC) 定义了一个名为*pt、具有三个元素的整型数组D) 定义了一个名为 pt的指针变量,它可以指向每行有三个整数元素的二维数组A.B.C.D. 解析:解析 定义了一个指向一维数组的指针,该一维数组具有三个 int型元素,按照 C语言中二维数组的定义知,二维数组先按照行排列,
33、再按照列排列,故选 D。28.有以下程序main()int a33,*p,i;p=a00;for(i=0;i9;i+)pi=i;for(i=0;i3;i+)printf(“%d“,a1i);程序运行后的输出结果是_。(A) 0 1 2(B) 1 2 3(C) 2 3 4(D) 3 4 5(分数:2.00)A.B.C.D. 解析:29.以下函数返回 a所指数组中最大值所在的下标值:fun(int *a,int n)int i,j=0,p;p=j;for(i=j;in;i+)if(aiap)_;return(p);在下划线处应填入的内容是( )。A) i=p B) ap=ai C) p=j D)
34、p=i(分数:1.00)A.B.C.D. 解析:解析 该题目要求的是最大数的位置(下标)。程序通过对 a所指数组中的元素进行逐个比较,记录最大数的下标 i,并把该下标记录在变量 p中,所以,如果 aiap关系成立,应该把 i的值赋给p,这样才满足题目的要求。30.字符(char)型数据在微机内存中的存储形式是_。A) 反码 B) 补码 C) EBCDIC 码 D) ASC码(分数:2.00)A.B.C.D. 解析:评析 将个字符常量放到个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的 ASCII码值放到存储单元中。31.下列说法中不正确的是( )。A) 指针是一个变量B)
35、 指针中存放的是数值C) 指针可以进行加、减等算术运算D) 指针变量占用存储空间(分数:1.00)A.B. C.D.解析:解析指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。32.以下叙述中错误的是A) 改变函数形参的值,不会改变对应实参的值B) 函数可以返回地址值C) 可以给指针变量赋一个整数作为地址值D) 当在程序的开头包含头文件 stdio.h时,可以给指针变量赋 NULL(分数:2.00)A.B.C. D.解析:解析 函数形参和实参分别占用不同的内存单元,改变形参的值不会影响对应实参的值,选项 A)正确。指针类型的函数可以返回地址
36、值,选项 B)正确。在文件 stdio.h中,NULL 被定义为 void型的指针,选项 D)也正确。指针变量的值只能是存储单元地址,而不能是一个整数,选项 C)错误。33.以下程序运行后的输出结果是#define F(X,Y)(X) * (Y)main( )int a=3,b=4;printf(“%d/n“,F(a+,b+);A) 12 B) 15 C) 16 D) 20(分数:2.00)A. B.C.D.解析:解析 本题考查带参数的宏定义,参数只是简单的字符替换,而不是参数的传递。本题中用 a+替换 X,用 b+替换 Y,再计算(a+)*(b+)的值,即 3*4的值,其结果为 12。34.
37、下列字符数组初始化语句中,不正确的是( )。 A) char c=goodmorning; B) char c20=“goodmorning“; C) char c=a,b,c,d;D) char c=“goodmorning“;(分数:2.00)A. B.C.D.解析:解析 本题考查两个概念。用单引号括起来的一个字符常量只能存放一个字符;C 语言中没有字符串变量,只能用字符数组来存储字符串。选项 A)中一个单引号内存放了若干个字符,是错误的;选项 B)和选项 D)中将一个字符串赋值给一个字符数组是允许的。35.以下不能将 s所指字符串正确复制到 t所指存储空间的是( )。 A) while(
38、*t= *s)t+;s+;) B) for(i=0;ti=si;i+); C) do*t+=*s+;while(*s); D) for(i=0,j=0;ti+=sj+;);(分数:2.00)A.B.C. D.解析:解析 在选项 C)中,不能把 s所指字符串的结束标志符赋给字符串 t。36.有下列程序:#includestdio.hstructstint(x,y)date2=1,10,2,20;main()structst*p=date;printf(“%d,“,p-y);printf(“%d/n“,(+p)-x);程序的运行结果是( )。A10,1 B20,1 C10,2 D20,2(分数:1
39、.00)A.B.C. D.解析:解析 data2是两个结构体组成的数组,p 指向结构体数组的首地址,p-y 访问第一个结构体的第二个元素;(+p)x 访问第二个结构体的第一个元素。所以输出为 10.2。37.以下正确的程序段是A) char str1=“12345“,str2=“abcdef“;B) char str10,*st=“abcde“;strcat(str,st);C) charstr10=“ “。*st=“abcde“;strcat(str,st);D) char*st1=“12345“,*st2=“abcde“;strcat(st1,st2);(分数:2.00)A.B.C. D.
40、解析:解析 本题考查了一维字符数组的定义和初始化。选项 C中 str10初始化为空,可以不必进行类似“ “的空赋值,字符数组若没有进行初始化赋值,默认的字符为空,并且定义完 str数组后,应该用“,”分隔而不是“。”,所以选项 C错误。38.设函数中有整型变量 a,为保证其在未赋初值的情况下初值为 0,应选择的存储类别是( )。 A) static B) register C) auto D) auto或 register(分数:2.00)A. B.C.D.解析:解析 存储类说明符有 auto、register、static、extern 和 typedef。 auto 和 register将
41、声明的对象说明为自动存储类对象,这些对象仅可用在函数中。 这种声明也具有定义的作用,并将预留存储空间。register 说明的声明等价于 auto说明的声明,所不同的是,register 暗示了声明的对象将被频繁地访问,将尽可能存储在寄存器中。如果一个对象被声明为register,则将不能对它应用一元运算符c=ab1;A) 00001011 B) 00001111 C) 00011110 D) 00011100(分数:2.00)A.B. C.D.解析:评析 C 语言提供六种位运算符,按优先级由高到低的顺序分别为:取反()、左移()和右移()、按位与 (int a=1,b;(此处 c的初值为空格
42、字符),执行 b=!c a;后 b的值为 1。(分数:2.00)填空项 1:_ (正确答案:0)解析:解析 空格字符的 ASC码值为 32,所以!co,那么 0与任何值相与的结果都为 0,可得 b的值为 0。46.若整型变量 a和 b中的值分别为 7和 9,要求按以下格式输出 a和 b的值:a=7b=9请完成输出语句:printf(“U /U“,a,b);。(分数:2.00)填空项 1:_ (正确答案:a=%d/nb=%d/n 或 a=%d/nb=%d评听:在 printf的格式控制符中,一般由“”和格式字符组成,如%d 等,它的作用是将输出的数据转换为指定的格式输出,格式说明总是由“”字符开
43、始。%d 代表以整型数据的实际长度输出。格式控制符中的其他字符按原样输出。另外如果要输出回车符,则必需用/n 这个转义字符,即表示输出时换行。)解析:47.设 y为血型变量,请写出描述“y 是偶数”的表达式 1。(分数:2.00)填空项 1:_ (正确答案:(y%2)=0)解析:解析 因符合偶数的条件是对 2取余为 0,所以要描述 y是偶数的表达式是(y%2)=0。48.以下程序运行后的输出结果是U /U。main()int a, b, c;a=25;b=025;c=0x25;printf(“% d % d % d/n“, a, b, c);(分数:2.00)填空项 1:_ (正确答案:25
44、21 37)解析:解析 本题中 25是十进制整数,025 是八进制整数,其对应的十进制值为 28+5=21,0x25 是十六进制整数,其对应的十进制值为 216+5=37。49.执行下列语句段后,x 的值是_。int *p,x;x=100;p=while(c=getchar() !=,) putchar(+C) ;程序运行时,如果从键盘输入:A,B,CR,则输出结果为_。(分数:2.00)填空项 1:_ (正确答案:B)解析:解析 因为 c是字符类型变量,它只能接收一个字符,所以 c=A,字符型变量在参与算术运算的时候是用其相应的 ASCII码参与运算的,这样+c 得到字母 B的 ASCII码
45、,用 putchar函数输出是输出其相应的字符,所以是 B。51.下列程序运行后的输出的结果是_。#includestdio.hmain()char s20;scanf(“%s“,s);printf(“%s“,s);运行程序,输入 HOW ARE YOU。(分数:2.00)填空项 1:_ (正确答案:HOW)解析:解析 在 scanf()函数中,使用空格作为分隔符,如果输入含有空格的字符串,则不能使用scanf()函数,所以本题中输入空格就返回了/0, s 数组也就确定了,后面的输入就不再读入数组 s中。52.以下程序的运行结果是:U /U。#include stdio.h#include s
46、tring.hchar *ss(char *s)return s+strlen(s)/2; main()char *p,*str=“abcdefgh“;p=ss(str);printf(“%s/n“,p);(分数:2.00)填空项 1:_ (正确答案:efgh)解析:解析 函数*ss 的作用是使字符串指针往后移 strlen(s)/2个位置。形参指针 a指向字符串“abcdefeh“,调用函数*ss 后,指针指向 e,所以输出为 efgh。53.下列程序的输出结果是_。#includestdio.hfun()static int a0;a+3;printf(“%d“,a) ;main()int cc;for(CC1;cc5;CC+)fun();printf(“/n);(分数:2.00)填空项 1:_ (正确答案:3 6 9 12)解析:解析 本题考查最基本的 for循环:for(cc1;cc5;cc+)规定循环