1、二级 C语言笔试-413 及答案解析(总分:93.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) C语言的源程序不必通过编译就可以直接运行B) C语言中的每条可执行语句最终都将被转换成二进制的机器指令C) C源程序经编译形成的二进制代码
2、可以直接运行D) C语言中的函数不可以单独进行编译(分数:2.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.在数据库管理
3、技术的发展中,数据独立性最高的是( )。 A) 人工管理 B) 文件系统 C) 数据库系统 D) 数据模型(分数:2.00)A.B.C.D.8.算法具有五个特性,以下选项中不属于算法特性的是_。(A) 有穷性(B) 简洁性(C) 可行性(D) 确定性(分数:1.00)A.B.C.D.9.下列程序的运行结果是( )。int y=5,x=14;y=(x=3*y,x+1),x-1);printf(“x=%d,y=%d”,x,y);Ax=27,y=27 Bx=12,y=13Cx=15,y=14 Dx=y-27(分数:1.00)A.B.C.D.10.下列程序的执行结果是( )。#includestdio
4、.hmain()int a,b,c;a=b=2;c=(a+)-1;printf(“%Ad,%d“,a,C) ;c+=-a+(+B) ;printf(“%d,%d“,a,C) ;A) 3,14,1 B) 3,14,2C) 2,04,1 D) 2,14,1(分数:2.00)A.B.C.D.11.以下不能定义为用户标识符的是_。A) scanf B) Void C) _3com D) int(分数:1.00)A.B.C.D.12.以下 C语言用户标识符中,不合法的是A) _1 B) AaBc C) a_b D) a-b(分数:1.00)A.B.C.D.13.下列不是合法的 C语言语句是( )。A)
5、a=5 B) int i;i+;C) ; D) ;(分数:2.00)A.B.C.D.14.下列能正确定义且赋初值的语句是( )。A) int n1n210; B) charc32;C) float ff+1.1; D) doublex12.3E2.5;(分数:1.00)A.B.C.D.15.已知int t=0;while(t=1)则以下叙述正确的是( )。A) 循环控制表达式的值为 0 B) 循环控制表达式的值为 1C) 循环控制表达式不合法 D) 以上说法都不对(分数:1.00)A.B.C.D.16.有以下程序:#includestdio.hmain()int x=8;for(;x0;x-)
6、if(x%3)printf(“%d,“,x-);continue;printf(“%d,“,-x);程序的运行结果是_。A) 7,4,2 B) 8,7,5,2 C) 9,7,6,4 D) 8,5,4,2(分数:2.00)A.B.C.D.17.有以下程序#include main()int x=8;for( ; x0; x-)if(x%3)printf(“%d,“,x-); continue;printf(“%d,“,-x);程序的运行结果是_。(A) 7,4,2(B) 8,7,5,2(C) 9,7,6,4(D) 8,5,4,2(分数:1.00)A.B.C.D.18.有以下程序:main()in
7、t y=10;while(y-);printf(“y=%d/n“,y);程序执行后的输出结果是_。A) y=0 B) y=-1 C) y=1 D) while构成无限循环(分数:2.00)A.B.C.D.19.下列能正确定义一维数组的选项是( )。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“;(分数:2.00)A.B.C.D.20.有以下程序:#includestdio.hmain()int i,j;for(i=3;i=1;i-)for(j=1;j=2;j+)printf(“%d“,i
8、+j);printf(“/n“);程序运行的结果是_。A) 2 3 43 4 54 5B) 4 3 2C) 2 35 4 32 3D) 4 53 4 3 4(分数:2.00)A.B.C.D.21.要求通过 while循环不断读入字符,当读入字母 N时结束循环。若变量已正确定义,以下正确的程序段是_。A) while(ch=getchar()!=N)printf(“%c“,ch);B) while(ch=getchar()!=N)printf(“%c“,ch);C) while(ch=getchar()=N)printf(“%c“,ch);D) while(ch=getchar()=N)prin
9、tf(“%c“,ch);(分数:2.00)A.B.C.D.22.以下程序段的输出结果是 _。main()char s110,s210,s310;scanf(“%s“,s1);gets(s2);gets(s3);puts(s1);puts(s2);puts(s3);输入数据如下: (此处CR代表回车符)aaaCRbbbCRA) aaabbbB) aaabbbC) aaa/0bbb/0D) aaabbb(分数:2.00)A.B.C.D.23.若有定义:int a410;,则以下选项中对数组元素 aij引用错误的是_。 (o=i4,0=j=10A) *(该函数的类型是( )。A) int类型 B)
10、float 类型C) void类型 D) 函数无类型说明,定义有错(分数:2.00)A.B.C.D.25.现有如下程序段#include“stdio.h“#include“string.h“main()char a=“acfijk“;/*这里是有序的字符序列*/char b=“befijklqswz“;/*这里是有序的字符序列*/char c80,*p;int i=0,j=0,k=0;while(ai!二/0int *p=b,*q=printf(“%d“,*(p+);printf(“%d,“,*q);A) 4,4 B) 2,2 C) 4,5 D) 2,4(分数:2.00)A.B.C.D.29.
11、若有说明 char s130=“abc“,s2=“defghi“;,则在使用函数 strcat(s1,s2)后,结果是( )。A) s1的内容更新为 abcdefgiB) s1的内容更新为 defghi/0C) s1的内容更新为 defghiabc/0D) s1的内容更新为 abcdefghi/0(分数:1.00)A.B.C.D.30.有以下程序:#include stdio.hmain( )intc = 35; printf( “% d /n“ , e 程序运行后输出结果是( )。A) 0 B) 70 C) 35 D) 1(分数:1.00)A.B.C.D.31.有以下程序struct STU
12、char name10; int num; float TotalScore; ;void f(struct STU *p)struct STU s2=“SunDan“,20044,550,“Penghua“,20045,537, *q=s;+p; +q; *p=*q;main()struct STU s3=“YangSan“,20041,703,“LiSiGuo“,20042,580;f(s);printf(“%s %d %3.0f/n“, s1.name, s1.num, s1.TotalScore);程序运行后的输出结果是_。(A) SunDan 20044 550(B) Penghua
13、 20045 537(C) LiSiGuo 20042 580(D) SunDan 20041 703(分数:2.00)A.B.C.D.32.有以下函数:char fun(char *P)return p;该函数的返回值是( )。A) 无确切的值 B) 形参 p中存放的地址值C) 一个临时存储单元的地址 D) 形参 p自身的地址值(分数:1.00)A.B.C.D.33.若有说明语句:double * p,a;则能通过 scanf语句正确给输入项读入数据的程序段是( )。A) *p= sCanf(“%1f“,p); B) *p= scanf(“%f“,p);C) p= scanf( “% 1f“
14、 , * p); D) p = scanf( “% 1f“ , p);(分数:1.00)A.B.C.D.34.C语言库函数 fgets(str,n,fp)功能是_。A) 从中指向的文件中读取长度 n的字符串存入 int指向的内存B) 从 fp指向的文件中读取长度不超过 n-1的字符串存入 str指向的内存C) 从 fp指向的文件中读到 n个字符串存入 str指向的内存D) 从 str读取至多 n个字符到文件 fp(分数:2.00)A.B.C.D.35.有以下程序int a=2;int f(int n)static int a=3;int t=0;if(n%2) static int a=4;
15、t+=a+; else static int a=5; t+=a+; return t+a+;main()int s=a, i;for( i=0; i3; i+) s+=f(i);printf(“%d/n“, s);程序运行后的输出结果是_。(A) 26(B) 28(C) 29(D) 24(分数:2.00)A.B.C.D.36.变量 a中的数据用二进制表示的形式是 01011101,变量 b中的数据用二进制表示的形式是 11110000。若要求将 a的高 4位取反,低 4位不变,所要执行的运算是( )。Aab Ba|b Ca)today;printf(“%d/n“,sizeof(struct
16、date);A) 8 B) 6 C) 10 D) 12(分数:1.00)A.B.C.D.38.在 C语言中,只有在使用时才占用内存单元的变量,其存储类型是A) auto和 register B) extern和 register C) auto和 static D) static和 register(分数:2.00)A.B.C.D.39.有以下程序#includestdio.hmain()int a=5,b=lt;t=(a2)|b;printf(“%d/n“,t);程序运行后的输出结果是_。A) 21 B) 11 C) 6 D) 1(分数:2.00)A.B.C.D.40.调用 gets和 pu
17、ts函数时,必须包含的头文件是( )。A) stdio.h B) stdlib.h C) define D) 以上都不对(分数:1.00)A.B.C.D.二、填空题(总题数:15,分数:30.00)41.软件生命周期可分为多个阶段,一般分为定义阶段、开发阶段和维护阶段。编码和测试属于 1 阶段。(分数:2.00)填空项 1:_42.在结构化设计方法中,数据流图表达了问题中的数据流与加工间的关系,并且每一个 1 实际上对应一个处理模块。(分数:2.00)填空项 1:_43.仅由顺序、选择(分支)和重复(循环)结构构成的程序是 (4) 程序。(分数:2.00)填空项 1:_44.阅读下面语句,则程
18、序的执行结果是_。#include“stdio.h“main()inta=-1,b=1,k;if(+a0)while(k0)printf(“%d“,k);k-;printf(“/n“);(分数:2.00)填空项 1:_47.“printf(“%d/n“,strlen(“/t/“/023/xABC/n“);“语句的输出结果是_。(分数:2.00)填空项 1:_48.以下程序的输出结果是_。#include stdio.hmain()int a5=2,4,6,8,10,*p;p=a; p+;printf(“%d“,*p);(分数:2.00)填空项 1:_49.下列程序的输出结果是_。long fu
19、n5(int n)( long s;if(n=l)(n=2)s=2;elses=n+fun5(n-1);return(s);main()long x;x=fun5(4);printf(%1d/n“,x);(分数:2.00)填空项 1:_50.下面程序把从终端读入的文本(用作为文本结束标志)复制到一个名为 bi.dat的新文件中。请填空。#includestdio.hFILE *fp;main()char ch;if(fp=fopen(_)=NULL)exit(0);while(ch=getchar()!=)fputc(ch,fp);_;(分数:2.00)填空项 1:_51.函数 void fu
20、n(float *sn,int n)的功能是:根据以下公式计算 s,计算结果通过形参指针 sn 传回;n通过形参传入,n 的值大于或等于 0。请填空。*void fun(float *sn,int n)float s=0.0,w,f=-1.0;int i;for(i=0;i=n;i+)f=U /U * f;w=f/(2*i+1);s+=w;U /U=s;(分数:2.00)填空项 1:_52.以下程序用来判断指定文件是否能正常打开,请填空。#includestdio.hmain()FILE*fp;if(fp=fopen(“test.txt“,“r“)U /U)printf(“未能打开文件!/n“
21、);elseprintf(“文件打开成功!/n“);(分数:2.00)填空项 1:_53.设有下列的程序段;char str=“Hello“;char *ptr;ptr=str;执行上面的程序段后,*(ptr+5)的值为_。(分数:2.00)填空项 1:_54.设有定义:structint a;float b;charc; abc;*p_abc=t=x;x=y;y=t; printf(“%d %d “,x,y);main()int a=3,b=4;swap(a,b); printf(“%d %d/n“,a,b);(分数:2.00)填空项 1:_二级 C语言笔试-413 答案解析(总分:93.0
22、0,做题时间: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. 解析:解析 所谓的交换类排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序是一种最简单的交换排序方法,
23、它通过相邻元素的交换,逐步将线性表变成有序。3.以下叙述中正确的是 _。A) C语言的源程序不必通过编译就可以直接运行B) C语言中的每条可执行语句最终都将被转换成二进制的机器指令C) C源程序经编译形成的二进制代码可以直接运行D) C语言中的函数不可以单独进行编译(分数:2.00)A.B. C.D.解析:解析 C 语言编写的程序必须经过编译、连接后才可以执行,选项 A错误;C 语言编译后生成的二进制代码是目标文件,需进一步连接生成.exe 文件方可执行,选项 C错误;C 语言中函数可以单独编译。4.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及A) 数据
24、的存储结构 B) 计算方法 C) 数据映象 D) 逻辑存储(分数:2.00)A. B.C.D.解析:解析 数据结构作为计算机的一门学科,主要研究和讨论以下三个方面的问题:数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;对各种数据结构进行的运算。5.下列哪一条不属于数据库设计的任务?( )A) 设计数据库应用结构 B) 设计数据库概沦结构C) 设计数据库逻辑结构 D) 设计数据库物理结构(分数:2.00)A. B.C.D.解析:解析 数据库设计工作量大而且过程复杂,既是一项数据库工程也是一项庞大的软件工程。考虑数据
25、库及其应用系统开发全过程,将数据库设计分为以下 6个阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施和数据库的运行和维护。6.数据库系统的核心是( )。A) 数据模型 B) 数据库管理系统C) 数据库 D) 数据库管理员(分数:2.00)A.B. C.D.解析:解析 数据库系统由数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、硬件平台 (硬件)、软件平台 5个部分构成。其中数据库管理系统是数据库系统的核心,它负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等工作。7.在数据库管理技术的发展中,数据独立性最高的是( )。 A) 人工管理 B) 文
26、件系统 C) 数据库系统 D) 数据模型(分数:2.00)A.B.C. D.解析:解析 在人工管理阶段,数据无法共享,冗余度大,不独立,完全依赖程序:在文件系统阶段,数据共享性差;在数据库系统阶段,共享性好,独立性高。8.算法具有五个特性,以下选项中不属于算法特性的是_。(A) 有穷性(B) 简洁性(C) 可行性(D) 确定性(分数:1.00)A.B. C.D.解析:9.下列程序的运行结果是( )。int y=5,x=14;y=(x=3*y,x+1),x-1);printf(“x=%d,y=%d”,x,y);Ax=27,y=27 Bx=12,y=13Cx=15,y=14 Dx=y-27(分数:
27、1.00)A.B.C. D.解析:解析 逗号表达式的解题思路是从左到右,依次求解,整个逗号表达式的值就是最后一个表达式的值。表达式(x=3*y,x+1)中,依次是 x=3*y=3*5=15,表达式 x+1=16,但没有给 x或 y赋值,所以 x还是等于15;第 3个表达式 x-1=15-1=14,所以 y的值为 14。10.下列程序的执行结果是( )。#includestdio.hmain()int a,b,c;a=b=2;c=(a+)-1;printf(“%Ad,%d“,a,C) ;c+=-a+(+B) ;printf(“%d,%d“,a,C) ;A) 3,14,1 B) 3,14,2C)
28、2,04,1 D) 2,14,1(分数:2.00)A. B.C.D.解析:解析 本题主要考查自加运算符(+、-)的使用。前缀变量“+i,-i”,在使用 i之前,先使 i的值加 1或者减 1,再使用此时的表达式的值参与运算;后缀变量“i+、i-”,先使用此时的表达式的值参与运算,在使用 i之后,再使 i的值加 1或者减 1。题中计算表达式 c=(a+)-1时先使用 a的值进行计算,结果为 c=2-1=1,然后将 a的值加 1,即执行完此语句后 a的值是 3,表达式 c+=-a+(+B) 等价于 c=c+(-a+)+(+B) ,c=1+(-3)+3=1,此时a=4,b=3。11.以下不能定义为用户
29、标识符的是_。A) scanf B) Void C) _3com D) int(分数:1.00)A.B.C.D. 解析:解析 本题选项 D中 int为 C语言的保留字,是错误的。注意:C 语言的标识符是区分大小写的,void是 C语言的保留字,而 Void不是 C语言的保留字,故 Void也可定义为用户标识符。12.以下 C语言用户标识符中,不合法的是A) _1 B) AaBc C) a_b D) a-b(分数:1.00)A.B.C.D. 解析:解析 标识符由字母、下划线、数字三个方面组成,开头必须是字母或下划线。13.下列不是合法的 C语言语句是( )。A) a=5 B) int i;i+;
30、C) ; D) ;(分数:2.00)A. B.C.D.解析:解析 选项 A) 是一个表达式,它后面没有分号结尾(C 语言中规定语句必须以分号结束),所以它不是语句;选项 B) 用一个花括号把几条语句括起来了,这是一个复合语句;选项 C) 中只有一个分号,是一个空语句;选项 D) 是个复合语句,也是一个空语句。14.下列能正确定义且赋初值的语句是( )。A) int n1n210; B) charc32;C) float ff+1.1; D) doublex12.3E2.5;(分数:1.00)A.B. C.D.解析:解析 C 语言规定,可以在定义变量的同时给变量赋初值,称为变量初始化。选项 A)
31、中在给 n1和 n2进行赋初值,但变量 n2没有定义;选项 C)中定义变量 f时,不能在赋值表达式的右边出现变量 f自身,所以选项 C)错误;选项 D)用指数表达式的常量中,字母 E后面的数应该为整数,而不应该为小数形式。因此,选项 B)正确。15.已知int t=0;while(t=1)则以下叙述正确的是( )。A) 循环控制表达式的值为 0 B) 循环控制表达式的值为 1C) 循环控制表达式不合法 D) 以上说法都不对(分数:1.00)A.B. C.D.解析:解析 这里要注意“=”与“=”的用法,t=1 是将 t赋值为 1,所以循环控制表达式的值为 1。16.有以下程序:#includes
32、tdio.hmain()int x=8;for(;x0;x-)if(x%3)printf(“%d,“,x-);continue;printf(“%d,“,-x);程序的运行结果是_。A) 7,4,2 B) 8,7,5,2 C) 9,7,6,4 D) 8,5,4,2(分数:2.00)A.B.C.D. 解析:解析 本题考查 for循环语句。x=8,for 循环条件为真,8%3=2,不等于 0,则 if条件表达式为真,执行第一个输出语句,先输出 x的值 8,然后将 x的值减 1,此时 x=7。然后执行 continue语句结束本次循环。执行 x-表示式,得 x=6,for 循环条件为真6%3=0,则
33、 if条件表达式为假,执行第二个输出语句,先将 x的值减 1得 x=5,然后输出 x的值 5。执行 x-表示式,得 x=4,for 循环条件为真,4%3=1,不等于 0,则 if条件表达式为真,执行第一个输出语句,先输出 x的值 4,然后将 x的值减 1,此时 x=3。然后执行 continue语句结束本次循环。执行 x-表示式,得 x=2,for 循环条件为真,2%3=2,不等于 0,则 if条件表达式为真,执行第一个输出语句,先输出 x的值 2,然后将 x的值减 1,此时x=1。执行 x-表示式,得 x=0,for 循环条件为假,循环结束。17.有以下程序#include main()in
34、t x=8;for( ; x0; x-)if(x%3)printf(“%d,“,x-); continue;printf(“%d,“,-x);程序的运行结果是_。(A) 7,4,2(B) 8,7,5,2(C) 9,7,6,4(D) 8,5,4,2(分数:1.00)A.B.C.D. 解析:18.有以下程序:main()int y=10;while(y-);printf(“y=%d/n“,y);程序执行后的输出结果是_。A) y=0 B) y=-1 C) y=1 D) while构成无限循环(分数:2.00)A.B. C.D.解析:解析 whik 语句一般形式为:While(表达式)语句;其语句先
35、判断表达式,后执行语句。而表达式 y-先返回 y的当前值,再进行-1 运算。19.下列能正确定义一维数组的选项是( )。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“;(分数:2.00)A.B. C.D.解析:解析 在定义数组时,如果赋给的初始值个数大于数值的长度,这样就会越界,因此选项 A错误;选项 C中定义的是一个字符变量 C;选项 D)中整型数组 a中只能存储整型数据,而不能存储字符串常量“0123”。20.有以下程序:#includestdio.hmain()int i,j;fo
36、r(i=3;i=1;i-)for(j=1;j=2;j+)printf(“%d“,i+j);printf(“/n“);程序运行的结果是_。A) 2 3 43 4 54 5B) 4 3 2C) 2 35 4 32 3D) 4 53 4 3 4(分数:2.00)A.B.C.D. 解析:解析 本题主要考查 for循环语句的嵌套。外层主循环执行了 3次,嵌套的循环语句每轮执行 2次,每次输出 i+j的值,推出嵌套循环语句后换行。21.要求通过 while循环不断读入字符,当读入字母 N时结束循环。若变量已正确定义,以下正确的程序段是_。A) while(ch=getchar()!=N)printf(“%
37、c“,ch);B) while(ch=getchar()!=N)printf(“%c“,ch);C) while(ch=getchar()=N)printf(“%c“,ch);D) while(ch=getchar()=N)printf(“%c“,ch);(分数:2.00)A. B.C.D.解析:解析 因为 while一是以条件为假时结束循环,因此选项 C、D 不正确。“!=”的优先级比“=”高,因此“ch=getchar()!=N”相当于“ch=(getchar!=N)”,ch 并不能得到输入的字符,只能得到true或者 false值。22.以下程序段的输出结果是 _。main()char
38、s110,s210,s310;scanf(“%s“,s1);gets(s2);gets(s3);puts(s1);puts(s2);puts(s3);输入数据如下: (此处CR代表回车符)aaaCRbbbCRA) aaabbbB) aaabbbC) aaa/0bbb/0D) aaabbb(分数:2.00)A.B. C.D.解析:评析 scanf 是标准输入函数,在输入字符串 aaa时,实际的内容为“aaa/0”,“/0”是由系统自动加入的;gets 的功能是从终端读入一行字符,即一直读到换行符为止,并由系统自动以“/0”代替换行符。23.若有定义:int a410;,则以下选项中对数组元素 a
39、ij引用错误的是_。 (o=i4,0=j=10A) *(该函数的类型是( )。A) int类型 B) float 类型C) void类型 D) 函数无类型说明,定义有错(分数:2.00)A. B.C.D.解析:解析 本题考查默认函数的函数值的类型。在函数定义时,由于函数没有说明其类型,系统默认一律自动按整型处理,因此,函数的类型为 int类型。25.现有如下程序段#include“stdio.h“#include“string.h“main()char a=“acfijk“;/*这里是有序的字符序列*/char b=“befijklqswz“;/*这里是有序的字符序列*/char c80,*p
40、;int i=0,j=0,k=0;while(ai!二/0int *p=b,*q=printf(“%d“,*(p+);printf(“%d,“,*q);A) 4,4 B) 2,2 C) 4,5 D) 2,4(分数:2.00)A.B.C.D. 解析:解析 首先定义了一个指向一维数组 b的指针 p,一个指向指针 p的指针变量 q,输出*(p+)是先输出*p 即 b0的值,再将指针 p指向数组的下一个元素 b1,输出*q 是输出指针 p所指单元的内容,即 b1的值。29.若有说明 char s130=“abc“,s2=“defghi“;,则在使用函数 strcat(s1,s2)后,结果是( )。A)
41、 s1的内容更新为 abcdefgiB) s1的内容更新为 defghi/0C) s1的内容更新为 defghiabc/0D) s1的内容更新为 abcdefghi/0(分数:1.00)A.B.C.D. 解析:解析 streat(s1,s2)是把 s2字符串连接到 s1字符串的末尾,要保证 s1能容纳下连接后的字符串。30.有以下程序:#include stdio.hmain( )intc = 35; printf( “% d /n“ , e 程序运行后输出结果是( )。A) 0 B) 70 C) 35 D) 1(分数:1.00)A.B.C. D.解析:解析 按位与运算符“ int num;
42、float TotalScore; ;void f(struct STU *p)struct STU s2=“SunDan“,20044,550,“Penghua“,20045,537, *q=s;+p; +q; *p=*q;main()struct STU s3=“YangSan“,20041,703,“LiSiGuo“,20042,580;f(s);printf(“%s %d %3.0f/n“, s1.name, s1.num, s1.TotalScore);程序运行后的输出结果是_。(A) SunDan 20044 550(B) Penghua 20045 537(C) LiSiGuo
43、20042 580(D) SunDan 20041 703(分数:2.00)A.B. C.D.解析:32.有以下函数:char fun(char *P)return p;该函数的返回值是( )。A) 无确切的值 B) 形参 p中存放的地址值C) 一个临时存储单元的地址 D) 形参 p自身的地址值(分数:1.00)A.B. C.D.解析:解析 本题考查函数返回值的知识。函数返回值是通过函数中的 return语句获得,return 语句中表达式的值就是所求函数的值,该表达式的值必须与函数的类型一致。若类型不一致,则以函数值的类型为准,由系统进行转换。33.若有说明语句:double * p,a;则
44、能通过 scanf语句正确给输入项读入数据的程序段是( )。A) *p= sCanf(“%1f“,p); B) *p= scanf(“%f“,p);C) p= scanf( “% 1f“ , * p); D) p = scanf( “% 1f“ , p);(分数:1.00)A.B.C.D. 解析:解析 p=中的 n为要求得到的字符的个数,但只从 fp指向的文件输入 n-1个字符,然后在最后加个“/0”字符,因此得到的字符串共有 n个字符。35.有以下程序int a=2;int f(int n)static int a=3;int t=0;if(n%2) static int a=4; t+=a
45、+; else static int a=5; t+=a+; return t+a+;main()int s=a, i;for( i=0; i3; i+) s+=f(i);printf(“%d/n“, s);程序运行后的输出结果是_。(A) 26(B) 28(C) 29(D) 24(分数:2.00)A.B.C. D.解析:36.变量 a中的数据用二进制表示的形式是 01011101,变量 b中的数据用二进制表示的形式是 11110000。若要求将 a的高 4位取反,低 4位不变,所要执行的运算是( )。Aab Ba|b Ca)today;printf(“%d/n“,sizeof(struct
46、date);A) 8 B) 6 C) 10 D) 12(分数:1.00)A.B. C.D.解析:解析 解答本题需要注意两个知识点:结构体变量的长度是其内部成员长度的总和,本题中,struct date中包含 year、month、day 这 3个整型变量,一个整型变量占 2个字节;sizeof 是求所占字节数的运算符。38.在 C语言中,只有在使用时才占用内存单元的变量,其存储类型是A) auto和 register B) extern和 register C) auto和 static D) static和 register(分数:2.00)A. B.C.D.解析:解析 C 语言中只有自动变
47、量 auto和寄存器变量 register,在使用时才开辟内存空间。39.有以下程序#includestdio.hmain()int a=5,b=lt;t=(a2)|b;printf(“%d/n“,t);程序运行后的输出结果是_。A) 21 B) 11 C) 6 D) 1(分数:2.00)A. B.C.D.解析:评析 本题主要考查了 C语言的逻辑运算符,先将变量 a,b 的值转换为 2进制数,a=00000101,b=00000001,a 先左移 2 位结果为 00010100,再与 b按位或运算,结果为 00010101,转换为十进制数为 21,因此,选项 A是正确的。40.调用 gets和 puts函数时,必须包含的头文件是( )。A) stdio.h B) stdlib.h C) define D)