1、二级 C语言笔试-458 及答案解析(总分:103.00,做题时间:90 分钟)一、选择题(总题数:40,分数:67.00)1.下列叙述中正确的是( )。A) 一个算法的空间复杂度大,则其时间复杂度必定大B) 一个算法的空间复杂度大,则其时间复杂度必定小C) 一个算法的时间复杂度大,则其空间复杂度必定小D) 上述三种说法都不对(分数:2.00)A.B.C.D.2.程序流程图中带有箭头的线段表示的是A) 图元关系 B) 数据流 C) 控制流 D) 调用关系(分数:2.00)A.B.C.D.3.已知、棵二叉树的后序遍历序列是 dabec,中序遍历序列是 debac,则它的前序遍历序列是( )。A)
2、 acbed B) decab C) deabc D) cedba(分数: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) 数据控制语言(分数:2.00)A.B.C.D.7.数据库系统的核心是( )。A) 数据模型 B) 数据库管理系统C
3、) 数据库 D) 数据库管理员(分数:2.00)A.B.C.D.8.关系代数运算是以 _为基础的运算。A) 关系运算 B) 谓词运算 C) 集合运算 D) 代数运算(分数:2.00)A.B.C.D.9.算法具有五个特性,以下选项中不属于算法特性的是_。A) 有穷性 B) 简洁性 C) 可行性 D) 确定性(分数:2.00)A.B.C.D.10.当 c的值不为 0时,在下列选项中能正确将 c的值赋给变量 a、b 的是( )。Ac=b=a; B(a=c)|(b=c);C(a=c)int c,i;scanf(“%c“,scanf(“%d“,scanf(“%s“,s);printf(“%c,%d,%s
4、/n“,c,i,s);A) 123,456,789 B) 1,456,789C) 1,23,456,789 D) 1,23,456(分数:1.00)A.B.C.D.17.若执行下列程序时从键盘上输入 2,则输出结果是( )。#includestdio.hmain()int a;scanf(“%d“,if(a+3)printf(“%d/n“,a);else printf(“%d/n“,a-);A) 1 B) 3 C) 2 D) 4(分数:1.00)A.B.C.D.18.有下列程序:main()int x=5;do(printf(“%d“,x-=4) ;while(!(-X);程序的输出结果是(
5、)。A) 1 B) 2 0 C) 1 -4 D) 死循环(分数:2.00)A.B.C.D.19.下列程序的输出结果是( )。main()int a4,b5,c;ifaB) ca*b;printf(“%d,%d,%d/n“,b,a,c);elsecb/a;printf(“%d,%d,%d/n“,b,a,c);A) 4,5,12 B) 20 C) 5,4,20 D) 12(分数:1.00)A.B.C.D.20.有下列程序:#includestdio.hmain()char*s=“ABC“;doprintf(“%d“,*s%10);s+;while(*s);注意:字母 A的 ASCII码值为 65。
6、程序运行后的输出结果是( )。A5670 B656667 C567 DABC(分数:1.00)A.B.C.D.21.若变量已正确定义,下列正确的程序段是( )。A) while(ch=getchar()=/N)putchar(ch);B) while(ch=getchar()=/n)putchar(ch);C) while(ch=getehar()!=/N)putchar(ch);D) while(ch=getchar()!=/n,)putchar(ch);(分数:2.00)A.B.C.D.22.以下选项中非法的字符常量是( )。 A) / B) /0201 C) /xAA D) 0(分数:2
7、.00)A.B.C.D.23.设有定义:int A,*pA=,以下 scanf 语句中能正确为变量 A读入的数据是 _。A) scanf (“%d“,pA) ; B) scanf (“%d“,A) ;C) scanf (“%d“, D) scanf (“%d“,*pA) ;(分数:2.00)A.B.C.D.24.有以下程序#include stdio.hvoid fun(int *p)printf(“%d/n“,p5);main()int a10=1,2,3,4,5,6,7,8,9,10;fun(程序运行后的输出结果是( )。A)5 B)6 C)8 D)9(分数:2.00)A.B.C.D.25
8、.以下程序段给数组所有的元素输入数据,请选择正确答案填入。#includestdio.hmain()int a10,i=0;while(i10)scanf(“%d“,_);:A) a+(i+) B) B) int b=0, 0, 0, 0, 0; C) int c2+3; D) int i=5, di;(分数:2.00)A.B.C.D.27.有以下程序#includestdio.h#define N 4void fun(int aN,int b)int i;for(i=0;iN;i+)bi=aii-aiN-1-i;void main()int xNN=1,2,3,4,5,6,7,8,9,10,
9、11,12,13,14,15,16,yN,i;fun(x,y);for(i=0;iN;i+)printf(“%d,“,yi);printf(“/n“);程序运行后的输出结果是( )。A)-12,-3,0,0, B)-3,-1,1,3, C)0,1,2,3, D)-3,-3,-3,-3,(分数:2.00)A.B.C.D.28.下列叙述中不正确的是A) 在不同函数中可以使用相同名字的变量B) 函数中的形式参数是局部变量C) 在一个函数内定义的变量只在本函数范围内有效D) 在一个函数内的复合语句中定义的变量在本函数范围内有效(分数:2.00)A.B.C.D.29.有以下程序#includestdio
10、.hmain()(char a3 0, b30;scanf(“%s“, a);gets(b);printf(“%s/n%s/n“, a, b);程序运行时若输入:how are you? I am fine回车则输出结果是_。A) how are you?I am fineB) howare you? I am fineC) how are you? I am fineD) how are you?(分数:1.00)A.B.C.D.30.设已包含头文件string.h,下列程序段的运行结果是( )。char s1=“ACDEF“;char s2=“ABC“;strcpy(s1,s2);prin
11、tf(“%d“,strlen(s1);A) 3 B) 4 C) 6 D) 5(分数:2.00)A.B.C.D.31.设中为指向某二进制文件的指针,且已读到此文件末尾,则函数 feof(fp)的返回值为 ( )。A) EOF B) 非 0值 C) 0 D) NULL(分数:2.00)A.B.C.D.32.下面程序的输出结果是#includestdioh#includestringhmain()char*p1=“abc“,*p2=“ABC“,str50=“xyz“;strcpy(str+2,streat(p1,p2);printf(“%s/n“,str);A) xyzabcABC B) zabcA
12、BC C) xyabcABC D) yzabcABC(分数:1.00)A.B.C.D.33.有以下程序:#includestdio.hmain()FILE *fp;int a10=1,2,3,0,0,i;fp=fopen(“d2.dat“,“wb“);fwrite(a,sizeof(int),5,fp);fwrite(a,sizeof(int),5,fp);fclose(fp);fp=fopen(“d2.dat“,“rb“);fread(a,sizeof(int),10,fp);fclose(fp);for(i=0;i10;i+)printf(“%d,“,ai);程序的运行结果是( )。A)
13、1,2,3,0,0,0,0,0,0,0, B) 1,2,3,1,2,3,0,0,0,0,C) 123,0,0,0,0,123,0,0,0,0, D) 1,2,3,0,0,1,2,3,0,0,(分数:2.00)A.B.C.D.34.设有定义:char *c;,以下选项中能够使字符型指针 c正确指向一个字符串的是A) char str=“string“; c=str; B) scanf(“%s“, c);C) c=getchar(); D) *c=“string“;(分数:2.00)A.B.C.D.35.有以下程序:#include stdiohintf(intn)if(n=1) return 1
14、;else return f(n-1)+1;main()int i,j=0;for(i=1; i3; i+) j+=f(i);printf(“%d/n“,j);程序运行后的输出结果是( )。A) 4 B) 3 C) 2 D) 1(分数:1.00)A.B.C.D.36.有以下定义和语句: struct students int num;char name20;char c; struct int grade1;int grade2;s; ; struct students w,*pw; *pw=w; 下列赋值语句不正确的是( )。 A) w.num=1002; B) w.grade1=85; C
15、) pw-num=1002;D) w.s.grade2=85;(分数:2.00)A.B.C.D.37.在 C语言中,函数的隐含存储类别是 _。A) auto B) static C) extern D) 无存储类别(分数:2.00)A.B.C.D.38.若以“a+”方式打开一个已存在的文件,则下列叙述正确的是( )。A) 文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可以进行添加或读操作B) 文件打开时,原有文件内容不被删除,只能进行读操作C) 文件打开时,原有文件内容被删除,只能进行写操作D) 以上三种说法都不正确(分数:2.00)A.B.C.D.39.设有以下定义和语句:char
16、 str20=“Program“, *P;p=str;则以下叙述中正确的是( )。A) *p与 str0中的值相等B) str与 p的类型完全相同C) str数组的长度和 p所指向的字符串长度相等D) 数组 str中存放的内容和指针变量 p中存放的内容相同(分数:1.00)A.B.C.D.40.下列程序的运行结果是( )。#include stdio.hvoid fun(int *a, int *b)int *k;k=a; a=b; b=k;main()int a=3,b=6, *x=fun(x,y);printf(“%d%d“,a,b);A) 6 3 B) 3 6 C) 编译出错 D) 0
17、0(分数:2.00)A.B.C.D.二、填空题(总题数:15,分数:36.00)41.算法复杂度主要包括时间复杂度和 1 复杂度。(分数:2.00)填空项 1:_42.用树型结构表示实体类型及实体间联系的数据模型称为U /U。(分数:2.00)填空项 1:_43.下列软件系统结构图的宽度为 1。*(分数:2.00)填空项 1:_44.数据库系统其内部分为三级模式,即概念模式、内模式和外模式。其中, 1 是用户的数据视图,也就是用户所见到的数据模式。(分数:2.00)填空项 1:_45.一名学生只能住一间宿舍,一间宿舍可住多名学生,则实体“宿舍”与实体“学生”的联系属于 1 的联系。(分数:2.
18、00)填空项 1:_46.以下程序运行后,当输入“14 63”时,输出结果是_。#includestdio.hmain()int m, n;scanf(“%d %d“, while(m!=n)while(mn) m=m-n;while(mn) n=n-m;printf(“%d/n“, m);(分数:2.00)填空项 1:_47.下面的程序实现的是从指针 p所指向的地址的 n个数中,找出最大的和最小的数据,请填空。fun(int *p,int n)int *q;int max,min;max=min=*p;for(q=p;_;q+)if(*qmax)max=*q;else if(*qmin)mi
19、n=*q;(分数:2.00)填空项 1:_48.以下程序中,fun 函数的功能是求 3行 4列二维数组每行元素中的最大值,请填空void fun(int,int,int(*)4,int *);main()int a34=12,41,36,28,19,33,15,27,3,27,19,1,b3,i;fun(3,4,a,b);for(i=0;i3;i+)printf(“%4d“,bi);printf(“/n“);void fun(int m,int n,int ar4,int *bar)int i,j,x;for(i=0;iM;i+)x=ari0;for(j=0;jN;j+)NBSP;IF(X_=
20、x;(分数:2.00)填空项 1:_49.设有下列宏定义:#define A 2#define B (A+3) 则执行赋值语句“k=B*20;”(k 为 int型变量)后,k 的值是_。(分数:2.00)填空项 1:_50.以下说明语句中,_是结构体类型名。typedef structint n;char ch8;PER;(分数:2.00)填空项 1:_51.下面 rotate函数的功能是:将 n行 n列的矩阵 A转置 A,例如(分数:8.00)填空项 1:_52.以下程序中函数 huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no
21、!,并在主函数中输出,所谓回文即正向与反向的拼写都一样,例如:adgda,请填空。#include char *huiwen(char *str)char *p1,*p2;int i,t=0;p1=str; p2=_;for(i=0;i=strlen(str)/2;i+)if(*p1+!=*p2-)t=1;break;if(t=0)return(“yes!“);else return(“no!“);main()char str50;printf(“Input:“);scanf(“%s“,str);printf(“%s/n“, huiwen(str);(分数:2.00)填空项 1:_53.以下程
22、序运行后的输出结果是U /U。fun(iht x)if(x/20) fun(x/2);printf(“%d“,x);main()fun(6); (分数:2.00)填空项 1:_54.软件生命周期可分为多个阶段,一般分为定义阶段、开发阶段和维护阶段,其中编码和测试属于_阶段。(分数:2.00)填空项 1:_55.在面向对象方法中,类的实例称为 1。(分数:2.00)填空项 1:_二级 C语言笔试-458 答案解析(总分:103.00,做题时间:90 分钟)一、选择题(总题数:40,分数:67.00)1.下列叙述中正确的是( )。A) 一个算法的空间复杂度大,则其时间复杂度必定大B) 一个算法的空
23、间复杂度大,则其时间复杂度必定小C) 一个算法的时间复杂度大,则其空间复杂度必定小D) 上述三种说法都不对(分数:2.00)A.B.C.D. 解析:解析 算法的时间复杂度和算法的空间复杂度是从不同的角度来衡量算法的执行情况,它们之间没有内在联系。2.程序流程图中带有箭头的线段表示的是A) 图元关系 B) 数据流 C) 控制流 D) 调用关系(分数:2.00)A.B.C. D.解析:解析 在程序流程图中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容,流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流。带箭头的线段在程序流程图中表示控制流。在题目给出的选项中,图元之间用带有
24、箭头的线段表示图元关系。模块之间用带有箭头的线段表示调用关系。3.已知、棵二叉树的后序遍历序列是 dabec,中序遍历序列是 debac,则它的前序遍历序列是( )。A) acbed B) decab C) deabc D) cedba(分数:1.00)A.B.C.D. 解析:解析 依据后序遍历序列可确定根结点为 c,由中序遍历序列可知其左子树由 deba构成,右子树为空;又由左子树的后序遍历序列可知其根结点为 e,由中序遍历序列可知其左子树为 d,右子树由 ba构成,如图所示。由此可知该二叉树的前序遍历序列为选项 D) 。4.最简单的交换排序方法是( )。A) 快速排序 B) 选择排序 C)
25、 堆排序 D) 冒泡排序(分数:2.00)A.B.C.D. 解析:解析 交换排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序是一种最简单的交换排序方法,它通过相邻元素的交换,逐步将线性表变成有序。5.在面向对象方法中,实现信息隐蔽是依靠_。A) 对象的继承 B) 对象的多态 C) 对象的封装 D) 对象的分类(分数:2.00)A.B.C. D.解析:解析 信息隐蔽是通过对象的封装性来实现的。6.数据库管理系统中负责数据模式定义的语句是A) 数据定义语言 B) 数据管理语言 C) 数据操纵语言 D) 数据控制语言(分数:2.00)A. B.C.D.解析:
26、解析 数据库定义语言(Data Definition Language,DDL)用于定义数据库的所有特性和属性,尤其是行布局、列定义、键列(有时是选键方法)、文件位置和存储策略。7.数据库系统的核心是( )。A) 数据模型 B) 数据库管理系统C) 数据库 D) 数据库管理员(分数:2.00)A.B. C.D.解析:解析 数据库系统由数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、硬件平台 (硬件)、软件平台 5个部分构成。其中数据库管理系统是数据库系统的核心,它负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等工作。8.关系代数运算是以 _为基础的运算。A) 关
27、系运算 B) 谓词运算 C) 集合运算 D) 代数运算(分数:2.00)A.B.C. D.解析:评析 关系代数运算是以关系代数作为运算对象的一组高级运算的集合。它的基本操作是并、交、差、笛卡尔积,另外还包括垂直分割(投影)、水平分割(选择)、关系的结合(连接)等。9.算法具有五个特性,以下选项中不属于算法特性的是_。A) 有穷性 B) 简洁性 C) 可行性 D) 确定性(分数:2.00)A.B. C.D.解析:解析 一个算法应该具有以下 5个特性:有穷性、确定性、可行性、有零个或多个输入、有一个或多个输出。10.当 c的值不为 0时,在下列选项中能正确将 c的值赋给变量 a、b 的是( )。A
28、c=b=a; B(a=c)|(b=c);C(a=c)int c,i;scanf(“%c“,scanf(“%d“,scanf(“%s“,s);printf(“%c,%d,%s/n“,c,i,s);A) 123,456,789 B) 1,456,789C) 1,23,456,789 D) 1,23,456(分数:1.00)A.B.C.D. 解析:解析 根据给定的数据输入格式:123空格456空格789回车,第一个 scanf语句中,格式字符为“%c”,只能得到一个字符1,第二个 scanf语句中格式字符为“%d”,变量 i得到的数值为 23,第三个 scanf语句中格式字符为“%s”,遇到空格就自
29、动结束,因此字符数组 s得到的是“456/0”。因而正确答案为选项 D。17.若执行下列程序时从键盘上输入 2,则输出结果是( )。#includestdio.hmain()int a;scanf(“%d“,if(a+3)printf(“%d/n“,a);else printf(“%d/n“,a-);A) 1 B) 3 C) 2 D) 4(分数:1.00)A.B. C.D.解析:解析 本题考查 if else语句。程序中首先使用函数 scanf()通过键盘读入 a的值,并通过第 1个 if语句,先判断条件,取 a的值 2和 3比较,然后将 a的值加 1,发现条件成立,执行下列的 printf语
30、句,输出 a的值 3。18.有下列程序:main()int x=5;do(printf(“%d“,x-=4) ;while(!(-X);程序的输出结果是( )。A) 1 B) 2 0 C) 1 -4 D) 死循环(分数:2.00)A.B.C. D.解析:解析 本题考查 dowhile循环。执行 printf语句,x=x-4=1,输出 1,判断 while循环的控制条件,-x=0,则(!(-x)非零,循环条件成立,执行下一次循环;执行 printf 语句,x=x-4=-4,输出-4,判断 while循环的控制条件,-X=-5,则(!(-X)为零,循环条件不成立,结束循环。19.下列程序的输出结果
31、是( )。main()int a4,b5,c;ifaB) ca*b;printf(“%d,%d,%d/n“,b,a,c);elsecb/a;printf(“%d,%d,%d/n“,b,a,c);A) 4,5,12 B) 20 C) 5,4,20 D) 12(分数:1.00)A.B.C. D.解析:解析 本题考查 if else语句。第一个 if语句,先判断条件,发现 ab 成立,执行下列的复合语句,得 ca *b20,b、a 的值不变。20.有下列程序:#includestdio.hmain()char*s=“ABC“;doprintf(“%d“,*s%10);s+;while(*s);注意:
32、字母 A的 ASCII码值为 65。程序运行后的输出结果是( )。A5670 B656667 C567 DABC(分数:1.00)A.B.C. D.解析:解析 本题考查 do while语句,至少执行一次循环体,依次输出 ABC这三个字母的 ASCII值对10求模的余数,字母 A的 ASCII值对 10求模的余数为 5,字母 B的 ASCII值对 10求模的余数为 6,字母C的 ASCII值对 10求模的余数为 7。所以正确答案为选项 C。21.若变量已正确定义,下列正确的程序段是( )。A) while(ch=getchar()=/N)putchar(ch);B) while(ch=getc
33、har()=/n)putchar(ch);C) while(ch=getehar()!=/N)putchar(ch);D) while(ch=getchar()!=/n,)putchar(ch);(分数:2.00)A.B.C.D. 解析:解析 本题考查两个知识点:C 语言用/n这个字符常量表示换行;getchar 函数的作用是从终端输入一个字符,当遇到换行时结束输入。22.以下选项中非法的字符常量是( )。 A) / B) /0201 C) /xAA D) 0(分数:2.00)A.B. C.D.解析:解析 选项 A)表示的是反斜杠字符;一般可是用 13 位八进制数表示的字符,而选项 B)中/0
34、201有 4位八进制数,所以错误;选项 C)是用两位十六进制数 AA表示的 ASCII码字符;选项 D)表示的是字符 0对应的 ASCII码值。23.设有定义:int A,*pA=,以下 scanf 语句中能正确为变量 A读入的数据是 _。A) scanf (“%d“,pA) ; B) scanf (“%d“,A) ;C) scanf (“%d“, D) scanf (“%d“,*pA) ;(分数:2.00)A. B.C.D.解析:解析 选项 B中不是变量 A的地址,错误;选项 C是指针 pA的地址,错误;选项 D中*pA 表示变量 A的值,错误。24.有以下程序#include stdio.
35、hvoid fun(int *p)printf(“%d/n“,p5);main()int a10=1,2,3,4,5,6,7,8,9,10;fun(程序运行后的输出结果是( )。A)5 B)6 C)8 D)9(分数:2.00)A.B.C.D. 解析:解析 函数 fun的功能是输出数组 p的第 5个元素,在主函数中,把元素 a3的地址赋给函数fun,因为在 C语言中,数组的下标是从 0开始,所以输出数组 a中的第 8个元素,即 9。25.以下程序段给数组所有的元素输入数据,请选择正确答案填入。#includestdio.hmain()int a10,i=0;while(i10)scanf(“%d
36、“,_);:A) a+(i+) B) B) int b=0, 0, 0, 0, 0; C) int c2+3; D) int i=5, di;(分数:2.00)A.B.C.D. 解析:解析 本题和 27题类似,考查一维数组的定义,根据 27题的解析,可以判断选项 D是错误的数组定义。27.有以下程序#includestdio.h#define N 4void fun(int aN,int b)int i;for(i=0;iN;i+)bi=aii-aiN-1-i;void main()int xNN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,yN,i;fun(
37、x,y);for(i=0;iN;i+)printf(“%d,“,yi);printf(“/n“);程序运行后的输出结果是( )。A)-12,-3,0,0, B)-3,-1,1,3, C)0,1,2,3, D)-3,-3,-3,-3,(分数:2.00)A.B. C.D.解析:解析 fun 函数的功能是求出二维数组 a中第 i行第 i个元素与第 N-1-i元素的差,赋给 bi。在主函数中,把实参二维数组 x和一维数组 y传递给形参 a和 b,最后输出一维数组 y中元素的值。28.下列叙述中不正确的是A) 在不同函数中可以使用相同名字的变量B) 函数中的形式参数是局部变量C) 在一个函数内定义的变量
38、只在本函数范围内有效D) 在一个函数内的复合语句中定义的变量在本函数范围内有效(分数:2.00)A.B.C.D. 解析:解析 C 语言在函数中说明的变量为局部变量,只在函数内起作用不会影响到其他函数。在不同函数中使用相同的变量名不代表是同一变量,选项 A正确。在函数定义时声明的参数只在函数内部起作用,是函数的局部变量,选项 B正确。在一个函数中定义的变量是这个函数的局部变量,所以只在这个函数内起作用,选项 C正确。复合语句中定义的变量其作用域是这个复合语句,不会扩大到整个函数,所以选项D错误。29.有以下程序#includestdio.hmain()(char a3 0, b30;scanf(
39、“%s“, a);gets(b);printf(“%s/n%s/n“, a, b);程序运行时若输入:how are you? I am fine回车则输出结果是_。A) how are you?I am fineB) howare you? I am fineC) how are you? I am fineD) how are you?(分数:1.00)A.B. C.D.解析:解析 C 语言程序设计中输入多个字符串时,系统会把空格字符作为输入的字符串之间的分隔符。本题中将第一个空格的前半部分赋值给 a,将空格以及后面的部分赋值给 b。所以本题的正确答案为 B。30.设已包含头文件strin
40、g.h,下列程序段的运行结果是( )。char s1=“ACDEF“;char s2=“ABC“;strcpy(s1,s2);printf(“%d“,strlen(s1);A) 3 B) 4 C) 6 D) 5(分数:2.00)A. B.C.D.解析:解析 头文件string.h是字符串处理函数对应的头文件,要想调用 C语言的库函数时,都要在程序中嵌入该函数对应的头文件,否则无法使用库函数。strcpy(s1,s2)把 s2中的字符串复制到 s1中,所以结果就为 s2的长度。31.设中为指向某二进制文件的指针,且已读到此文件末尾,则函数 feof(fp)的返回值为 ( )。A) EOF B)
41、非 0值 C) 0 D) NULL(分数:2.00)A.B. C.D.解析:解析 ANSIC 提供的 feof函数的功能是判断 fp所指的文件的位置是否已达到文件尾,如果达到文件尾,则 feof函数的值为 1,否则为 0,表示文件尚未结束。32.下面程序的输出结果是#includestdioh#includestringhmain()char*p1=“abc“,*p2=“ABC“,str50=“xyz“;strcpy(str+2,streat(p1,p2);printf(“%s/n“,str);A) xyzabcABC B) zabcABC C) xyabcABC D) yzabcABC(分数
42、:1.00)A.B.C. D.解析:解析 本题考查的重点是拷贝字符串使用 strcpy()函数,该函数的调用方式是:strcpy(字符数组,字符串),其中“字符串”可以是字符串常量,也可以是字符数组。函数的功能是:将“字符串”完整地复制到“字符数组”中,字符数组中原有的内容被覆盖。使用该函数时注意:字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志“/0”一起复制;不能用赋值运算符“”将一个字符串直接赋值给一个字符数组,只能用 strcpy()函数处理。另外,本题还考查连接字符串的 strcat()函数,其调用方式是:strcat(字符数组,字符串)。功能是把“字符串”连
43、接到“字符数组”中的字符串尾端,并存储于“字符数组”中。“字符数组”中原来的结束标志,被“字符串”的第一个字符覆盖,而“字符串”在操作中未被修改。使用该函数时注意:由于没有边界检查,编程者要注意保证“字符数组”定义得足够大,以便容纳连接后的目标字符串;否则,会因长度不够而产生问题;连接前两个字符串都有结束标志“/0”,连接后“字符数组”中存储的字符串的结束标志“/0”被舍弃,只在目标串的最后保留一个“/0”。33.有以下程序:#includestdio.hmain()FILE *fp;int a10=1,2,3,0,0,i;fp=fopen(“d2.dat“,“wb“);fwrite(a,si
44、zeof(int),5,fp);fwrite(a,sizeof(int),5,fp);fclose(fp);fp=fopen(“d2.dat“,“rb“);fread(a,sizeof(int),10,fp);fclose(fp);for(i=0;i10;i+)printf(“%d,“,ai);程序的运行结果是( )。A) 1,2,3,0,0,0,0,0,0,0, B) 1,2,3,1,2,3,0,0,0,0,C) 123,0,0,0,0,123,0,0,0,0, D) 1,2,3,0,0,1,2,3,0,0,(分数:2.00)A.B.C.D. 解析:解析 首先用函数 fopen()以“wb”
45、的方式打开文件“d2.dat”,然后调用两次 fwrite函数将数组 a的 5个元素。依次输出到文件 fp中(共 10个字节),然后关闭文件。再次打开文件,使用文件指针指向文件的开头,调用 fread函数从文件 fp中读取这 10个字节的数据到数组 a中,此时数组 a的内容就变为1,2,3,0,0,1,2,3,0,0,因此最后的输出结果为“1,2,3,0,0,1,2,3,0,0”。34.设有定义:char *c;,以下选项中能够使字符型指针 c正确指向一个字符串的是A) char str=“string“; c=str; B) scanf(“%s“, c);C) c=getchar(); D)
46、 *c=“string“;(分数:2.00)A. B.C.D.解析:解析 对于选项 B,C 没有指向,编译会报警告错。对于选项 C,c 只能被地址赋值,不能被getchar读取的字符赋值。对于选项 D,赋值错误,应该改为 c=“string“;。35.有以下程序:#include stdiohintf(intn)if(n=1) return 1;else return f(n-1)+1;main()int i,j=0;for(i=1; i3; i+) j+=f(i);printf(“%d/n“,j);程序运行后的输出结果是( )。A) 4 B) 3 C) 2 D) 1(分数:1.00)A.B.
47、 C.D.解析:解析 在 main函数中,j 的值是 f(1)和 f(2)的值相加的结果。f(1)=1,f(2)=f(1)+1=2,j 的值为 1+2=3。36.有以下定义和语句: struct students int num;char name20;char c; struct int grade1;int grade2;s; ; struct students w,*pw; *pw=w; 下列赋值语句不正确的是( )。 A) w.num=1002; B) w.grade1=85; C) pw-num=1002;D) w.s.grade2=85;(分数:2.00)A.B. C.D.解析:解析本题主要考查的是结构体变量的嵌套定义,也就是说一个结构体变量也可以是一个结构体。在本题中 student这个结构体中包含了结构体 s。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1