1、二级 C语言笔试-408 及答案解析(总分:97.00,做题时间:90 分钟)一、选择题(总题数:40,分数:63.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对长度为 n的有序链表进行查找,最坏情况下需要的比较次数为 nB对长度为 n的有序链表进行对分查找,最坏情况下需要的比较次数为 n/2C对长度为
2、 n的有序链表进行对分查找,最坏情况下需要的比较次数为 log2nD对长度为 n的有序链表进行对分查找,最坏情况下需要的比较次数为 nlog2n(分数:1.00)A.B.C.D.4.按照“先进先出”组织数据的数据结构是( )。A) 队列 B) 栈 C) 双向链表 D) 二叉树(分数:2.00)A.B.C.D.5.按照“先进先出”组织数据的数据结构是( )。A) 队列 B) 栈 C) 双向链表 D) 二叉树(分数:2.00)A.B.C.D.6.简单的交换排序方法是( )。A快速排序 B选择排序C堆排序 D冒泡排序(分数:1.00)A.B.C.D.7.栈通常采用的两种存储结构是A) 顺序存储结构和
3、链式存储结构 B) 散列方式和索引方式C) 链表存储结构和数组 D) 线性存储结构和非线性存储结构(分数:2.00)A.B.C.D.8.下列叙述中正确的是A) 线性链表是线性表的链式存储结构 B) 栈与队列是非线性结构C) 双向链表是非线性结构 D) 只有根结点的二叉树是线性结构(分数:2.00)A.B.C.D.9.在设计程序时,应采纳的原则之一是_。A) 程序结构应有助于读者理解 B) 不限制 goto语句的使用C) 减少或取消注解行 D) 程序越短越好(分数:2.00)A.B.C.D.10.线性表的顺序存储结构和线性表的链式存储结构分别是A) 顺序存取的存储结构、顺序存取的存储结构 B)
4、随机存取的存储结构、顺序存取的存储结构C) 随机存取的存储结构、随机存取的存储结构 D) 任意存取的存储结构、任意存取的存储结构(分数:1.00)A.B.C.D.11.在深度为 7的满二叉树中,叶子结点的个数为( )。A) 32 B) 31 C) 64 D) 63(分数:1.00)A.B.C.D.12.以下有 4组用户标识符,其中合法的一组是( )。AFOr-subCaseB4dDOSizeCf2_G3IFabcDWORDvoiddefine(分数:1.00)A.B.C.D.13.数据库系统的核心是( )。A) 数据模型 B)数据库管理系统 C) 数据库 D) 数据库管理员(分数:1.00)A
5、.B.C.D.14.设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份证号),课程 C(课号,课名),选课 SC(学号,课号,成绩),则表 SC的关键字(键或码)为A) 课号,成绩 B) 学号,成绩 C) 学号,课号 D) 学号,姓名,成绩(分数:2.00)A.B.C.D.15.以下程序的输出结果是( )。main()int a=3;printf(“%d/n“,(a+a-=a*a);A-6 B12 C0 D-12(分数:1.00)A.B.C.D.16.若有运算符:、=、%、sizeof,则它们按优先级(由高至低)的正确排列顺序为( )。A) %、sizeof、= B) sizeo
6、f、%、=、C) sizeof、%、= D) sizeof、%、=(分数:1.00)A.B.C.D.17.下列选项中不合法的十六进制数是( )。A) Oxff B) OXll C) Oxlg D) OXabc(分数:2.00)A.B.C.D.18.下列各数据类型不属于构造类型的是( )。A) 枚举型 B) 共用型 C) 结构型 D) 数组型(分数:1.00)A.B.C.D.19.C源程序中不能表示的数制是_。A) 二进制 B) 八进制 C) 十进制 D) 十六进制(分数:1.00)A.B.C.D.20.若有下列定义(设 int类型变量占 2个字节):int i=8;则下列语句:printf(“
7、i=%08d“,i);输出的结果是( )。A) i=8, B) i=00000008, C) i=08, D) 8(分数:1.00)A.B.C.D.21.有以下程序:main()int i=1,j=2,k=3;if(i+=l(+j=3|k+=3) printf(“%d%d%d/n“,i,j,k):程序运行后的输出结果是_。A) 1 2 3 B) 2 3 4 C) 2 2 3 D) 2 3 3(分数:2.00)A.B.C.D.22.有下列程序:#includestdio.hmain()int a=6,b=7,m=1;switch(a%2) case 0:m+;break;case 1:m+;sw
8、itch(b%2) defaut:m+;case0:m+;break;printf(“%d/n“,m);程序运行后的输出结果是( )。A) 1 B) 2 C) 3 D) 4(分数:2.00)A.B.C.D.23.执行下面程序中的输出语句后,a 的值是( )。#include stdio.hmain()int a;printf(“%d/n“,(a=3*5,a*4);A) 15 B) 20 C) 10 D) 60(分数:1.00)A.B.C.D.24.有以下程序#include stdio.hmain()int a=1,b=2,c=3,d=0;if(a1else printf(%d,%d,%d/n
9、“,a,b,c);else printf(“%d,%d,%o/n“,a,b,c);程序运行后的输出结果是_。A) 1,2,3 B) 1,3,2 C) 1,3,3 D) 3,2,1(分数:2.00)A.B.C.D.25.下列程序的输出结果是( )。#includestdio.hmain()int a0,i;for(i1;i5;i+)Switch(i)case 0:case 3:a+1;case 1:case 2:a+2;default:a+3;printf(“%d“,a) :A) 19 B) 18 C) 6 D) 8(分数:2.00)A.B.C.D.26.已知大写字母 A的 ASCII码是 65
10、,小写字母的 a的 ASCII码是 97,以下不能将变量 C中的大写字母转换为对应小写字母的语句是_。(A) c=(c-A)%26+a(B) c=c+32(C) c=c-A+a(D) c=(A+c)%26-a(分数:2.00)A.B.C.D.27.若执行下述程序时,若从键盘输入 6和 8,结果为( )。 main() int a,b,s; scanf(“%d%dt“, B) if(xyC) if(x0)x-elsey+;D) if(y0);else x+;(分数:2.00)A.B.C.D.29.若运行时给变量 x输入 12,则以下程序的运行结果是main( )int x,y;scanf(“%d
11、“, A) 0 B) 22 C) 12 D) 10(分数:2.00)A.B.C.D.30.在 C语言中,函数返回值的类型最终取决于( )。A) 函数定义时在函数首部所说明的函数类型B) return语句中表达式值的类型C) 调用函数时主调函数所传递的实参类型D) 函数定义时形参的类型(分数:2.00)A.B.C.D.31.下列程序的输出结果是( )。#includestdio.hmain()char a= a,b,c,d,e,f,/0;int i,j;i=sizeof(a);j=strlen(a);print f(“%d,%d“,i,j );A) 7,7 B) 7,6 C) 6,6 D) 6,
12、7(分数:2.00)A.B.C.D.32.现有如下程序段#include “stdio.h“main( )int a56=23,3,65,21,6,78,28,5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1;int i=0,j=5;printf(“%d/n“,*(则程序的输出结果为A)21 B)78 C)23 D)28(分数:2.00)A.B.C.D.33.以下程序运行后的输出结果是#includestdio.hint fun()static int x=1;x*=2; return x;main()int i, s=1;for(i=1;
13、 i=2; i+) s=fun();printf(“%d/n“, s);A) 0 B) 1 C) 4 D) 8(分数:2.00)A.B.C.D.34.C语言允许函数类型缺省定义,此时函数值隐含的类型是( )。A) float B) int C) long D) double(分数:1.00)A.B.C.D.35.若有定义“int b8,*p=b;”,则 p+6表示( )。A数组元素 b6的值 B数组元素 b6的地址C数组元素 b7的地址 D数组元素 b0的值加上 6(分数:1.00)A.B.C.D.36.有以下程序:#includestdio.h#includestring.htypedef
14、structchar name9;char sex;float score2;)STU;void f(STU a)STU b=“Zhao“,m,85.0,90.0);int i;strcpy(a.name,b.name);a.sex=b.sex;for(i=0;i2;i+)a.scorei=b.scorei;main()STU c=“Qian“,f,95.0,92.0);f(C) ;printf(“%s,%c,%2.0f,%2.0f/n“,c.name,c.sex,c.score0,C.score1);程序的运行结果是_。A) Qian,f,95,92 B) Qian,m,85,90C) Zh
15、ao,f,95,92 D) Zhao,m,85,90(分数:2.00)A.B.C.D.37.设有定义“char*c;”,以下选项中能够使字符型指针 c正确指向一个字符串的是( )。Achar str=“string“;c=str; Bscanf(%s,c);Cc=getchar(); D*c=“string“;(分数:1.00)A.B.C.D.38.表达式 0x130x17的值是( )。A) 0x04 B) 0x13 C) 0xE8 D) 0x17(分数:1.00)A.B.C.D.39.设有以下说明,则不正确的叙述是( )。 union un int a; chat b: float c; a
16、rr; A) arr所占的内存长度等于成员 c的长度 B) arr的地址和它的各成员的地址都是同一地址 C) arr可以作为函数参数 D) 不能在定义 art时对它初始化(分数:2.00)A.B.C.D.40.设有定义语句 int(*f(int);,则下列叙述正确的是( )。A) f是基类型为 int的指针变量B) f是指向函数的指针变量,该函数具有一个 int类型的形态C) f是指向 int类型一维数组的指针变量D) f是函数名,该函数的返回值是其类型为 int类型的地址(分数:2.00)A.B.C.D.二、填空题(总题数:15,分数:34.00)41.软件工程研究的内容主要包括:软件开发技
17、术和 1。(分数:2.00)填空项 1:_42.深度为 5的满二叉树中,叶子结点的个数为 1。(分数:2.00)填空项 1:_43.在面向对象的程序设计方法中,类的实例称为 1。(分数:2.00)填空项 1:_44.在面向对象方法中,类之间共享属性和方法的机制称为 1。(分数:2.00)填空项 1:_45.最简单的交换排序方法是 1。(分数:2.00)填空项 1:_46.在 E-R图中图形包括矩形框、菱形框、椭网框。其中表示实体联系的是 1 框。(分数:4.00)填空项 1:_47.设 y是 int型,请写出 y为奇数的关系表达式 1。(分数:2.00)填空项 1:_48.设有以下定义和语句,
18、则*(*(p+2) +1) 的值为_。int a32=10,20,30,40,50,60,(*p) 2;p=a;(分数:2.00)填空项 1:_49.下列循环的循环次数是_。int k=2;while(k=0)printf(“%d“,k);k-;printf(“/n“);(分数:2.00)填空项 1:_50.以下程序的功能是输入任意整数给 n后,输出 n行由大写字母 A开始构成的三角形字符阵列图形。例如,输入整数 5时(注意:n 不得大于 10),程序运行结果如下:A B C D EF G H IJ K LM NO请填空完成该程序。main()int i,j,n;char ch=A;scanf
19、(“%d“,for(i=1; i=n; i+)m+=i*f;f=_;return m;main()printf(“% d/n“,U /U);(分数:2.00)填空项 1:_52.以下程序是求矩阵 a、b 的和,结果存入矩阵 c中,请填空。 #includestdio.h main() int a44=1,2,6,7,0,4,2,-8,1,4,5,2,2,4,6,8; int b44=-4,0,7,9,2,-7,7,4),6,9,0,1),8,8,6,5); int i,j,c44; for(i=0;i4;i+) for(j=0;j4;j+) cij=_; for(i=0;i4;i+) for(
20、j=0;j4;j+) printf(“%d“,cij); (分数:2.00)填空项 1:_53.以下程序的功能是从名为 filea.dat的文本文件中逐个读入字符并显示在屏幕上。请填空。majn()FILE *fp; char ch;fp=fopen(_);ch=fgetc(fp);whle(!feof(fp) putchar(ch); ch=f8etc(fp); putchar(/n); fclose(fp);(分数:2.00)填空项 1:_54.已知字符A的 ASCII码值为 65,以下语句的输出结果是U /U。char ch=B;printf(“%c%d/n“,ch,ch);(分数:2.
21、00)填空项 1:_55.以下程序中,for 循环体执行的次数是_。#defihe N 2#define M N+1#define K M+1*M/2main()int i;for (i=1 ; iK ; i+ )(分数:2.00)填空项 1:_二级 C语言笔试-408 答案解析(总分:97.00,做题时间:90 分钟)一、选择题(总题数:40,分数:63.00)1.常采用的两种存储结构是( )。A顺序存储结构和链式存储结构 B散列方法和索引方式C链表存储结构和数组 D线性存储结构和非线性存储结构(分数:1.00)A. B.C.D.解析:解析 线性表的存储通常要用两种存储结构:顺序存储结构和链
22、式存储结构。2.软件是指A) 程序 B) 程序和文档C) 算法加数据结构 D) 程序、数据与相关文档的完整集合(分数:2.00)A.B.C.D. 解析:解析 软件是程序、数据与相关文档的集合,相对于计算机硬件而言,软件是逻辑产品而不是物理产品,是计算机的无形部分。3.下列叙述中正确的是( )。A对长度为 n的有序链表进行查找,最坏情况下需要的比较次数为 nB对长度为 n的有序链表进行对分查找,最坏情况下需要的比较次数为 n/2C对长度为 n的有序链表进行对分查找,最坏情况下需要的比较次数为 log2nD对长度为 n的有序链表进行对分查找,最坏情况下需要的比较次数为 nlog2n(分数:1.00
23、)A.B.C. D.解析:解析 二分法查找只适用于顺序存储的有序表,对于长度为 n的有序线性表,最坏情况只需比较log2n次。4.按照“先进先出”组织数据的数据结构是( )。A) 队列 B) 栈 C) 双向链表 D) 二叉树(分数:2.00)A. B.C.D.解析:解析 队列是一种特殊的线性表,只允许在表的一端插入元素,在表的另一端删除元素,插入元素的一端叫“队尾”,删除元素的一端叫“队头”,先插入的元素先被删除,是按“先进先出”的原则组织数据的。5.按照“先进先出”组织数据的数据结构是( )。A) 队列 B) 栈 C) 双向链表 D) 二叉树(分数:2.00)A. B.C.D.解析:解析 队
24、列是一种特殊的线性表,只允许在表的一端插入元素,在表的另一端删除元素,插入元素的一端叫“队尾”,删除元素的一端叫“队头”,先插入的元素先被删除,是按“先进先出”的原则组织数据的。6.简单的交换排序方法是( )。A快速排序 B选择排序C堆排序 D冒泡排序(分数:1.00)A.B.C.D. 解析:解析 所谓的交换排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序通过相邻元素的交换,逐步将线性表变成有序,是一种最简单的交换排序方法。7.栈通常采用的两种存储结构是A) 顺序存储结构和链式存储结构 B) 散列方式和索引方式C) 链表存储结构和数组 D) 线性存储结
25、构和非线性存储结构(分数:2.00)A. B.C.D.解析:解析 和线性表类似,栈也有两种存储方法,一是顺序栈,二是链式栈。栈的顺序存储结构是利用一组地址连续的存储单元一次存储自栈底到栈顶的数据元素,同时附设指针 top指示栈顶元素的位置,由于栈的操作是线性表操作的特例,相对而言,链式栈的操作更易于实现。8.下列叙述中正确的是A) 线性链表是线性表的链式存储结构 B) 栈与队列是非线性结构C) 双向链表是非线性结构 D) 只有根结点的二叉树是线性结构(分数:2.00)A. B.C.D.解析:解析 一个非空的数据结构如果满足下列两个条件:有且只有一个根结点;每一个结点最多有一个前件,也最多有一个
26、后件,则称为线性结构。线性链表是线性表的链式存储结构,故选项 A的说法是正确的。栈与队列是特殊的线性表,它们也是线性结构,故选项 B的说法是错误的;双向链表是线性表的链式存储结构,其对应的逻辑结构也是线性结构,而不是非线性结构,故选项 C的说法是错误的;二叉树是非线性结构,而不是线性结构,故选项 D的说法是错误的。9.在设计程序时,应采纳的原则之一是_。A) 程序结构应有助于读者理解 B) 不限制 goto语句的使用C) 减少或取消注解行 D) 程序越短越好(分数:2.00)A. B.C.D.解析:评析 滥用 goto语句将使程序流程无规律,可读性差:添加的注解行有利于对程序的理解,不应减少或
27、取消;程序的长短要依照实际需要而定,并不是越短越好。10.线性表的顺序存储结构和线性表的链式存储结构分别是A) 顺序存取的存储结构、顺序存取的存储结构 B) 随机存取的存储结构、顺序存取的存储结构C) 随机存取的存储结构、随机存取的存储结构 D) 任意存取的存储结构、任意存取的存储结构(分数:1.00)A.B. C.D.解析:解析 顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式 LOC (ai)LOC(a1)+(i-1)L 计算得到,从而实现了随机存取。对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。11.在
28、深度为 7的满二叉树中,叶子结点的个数为( )。A) 32 B) 31 C) 64 D) 63(分数:1.00)A.B.C. D.解析:解析 满二叉树是指除最后一层外,每层上的所有结点都有两个子结点;即在满二叉树中,每一层上的结点数都达到最大值,则在满二叉树的第 k层上有 2k-1个结点,月深度为 m的满二叉树有 2m-1个结点。深度为 7的满二叉树,其叶子结点数为 27-1=26=64。12.以下有 4组用户标识符,其中合法的一组是( )。AFOr-subCaseB4dDOSizeCf2_G3IFabcDWORDvoiddefine(分数:1.00)A.B.C. D.解析:解析 在 C语言中
29、,标识符由字母、数字和下画线组成,其中开头必须是字母或下画线,排除选项 A和 B。C 语言中还规定标识符不能为 C语言的关键字,而选项 D中的 void为关键字。13.数据库系统的核心是( )。A) 数据模型 B)数据库管理系统 C) 数据库 D) 数据库管理员(分数:1.00)A.B. C.D.解析:解析 数据库管理系统是数据库系统的核心,是负责数据库的建立、使用和维护的软件。数据库管理系统建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过数据库管理系统。另外,数据库管理系统还承担着数据库的安全保护工作,按照数据库管理员所规定的要求,
30、保证数据库的完整性和安全性。14.设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份证号),课程 C(课号,课名),选课 SC(学号,课号,成绩),则表 SC的关键字(键或码)为A) 课号,成绩 B) 学号,成绩 C) 学号,课号 D) 学号,姓名,成绩(分数:2.00)A.B.C. D.解析:解析 “选课 SC”表是“学生 S”表和“课程 C”表的映射表,主键是两个表主键的组合。15.以下程序的输出结果是( )。main()int a=3;printf(“%d/n“,(a+a-=a*a);A-6 B12 C0 D-12(分数:1.00)A.B.C.D. 解析:解析 本题可以写成
31、:表达式 a+a-=a*a中*的优先级最高,其次是-=,+的优先级最低,因此先求a*a,所以原表达式可写成 a+a-=9,再算 a-=9,原表达式可写为 a=a-9=-6,最后算 a+a,因为此时 a=-6,所以 a+a=-6+(-6)=-12,故选择 D选项。16.若有运算符:、=、%、sizeof,则它们按优先级(由高至低)的正确排列顺序为( )。A) %、sizeof、= B) sizeof、%、=、C) sizeof、%、= D) sizeof、%、=(分数:1.00)A.B.C.D. 解析:解析 主要考查运算符的优先级。sizeof 的优先级最高。后面的顺序是:%、,优先级最低的是“
32、=”。17.下列选项中不合法的十六进制数是( )。A) Oxff B) OXll C) Oxlg D) OXabc(分数:2.00)A.B.C. D.解析:解析 十六进制是以“0x”或“0X”开头的字符串,字符串中只能含有 09 这 10个数字和a、b、c、 d、e、f 这 6个字母。18.下列各数据类型不属于构造类型的是( )。A) 枚举型 B) 共用型 C) 结构型 D) 数组型(分数:1.00)A. B.C.D.解析:解析 本题考查高级语言的数据类型。19.C源程序中不能表示的数制是_。A) 二进制 B) 八进制 C) 十进制 D) 十六进制(分数:1.00)A. B.C.D.解析:评析
33、 C 源程序中的整形常量可用三种形式表示:十进制数;八进制数:以 0开头的数是八进制数;十六进制数:以 Ox开头的数是十六进制数。20.若有下列定义(设 int类型变量占 2个字节):int i=8;则下列语句:printf(“i=%08d“,i);输出的结果是( )。A) i=8, B) i=00000008, C) i=08, D) 8(分数:1.00)A.B. C.D.解析:解析 本题考查 printf函数的格式。“%08”格式符中的“0”表示在指定数据输出宽度的同时,在数据前面的多余空格处加“0”“8”表示指定数据的输出宽度为 8位。21.有以下程序:main()int i=1,j=2
34、,k=3;if(i+=l(+j=3|k+=3) printf(“%d%d%d/n“,i,j,k):程序运行后的输出结果是_。A) 1 2 3 B) 2 3 4 C) 2 2 3 D) 2 3 3(分数:2.00)A.B.C.D. 解析:解析 本题的考点是关于 C语言的逻辑表达式的计算规则。对于逻辑表达式“i+=1(+j=3|k+=3)”,首先判断“i+=1”,由于 i初值为 1,“i+=1”为真,同时 i加1值为 2。由于第一项为真,对于“”运算符,结果取决于后一项“(+j=3|k+=3)”。而逻辑表达式“(+j=3|k+=3)”计算时,首先判断“+j=3”,由于 j初值为 2,+j 后 j值
35、为3,“+j=3”为真,对于“|”运算符不需要判断后一项表达式的结果就可以断定此逻辑表达式结果为真,因此“k+=3”并没有进行判断,k+也未执行,k 仍是初值 3,输出结果应该是 2 3 3。正确选项是D。22.有下列程序:#includestdio.hmain()int a=6,b=7,m=1;switch(a%2) case 0:m+;break;case 1:m+;switch(b%2) defaut:m+;case0:m+;break;printf(“%d/n“,m);程序运行后的输出结果是( )。A) 1 B) 2 C) 3 D) 4(分数:2.00)A.B. C.D.解析:解析 本
36、题考查 switch语句。第一个 switch语句,因为 a=6,a%2=0,所以执行 case0,将 m加1,遇到 break语句跳出 switch语句,结束循环。23.执行下面程序中的输出语句后,a 的值是( )。#include stdio.hmain()int a;printf(“%d/n“,(a=3*5,a*4);A) 15 B) 20 C) 10 D) 60(分数:1.00)A. B.C.D.解析:解析 本题考查对逗号运算符的理解。逗号运算符的求解过程是从左至右,依次求解各个表达式的值,所以在该题中,先使 a的值等于 15,再计算 a*4,此时整个表达式的值为 60,但 a的值并未
37、改变,仍为 15。24.有以下程序#include stdio.hmain()int a=1,b=2,c=3,d=0;if(a1else printf(%d,%d,%d/n“,a,b,c);else printf(“%d,%d,%o/n“,a,b,c);程序运行后的输出结果是_。A) 1,2,3 B) 1,3,2 C) 1,3,3 D) 3,2,1(分数:2.00)A.B.C. D.解析:评析 本题主要考查的是自加,自减运算符以及逻辑运算符的应用,需要注意“for(i1;i5;i+)Switch(i)case 0:case 3:a+1;case 1:case 2:a+2;default:a+3
38、;printf(“%d“,a) :A) 19 B) 18 C) 6 D) 8(分数:2.00)A. B.C.D.解析:解析 本题考查 switch语句。当 i1 时,执行 casel,因为没有遇到 break语句,所以依次往下运行,aa+22,aa+35;当 i2 时,执行 case2,因为没有遇到 break语句,所以依次往下运行,aa+27,aa+310;当 i3 时,执行 case 3,aa+111,因为没有遇到 break语句,所以依次往下运行,aa+213;aa+316:当 i4 时,执行 default,aa+319,结束循环。26.已知大写字母 A的 ASCII码是 65,小写字
39、母的 a的 ASCII码是 97,以下不能将变量 C中的大写字母转换为对应小写字母的语句是_。(A) c=(c-A)%26+a(B) c=c+32(C) c=c-A+a(D) c=(A+c)%26-a(分数:2.00)A.B.C.D. 解析:27.若执行下述程序时,若从键盘输入 6和 8,结果为( )。 main() int a,b,s; scanf(“%d%dt“, B) if(xyC) if(x0)x-elsey+;D) if(y0);else x+;(分数:2.00)A.B.C. D.解析:解析 选项 A)和选项 B)在条件判断语句的后面是空语句,什么都不做;在选项 D)if后面是一个复
40、合空语句;而在选项 C)中,在 X-后面少了一个分号,所以程序段在编译时,会出现语法错误。29.若运行时给变量 x输入 12,则以下程序的运行结果是main( )int x,y;scanf(“%d“, A) 0 B) 22 C) 12 D) 10(分数:2.00)A. B.C.D.解析:解析 条件运算符“?”是三目运算符,其形式为:(表达式 1)?(表达式 2):(表达式 3)。当“表达式 1”的值为真时,则“表达式 2”的值为整个表达式的值;如果“表达式 1”的值为假,则“表达式3”的值为整个表达式的值。题中,表达式 x12 的结果为假,所以将表达式 x-12的值 0作为 y的值。30.在
41、C语言中,函数返回值的类型最终取决于( )。A) 函数定义时在函数首部所说明的函数类型B) return语句中表达式值的类型C) 调用函数时主调函数所传递的实参类型D) 函数定义时形参的类型(分数:2.00)A. B.C.D.解析:解析 在 C语言中,应当在定义函数时指定函数值的类型。凡不加类型说明的函数,默认按整型处理。在定义函数时对函数值说明的类型一般应该和 return语句中的表达式类型一致。如果函数值的类型和 return语句中的表达式类型不一致,则以函数值的类型为准,由系统自动进行转换。即函数类型决定返回值的类型。31.下列程序的输出结果是( )。#includestdio.hmai
42、n()char a= a,b,c,d,e,f,/0;int i,j;i=sizeof(a);j=strlen(a);print f(“%d,%d“,i,j );A) 7,7 B) 7,6 C) 6,6 D) 6,7(分数:2.00)A.B. C.D.解析:解析 sizeof()函数的功能是返回字符串所占的字节数,strlen()函数的功能是返回字符串的长度,其中/0是一个转义字符,它占存储空间,但不计入串的长度。32.现有如下程序段#include “stdio.h“main( )int a56=23,3,65,21,6,78,28,5,67,25,435,76,8,22,45,7,8,34,
43、6,78,32,4,5,67,4,21,1;int i=0,j=5;printf(“%d/n“,*(则程序的输出结果为A)21 B)78 C)23 D)28(分数:2.00)A. B.C.D.解析:解析 通过地址来引用二维数组,若有以下定义:int a34,i,j;且当 0i3,0j4,则可以有以下几种方式来引用数组中的第 i行,第 j列的元素:aij,*(ai+j),*(*(a+i)j,*(x*=2; return x;main()int i, s=1;for(i=1; i=2; i+) s=fun();printf(“%d/n“, s);A) 0 B) 1 C) 4 D) 8(分数:2.0
44、0)A.B.C. D.解析:解析 本题考查静态存储变量。在函数 fun中,静态变量 x始终占据存储空间,并且只赋一次初值。第一次调用函数 fun时,x 被赋初值为 1,返回 x值为 2;第二次调用函数 fun时,x 初值仍为 2,返回 x的值为 4。所以,程序输出结果为 4。34.C语言允许函数类型缺省定义,此时函数值隐含的类型是( )。A) float B) int C) long D) double(分数:1.00)A.B. C.D.解析:解析 在 C语言中,对于自定义函数要遵循“先定义,后使用”的规则,如定义时不指定函数类型,C 编译系统都默认函数的返回值是 int型。35.若有定义“i
45、nt b8,*p=b;”,则 p+6表示( )。A数组元素 b6的值 B数组元素 b6的地址C数组元素 b7的地址 D数组元素 b0的值加上 6(分数:1.00)A.B. C.D.解析:解析 指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。所以题中将 p+6指的是将指针向后移动了 6个存储单元,即指向 b6,存放的是 b6的地址。36.有以下程序:#includestdio.h#includestring.htypedef structchar name9;char sex;float score2;)STU;void f(STU a)S
46、TU b=“Zhao“,m,85.0,90.0);int i;strcpy(a.name,b.name);a.sex=b.sex;for(i=0;i2;i+)a.scorei=b.scorei;main()STU c=“Qian“,f,95.0,92.0);f(C) ;printf(“%s,%c,%2.0f,%2.0f/n“,c.name,c.sex,c.score0,C.score1);程序的运行结果是_。A) Qian,f,95,92 B) Qian,m,85,90C) Zhao,f,95,92 D) Zhao,m,85,90(分数:2.00)A. B.C.D.解析:解析 本题考查的是结构体变量的单向值传递。题目中,把结构体变量中的数据作为一个整体传送给相应的形参,传递的是实参结构体变量中的值。函数体内对形参结构体变量中任何成员的操作,都不会影响对应实参中成员的值。37.设有定义“char*c;”,以下选项中能够使字符型指针 c正确指向一个字符串的是( )。Achar str=“string“;c=str; Bscanf(%s,c);Cc=getchar(); D*c=“string“;(分数:1.00)A. B.C.D.解析:解析 选项 B是从键盘上输入字符串,选项 C是接收字符,选项 D不正确。38.表达式 0x130x17的值是( )。A