1、二级 C语言笔试-205 及答案解析(总分:96.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.线性表的顺序存储结构和线性表的链式存储结构分别是( )。(分数:2.00)A.顺序存取的存储结构、顺序存取的存储结构B.随机存取的存储结构、顺序存取的存储结构C.随机存取的存储结构、随机存取的存储结构D.任意存取的存储结构、任意存取的存储结构2.有以下程序:main()char k; int i;for(i=1; i3; i+)scanf(“%c“, k);switch(k)case0: printf(“another/n“);case 1: printf(“numbe
2、r/n“);程序运行时,从键盘输入:01回车,程序执行后的输出结果是( )。(分数:2.00)A.another numberB.another number anotherC.another number numberD.number number3.(2S)以下叙述中错误的是( )。(分数:2.00)A.改变函数形参的值,不会改变对应实参的值B.函数可以返回地址值C.可以给指针变量赋一个整数作为地址值D.当在程序的开头包含头文件 stdio.h时,可以给指针变量赋 NULL4.一个关系中属性个数为 1时,称此关系为( )。(分数:2.00)A.对应关系B.单一关系C.一元关系D.二元关系5
3、.下列有关数据库的描述,正确的是( )。(分数:2.00)A.数据库是一个 DBF文件B.数据库是一个关系C.数据库是一个结构化的数据集合D.数据库是一组文件6.若以下选项中的变量已正确定义,则正确的赋值语句是( )。(分数:2.00)A.xb26.8%3;B.1+2=x2C.x3=0x12;D.x4=1+2=3;7.有以下程序:#include stdio.hvoid fun (int *s, int n1, int n2)int i,j. t;i=n1; j=n2;while (ij)t=si; si=sj; sj=t; i+; j-;main()int a10=1, 2, 3, 4, 5
4、, 6, 7, 8, 9, 0, k;fun(a, 0, 3); fun(a, 4, 9); fun(a, 0, 9);for(k=0; k10; k+) printf(“%d“, ak); printf(“/n“);程序的运行结果是( )。(分数:2.00)A.049382716B.05948372615C.5678901234D.09876512348.以下选项中,当 x为大于 1的奇数时,值为 0的表达式是( )。(分数:2.00)A.x%2=1B.x/2C.x%2!=0D.x%2=09.有以下程序:main()char *p10=“abc“, “aabdfg“, “dcdbe“, “a
5、bbd“, “cd“;printf(“%d/n“. strlen(p4);执行后输出结果是( )。(分数:2.00)A.2B.3C.4D.510.设有定义:int n1=0,n2,*P= n2,*q=n1;,以下赋值语句中与 n2=n1;语句等价的是( )。(分数:2.00)A.*p=*q;B.p=q;C.*p=n1;D.p=*q;11.下面程序段的输出为( )。#include “stdio.h“main()printf(“%d/n“, 122);(分数:1.00)A.0B.47C.48D.2412.一个算法应该具有“确定性”等 5个特性,下面对另外 4个特性的描述中错误的是( )。(分数:
6、1.00)A.有零个或多个输入B.有零个或多个输出C.有穷性D.可行性13.软件开发的结构化生命周期方法将软件生命周期划分成( )。(分数:1.00)A.定义、开发、运行维护B.设计阶段、编程阶段、测试阶段C.总体设计、详细设计、编程调试D.需求分析、功能定义、系统设计14.有以下程序:main()int m=12, n=34;printf(“%d%d“, m+, +n);printtf(“%d%d/n“, n+, +m);程序运行后的输出结果是( )。(分数:1.00)A.12353514B.12353513C.12343514D.1234351315.有以下程序:int fun(int n
7、)if(n=1)return 1;elsereturn(n+fun(n-1);main()int x;scanf(“%d“, x); x=fun(x); printf(“%d/n“, X);执行程序时,给变量 X输入 10,程序的输出结果是( )。(分数:1.00)A.5SB.S4C.65D.4516.设有以下语句:typedef struct Sint g; char h; T;则下面叙述中正确的是( )。(分数:1.00)_17.有以下程序:main()int a, b, d=25;a=d/10%9; b=a-1;printf(“%d,%d/n“, a, b);程序运行后的输出结果是( )
8、。(分数:1.00)A.6,1B.2,1C.6,0D.2,018.以下叙述中错误的是( )。(分数:1.00)A.C语言是一种结构化程序设计语言B.结构化程序由顺序、分支、循环三种基本结构组成C.使用三种基本结构构成的程序只能解决简单问题D.结构化程序设计提倡模块化的设计方法19.下列关于栈的叙述中正确的是( )。(分数:1.00)A.在栈中只能插入数据B.在栈中只能删除数据C.栈是先进先出的线性表D.栈是先进后出的线性表20.使用关系运算对系统进行操作,得到的结果是( )。(分数:1.00)A.属性B.元组C.关系D.关系模式21.有以下程序:main()int i, s=0, t=1, 2
9、, 3, 4, 5, 6, 7, 8, 9;for(i=0; i9; i+=2)s+=*(t+i); printf(“%d/n“, s);程序执行后的输出结果是( )。(分数:2.00)A.45B.20C.25D.3622.若要求从键盘读入含有空格字符的字符串,应使用函数( )。(分数:2.00)A.getc()B.gets()C.getchar()D.scanf()23.下面概念中,不属于面向对象方法的是( )。(分数:2.00)A.对象B.继承C.类D.过程调用24.以下选项中,不能作为合法常量的是( )。(分数:2.00)A.1.234e04B.1.234e0.4C.1.234e+4D.
10、1.234e025.用 C语言编写的代码程序( )。(分数:2.00)A.可立即执行B.是一个源程序C.经过编译即可执行D.经过编译解释即可执行26.一个教师可讲授多门课程,一门课程可由多个教师讲授,则实体教师和课程间的联系是( )。(分数:2.00)A.1:1联系B.1:m联系C.m:1联系D.m:n联系27.设有以下程序段:int x=0, s=0;while(!x!=0) s+=+X;printf(“%d“, s);则( )。(分数:2.00)A.运行程序段后输出 0B.运行程序段后输出 1C.程序段中的控制表达式是非法的D.程序段执行无限次28.在函数调用过程中,如果函数 funA调用
11、了函数 funB,函数 funB又调用了函数 funA,则( )。(分数:2.00)A.称为函数的直接递归调用B.称为函数的间接递归调用C.称为函数的循环调用D.C语言中不允许这样的递归调用29.有以下程序:#includestdio.h#include stdlib.hint fun(int n)int *p;P=(int,) malloc(sizeof(int);-p=n; return *p;main()int a;a=fun(10); printf(“%d/n“, a+fun(10);程序的运行结果是( )。(分数:2.00)A.0B.10C.20D.出错30.若有定义:int a23
12、;,以下选项中对 a数组元素正确引用的是( )。(分数:2.00)A.a2!1B.a23C.a03D.a11!31.以下叙述中正确的是( )。(分数:2.00)A.局部变量说明为 static存储类,其生存期将得到延长B.全局变量说明为 static存储类,其作用域将被扩大C.任何存储类的变量在未赋初值时,其值都是不确定的D.形参可以使用的存储类说明符与局部变量完全相同32.当用户要求输入的字符串中含有空格时,应使用的输入函数是( )。(分数:2.00)A.scanf()B.getchar()C.gets()D.getc()33.以下能正确定义一维数组的选项是( )。(分数:2.00)A.in
13、t a5=0, 112, 3, 4, 5;B.char a=0, 2, 3, 4, 5, /0;C.char a=A, b, C;D.int a5=“0123“;34.有以下程序:void sort (int a, int n)int i,j,t;for(i=0; in-1; i+)for(j=i+1; jn; j+)if(aiaj)t=ai;ai=aj;a1=t;main()int aa10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, i;sort(aa+2, 5);for(i=0; i10; i+)printf(“%d“, aai);(分数:2.00)A.1, 2, 3,
14、 4, 5, 6, 7, 8, 9, 10,B.1, 2, 7, 6, 3, 4, 5, 8, 9, 10,C.1, 2, 7, 6, 5, 4, 3, 8, 9, 10,D.1, 2, 9, 8, 7, 6, 5, 4, 3, 10,35.有如下程序:main()int n=9;while(n6)n-; printf(“%d“, n);该程序的输出结果是( )。(分数:2.00)A.987B.876C.8765D.987636.有以下程序:int f(int(分数:2.00)A.37.以下不正确的叙述是( )。(分数:2.00)A.在 C程序中,逗号运算符的优先级最低B.在 C程序中,APH
15、 和 aph是两个不同的变量C.若 a和 b类型相同,在计算了赋值表达式 aob后 b中的值将放入 a中,而 b中的值不变D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值38.软件开发离不开系统环境资源的支持,其中必要的测试数据属于( )。(分数:2.00)A.硬件资源B.通信资源C.支持软件D.辅助资源39.若整型变量 a、b、c、d 中的值依次为:1、4、3、2。则条件表达式 ab?a:cd?c:d 的值是( )。(分数:2.00)A.1B.2C.3D.440.软件工程的出现是由于( )。(分数:2.00)A.程序设计方法学的影响B.软件产业化的需要C.软
16、件危机的出现D.计算机的发展二、填空题(总题数:13,分数:26.00)41.在算法的 4个特征中,算法必须能在执行有限个步骤之后终止,指的是算法的 1 性。(分数:2.00)填空项 1:_42.对长度为 10的线性表进行冒泡排序,最坏情况下需要比较的次数为 1。(分数:2.00)填空项 1:_43.有一棵非空二叉树,其第 K层上最多有 1 个结点。(分数:2.00)填空项 1:_44.符合结构化原则的三种基本控制结构是:选择结构、循环结构和 1。(分数:2.00)填空项 1:_45.数据库设计分为以下 6个设计阶段:需求分析阶段、 1、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。(
17、分数:2.00)填空项 1:_46.以下程序段的输出结果是_。int i=9;printf(“%0/n“, i);(分数:2.00)填空项 1:_47.若变量 a、b 已定义为 int类型并赋值 21和 55,要求用 printf函数以 a=21,b=55 的形式输出,请写出完整的输出语句 1。(分数:2.00)填空项 1:_48.已有定义:char c=“; int a=1,b;(此处 C的初值为空格字符),执行 b=!ca;后 b的值为 1。(分数:2.00)填空项 1:_以下程序的功能是:求出数组 X中各相邻两个元素的和依次存放到 a数组中,然后输出。请填空。main()int x10,
18、 a9, i;fori=0; i10; i+) scanf(“%d“, xi);for( (9) ; i10; i+)ai-1=xi+ (10) ;for(i=0; i9; i+)printf(“%d“, ai);printf(“ “);(分数:2.00)填空项 1:_填空项 1:_以下程序中函数 f的功能是在数组 X的 n个数(假定 n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填空。#includestdio.hvoid f(int x, int n)int p0, p1, i, j, t, m;j=j=x0; p0=p1=0for (m=0
19、; mn; m+)if(xmi)i=xm; p0=m;else if(xmj)j=xm; p1=m;t=xp0; xp0=xn-1; xn-1=t;t=xp1; xp1= (11) ; (12) =t;main()int a10, u;for(u=0; u10; u+)scanf(“%d“, au);f(a, 10);for(u=0; u10; u+)printf(“%d“, au);printf(“/n“):(分数:2.00)填空项 1:_填空项 1:_49.以下程序运行后的输出结果是_。#include string.hchar *ss(char *s)char *p,t;p=s+1; t
20、=*s;while(,p),(p-1)=*p; p+;*(p-1)=t;return s;main()char *p, str10=“abcdefgh“;p=ss(str);printf(“%s/n“, p);(分数:2.00)填空项 1:_50.下面程序输出的结果是_。main()int i;int a33=1, 2, 3, 4, 5, 6, 7, 8, 9;for(i:0; i3; i+)printf(“%d“, a2-ii);(分数:2.00)填空项 1:_51.下面程序的运行结果是_#indude stdio.hmain()int Y,a;y=2, a=1;while(y-!=-1)d
21、oa*=y; a+; while(y-);printf(“%d, %d“, a, y);(分数:2.00)填空项 1:_二级 C语言笔试-205 答案解析(总分:96.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.线性表的顺序存储结构和线性表的链式存储结构分别是( )。(分数:2.00)A.顺序存取的存储结构、顺序存取的存储结构B.随机存取的存储结构、顺序存取的存储结构 C.随机存取的存储结构、随机存取的存储结构D.任意存取的存储结构、任意存取的存储结构解析:解析 顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式 LOC(ai)=
22、LOC(a1)+(i-1)L计算得到,从而实现了随机存取。对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。2.有以下程序:main()char k; int i;for(i=1; i3; i+)scanf(“%c“, k);switch(k)case0: printf(“another/n“);case 1: printf(“number/n“);程序运行时,从键盘输入:01回车,程序执行后的输出结果是( )。(分数:2.00)A.another numberB.another number anotherC.another number nu
23、mber D.number number解析:解析 本题考核的知识点是 for循环语句和 switch语句嵌套使用。switch 语句的执行过程是:在 switch后面的表达式的值和 case后面常量表达式的值吻合时,就执行后面的语句。如果在该语句的后面没有 break语句,则继续执行下一个 case,直到遇到 break语句或 switch多分支的结束,在 switch语句中,break 语句的作用是使流程跳出 switch结构,终止 switch语句的执行。本题中在 for循环中嵌套了 switch语句,每循环一次通过 scanf()函数从键盘上输入一个 k值,然后执行 switch语句。
24、3.(2S)以下叙述中错误的是( )。(分数:2.00)A.改变函数形参的值,不会改变对应实参的值B.函数可以返回地址值C.可以给指针变量赋一个整数作为地址值 D.当在程序的开头包含头文件 stdio.h时,可以给指针变量赋 NULL解析:解析 本题考查的知识点是:函数、指针。在 C语言中,指针变量是不能直接赋给一个整数作为地址值的。因此选项 C)是错误的。故应该选择 C)。4.一个关系中属性个数为 1时,称此关系为( )。(分数:2.00)A.对应关系B.单一关系C.一元关系 D.二元关系解析:解析 在关系模型数据库中,基本结构是二维表,这种二维表称为关系。关系的列称为属性,一个具有 N个属
25、性的关系称为 N元关系。5.下列有关数据库的描述,正确的是( )。(分数:2.00)A.数据库是一个 DBF文件B.数据库是一个关系C.数据库是一个结构化的数据集合 D.数据库是一组文件解析:解析 数据库(DataBase,DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,可被各个应用程序所共享。数据库中的数据具有“集成”、“共享”的特点。6.若以下选项中的变量已正确定义,则正确的赋值语句是( )。(分数:2.00)A.xb26.8%3;B.1+2=x2C.x3=0x12; D.x4=1+2=3;解析:解析 本题考核的知识点是 C语言中对变量赋值的应用。赋
26、值操作由赋值运算符“=”来完成,一般形式为变量=表达式,赋值的方向为由右向左,即将“=”右侧表达式的值赋给“=”左侧的变量,执行步骤是先计算再赋值。选项 A)中运算符“%”的运算对象必须为整数,而选项 A)中 268不为整数,故选项A)不正确;选项 B)将一个变量赋值给一个表达式,这在 C语言中是不允许的,故选项 B)不正确;选项 D)中是将一个常量 3赋值给一个表达式,故选项 D)不正确。所以,4 个选项中选项 C)符合题意。7.有以下程序:#include stdio.hvoid fun (int *s, int n1, int n2)int i,j. t;i=n1; j=n2;while
27、 (ij)t=si; si=sj; sj=t; i+; j-;main()int a10=1, 2, 3, 4, 5, 6, 7, 8, 9, 0, k;fun(a, 0, 3); fun(a, 4, 9); fun(a, 0, 9);for(k=0; k10; k+) printf(“%d“, ak); printf(“/n“);程序的运行结果是( )。(分数:2.00)A.049382716B.05948372615C.5678901234 D.0987651234解析:解析 函数 fun(int *s,int n1,int n2)的功能是对数组 s中的元素进行首尾互相调换。所以在主函数中
28、,当 fun(a,0,3)执行完后,数组 a10=(4,3,2,1,5,6,7,8,9,0;再执行fun(a,4,9),数组 a10=(4,3,2,1,0,9,8,7,6,5);再执行 fun(a,0,9)后,数组 a10=(5,6,7,8,9,0,1,2,3,4)。8.以下选项中,当 x为大于 1的奇数时,值为 0的表达式是( )。(分数:2.00)A.x%2=1B.x/2C.x%2!=0D.x%2=0 解析:解析 因为 X的值为大于 1的奇数,所以 x除以 2的余数等于 1,因此,选项 A)、C)中表达式的结果为真,不为 0;对于选项 B)来说,x 除以 2的商不会等于 0;选项 D)中表
29、达式的结果为假,即等于0。9.有以下程序:main()char *p10=“abc“, “aabdfg“, “dcdbe“, “abbd“, “cd“;printf(“%d/n“. strlen(p4);执行后输出结果是( )。(分数:2.00)A.2 B.3C.4D.5解析:解析 本题考核的知识点是指针数组的定义和 strlen()函数的应用。本题中首先定义了一个长度为 10的指针数组,并赋初值,因此执行 strlen (p4)后的返回值为字符串“cd”的长度为 2。所以,4个选项中选项 A)符合题意。10.设有定义:int n1=0,n2,*P= n2,*q=n1;,以下赋值语句中与 n2
30、=n1;语句等价的是( )。(分数:2.00)A.*p=*q; B.p=q;C.*p=n1;D.p=*q;解析:解析 本题考查的是指针的运算。题目中定义了两个变量 n1和 n2,又定义了两个指针 p和 q分别指向变量 n2和 n1。要通过指针实现 n2=n1,就是要将 q所指内容赋给 p所指内容,即*p=*q。所以应该选择 A)。11.下面程序段的输出为( )。#include “stdio.h“main()printf(“%d/n“, 122);(分数:1.00)A.0B.47C.48 D.24解析:解析 考查位运算的运算原理。为左移运算符,运算符的左边是移位对象:右边是整型表达式,代表左移
31、的位数,左移时,右端(低位)补 0;左端(高位)移出的部分舍弃。12.一个算法应该具有“确定性”等 5个特性,下面对另外 4个特性的描述中错误的是( )。(分数:1.00)A.有零个或多个输入B.有零个或多个输出 C.有穷性D.可行性解析:解析 本题考核的知识点是算法的性质。算法是为解决某个特定问题而采取的确定的且有限的步骤,一个算法应当具有以下 5个基本特性:1有穷性,就是指一个算法应当包含有限个操作步骤。2确定性,就是说算法中每一条指令必须有确切的含义,不能有二义性,对于相同的输入必能得出相同的执行结果。3有零个或多个输入。4可行性,就是说算法中指定的操作,都可以通过已经实现的基本运算执行
32、有限次实现。5有一个或多个输出。由此可知选项 B)不正确,所以,4 个选项中选项 B)符合题意。13.软件开发的结构化生命周期方法将软件生命周期划分成( )。(分数:1.00)A.定义、开发、运行维护 B.设计阶段、编程阶段、测试阶段C.总体设计、详细设计、编程调试D.需求分析、功能定义、系统设计解析:解析 通常将软件产品从提出、实现、使用维护到停止使用的过程称为软件生命周期。它可以分为软件定义、软件开发及软件运行维护 3个阶段。14.有以下程序:main()int m=12, n=34;printf(“%d%d“, m+, +n);printtf(“%d%d/n“, n+, +m);程序运行
33、后的输出结果是( )。(分数:1.00)A.12353514 B.12353513C.12343514D.12343513解析:解析 本题考查的是自加运算符的运用。自加运算符有前缀和后缀两种不同的形式,对于变量本身来说,无论是前缀还是后缀其作用的效果都是相同的,使变量值增 1。但作为表达式来说却有着不同的值,前缀时自增表达式的值是变量增 1后的值,而后缀时自增表达式的值是变量增 1前的值。本题程序开始定义了两个整型变量 m和 n,并分别初始化为 12和 34。第一条输出语句是按整型格式输出表达式 m+和+n 的值,根据前面所述,表达式 m+的值为 12,+n 的值为 35,所以第一次输出的字符
34、串是“1235”,执行完后 m和 n的值都自增 1,分别是 13和 35,第二条输出语句 n+的值为 35,+m 的值为 14,所以输出的字符串是 3514。15.有以下程序:int fun(int n)if(n=1)return 1;elsereturn(n+fun(n-1);main()int x;scanf(“%d“, x); x=fun(x); printf(“%d/n“, X);执行程序时,给变量 X输入 10,程序的输出结果是( )。(分数:1.00)A.5S B.S4C.65D.45解析:解析 本题考查的是递归算法的分析。一个直接或间接地调用自身的算法称为递归算法。在一个递归算法
35、中,至少要包含一个初始值和一个递归关系。本题的 fun()函数在 n等于 1时返回 1,而在其余情况下返回 n+fun(n-1),所以本题的递归算法可以这样来表示:fun(n)=1(n=1)(初始值)fun(n)=n+fun(n-1)(n1)(递归关系)此时不难看出,该递归算法实现的是计算 1+2+3+n,而且 n必须大于 0,否则会陷入死循环。故题目输出的结果是 1+2+3+10=55,应该选择 A)。16.设有以下语句:typedef struct Sint g; char h; T;则下面叙述中正确的是( )。(分数:1.00)_解析:解析 本题考核的知识点是结构体类型定义和结构体的基本
36、概念。结构体类型的定义格式为:strcut结构体名成员说明列表17.有以下程序:main()int a, b, d=25;a=d/10%9; b=a-1;printf(“%d,%d/n“, a, b);程序运行后的输出结果是( )。(分数:1.00)A.6,1B.2,1 C.6,0D.2,0解析:解析 本题主要考查的是 C语言中的整除、求余以及逻辑值的概念。在 C语言中,/号的两边如果都是整数的话,返回的结果也是整数,如果除不净则舍去小数部分。%是求余运算,它的运算对象只能是整型,运算结果是两数相除后所得的余数,当运算量为负数时,结果的符号与被除数相同。因此,执行语句“a=d/10%9;”后,
37、a=25/10%9=2%9=2。C 语言中没有专门的逻辑值,而是用整型值来代替。当整型值作逻辑值使用时,非零即表示“真”,零表示“假”,而逻辑值当整型值使用时,“真”等于 1,“假”等于 0。因此,执行语句“b=a(-1);”后输出结果为 2,1。18.以下叙述中错误的是( )。(分数:1.00)A.C语言是一种结构化程序设计语言B.结构化程序由顺序、分支、循环三种基本结构组成C.使用三种基本结构构成的程序只能解决简单问题 D.结构化程序设计提倡模块化的设计方法解析:解析 本题考查的知识点是:结构化程序设计。结构化程序由 3种基本结构组成:顺序结构、选择结构和循环结构。已经得到证明,由 3种基
38、本结构组成的算法结构可以解决任何复杂的问题。故本题中选项 C)是错误的。19.下列关于栈的叙述中正确的是( )。(分数:1.00)A.在栈中只能插入数据B.在栈中只能删除数据C.栈是先进先出的线性表D.栈是先进后出的线性表 解析:解析 栈是限定在一端进行插入与删除的线性表。栈是按照“先进后出”的或“后进先出”的原则组织数据的,因此,栈也被称为“先进后出”表或“后进先出”表。20.使用关系运算对系统进行操作,得到的结果是( )。(分数:1.00)A.属性B.元组C.关系 D.关系模式解析:解析 关系运算分为:传统的关系运算(集合运算)进行并、差、交集合运算的两个关系必须具有相同的关系模式,即相同
39、结构。在 Visual FoxtPro中没有提供传统的集合运算,可以通过其他操作或编写程序来实现。专门的关系运算选择:从关系中找出满足给定条件的元组的操作称为选择。投影:从关系模式中指定若干个属性组成新的关系称为投影。连接:连接是关系的横向结合。连接运算将两个关系模式拼接成一个更宽的关系模式,生成的新关系中包含满足连接条件的元组。21.有以下程序:main()int i, s=0, t=1, 2, 3, 4, 5, 6, 7, 8, 9;for(i=0; i9; i+=2)s+=*(t+i); printf(“%d/n“, s);程序执行后的输出结果是( )。(分数:2.00)A.45B.20
40、C.25 D.36解析:解析 统计 19 九个数中的奇数和,此题考查指向数组的指针。C 语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第 i+1个元素。程序运行的结果是1+3+5+7+9=25。22.若要求从键盘读入含有空格字符的字符串,应使用函数( )。(分数:2.00)A.getc()B.gets() C.getchar()D.scanf()解析:解析 scanf()语句用“空格”区别不同的字符串;getc()与 getchar()语句不能用于字符串的读入。23.下面概念中,不属于面向对象方法的是( )。(分数:2.00)A.对象B.继承C.类D.过程调
41、用 解析:解析 面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。面向对象方法从对象出发,发展出对象、类、消息、继承等概念。24.以下选项中,不能作为合法常量的是( )。(分数:2.00)A.1.234e04B.1.234e0.4 C.1.234e+4D.1.234e0解析:解析 本题考查的是 C语言中实型常量的指数表示法。实型常量的指数表示法是用字母 e(或 E)将一个实数的小数部分和指数部分分隔开。字母 e(或 E)之前是小数部分,之后是指数部分,这两部分都不能省略,且指数部分必须为整数。故选项 B)不正确。所以,4 个选项中选项 B)符合题意。25
42、.用 C语言编写的代码程序( )。(分数:2.00)A.可立即执行B.是一个源程序 C.经过编译即可执行D.经过编译解释即可执行解析:解析 本题考核的知识点是 C程序的基本概念。C 语言一种高级语言,C 语言源程序经过 C语言程序编译之后,生成一个后缀为.obj 的二进制文件(称为目标文件),最后还要由称为“连接程序”(Link)的软件,把此.obj 文件与 C语言提供的各种库函数连接在一起,生成一个后缀.exe 的可执行文件。显然C语言不能立即执行,故选项 A)错误。根据以上定义,选项 C)和选项 D)错误,所以,4 个选项中选项 B)符合题意。26.一个教师可讲授多门课程,一门课程可由多个
43、教师讲授,则实体教师和课程间的联系是( )。(分数:2.00)A.1:1联系B.1:m联系C.m:1联系D.m:n联系 解析:解析 两个实体间的联系可以归纳为 3种类型:一对一联系:一对_的联系表现为主表中的每一条记录只与相关表中的一条记录相关联。一对多联系或多对一联系:一对多的联系表现为主表中的每一条记录与相关表中的多条记录相关联。多对多联系:多对多的联系表现为一个表中的多个记录在相关表中同样有多个记录与其匹配。一个教师可讲授多门课程,一门课程可由多个教师讲授,所以实体教师和课程间的联系是多对多的联系。27.设有以下程序段:int x=0, s=0;while(!x!=0) s+=+X;pr
44、intf(“%d“, s);则( )。(分数:2.00)A.运行程序段后输出 0B.运行程序段后输出 1C.程序段中的控制表达式是非法的D.程序段执行无限次解析:解析 本题中,“!”表示逻辑非运算符,“!=“表示不等于运算符,逻辑非运算符比不等于运算符的优先级高。28.在函数调用过程中,如果函数 funA调用了函数 funB,函数 funB又调用了函数 funA,则( )。(分数:2.00)A.称为函数的直接递归调用B.称为函数的间接递归调用 C.称为函数的循环调用D.C语言中不允许这样的递归调用解析:解析 本题考核的知识点是函数递归调用的基本概念。在 C语言中所谓函数的递归是指在调用一个函数
45、的过程中,又出现了直接或间接地调用该函数本身,直接调用该函数本身的称为函数递归,而间接调用该函数称为函数的间接递归调用。显然题目中所说的函数调用为函数的间接递归调用。所以,4 个选项中选项 B)符合题意。29.有以下程序:#includestdio.h#include stdlib.hint fun(int n)int *p;P=(int,) malloc(sizeof(int);-p=n; return *p;main()int a;a=fun(10); printf(“%d/n“, a+fun(10);程序的运行结果是( )。(分数:2.00)A.0B.10C.20 D.出错解析:解析 本
46、题考查的是动态内存分配。题目中的 fun()函数,首先定义了一个 int型指针变量 p,然后动态分配一个 int型大小的内存空间给它,并将它初始化为参数 n的值,然后返回这个值。虽然看起来很复杂,但其实它仅仅就是将传递给它的参数保存了一份然后返回这个值。所以在主函数中,a=fun(10)令 a变为 10,然后调用 Drintf()函数输出 a+fun(10)的值,也就是 10+10=20,所以应该选择 C)。30.若有定义:int a23;,以下选项中对 a数组元素正确引用的是( )。(分数:2.00)A.a2!1B.a23C.a03D.a11! 解析:解析 本题主要考查的是二维数组的运用。本
47、题定义的二维数组 a23,其下标范围分别是01 和 02。因此,选项 A)、B)和 C)都不正确。选项 D)中,表达式 11 的值是“假”,可以被看作整数“0”,表达式!1 的值也是“假”,所以整个 a11!1就是 a00,这是对 a数组元素的正确引用,故应该选择 D)。31.以下叙述中正确的是( )。(分数:2.00)A.局部变量说明为 static存储类,其生存期将得到延长 B.全局变量说明为 static存储类,其作用域将被扩大C.任何存储类的变量在未赋初值时,其值都是不确定的D.形参可以使用的存储类说明符与局部变量完全相同解析:解析 本题考核的知识点是变量的生成期与作用域。静态局部变量在整个程序运行期间,静态局部变