[计算机类试卷]国家二级(C语言)机试模拟试卷56及答案与解析.doc

上传人:fatcommittee260 文档编号:503180 上传时间:2018-11-29 格式:DOC 页数:32 大小:219.50KB
下载 相关 举报
[计算机类试卷]国家二级(C语言)机试模拟试卷56及答案与解析.doc_第1页
第1页 / 共32页
[计算机类试卷]国家二级(C语言)机试模拟试卷56及答案与解析.doc_第2页
第2页 / 共32页
[计算机类试卷]国家二级(C语言)机试模拟试卷56及答案与解析.doc_第3页
第3页 / 共32页
[计算机类试卷]国家二级(C语言)机试模拟试卷56及答案与解析.doc_第4页
第4页 / 共32页
[计算机类试卷]国家二级(C语言)机试模拟试卷56及答案与解析.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、国家二级( C语言)机试模拟试卷 56及答案与解析 一、选择题 1 设循环队列为 Q(1:m),其初始状态为 front=rear=m。经过一系列入队与退队运算后, front=20, rear=15。现要在该循环队列中寻找最小值的元素,最坏情况下需要比较的次数为 ( A) 5 ( B) 6 ( C) m-5 ( D) m-6 2 某二叉树的前序序列为 ABCDEFG,中序序列为 DCBAEFG,则该二叉树的后序序列为 ( A) EFGDCBA ( B) DCBEFGA ( C) BCDGFEA ( D) DCBGFEA 3 下列叙述中正确的是 ( A)在链表中,如果每个结点有两个指针域,则该

2、链表一定是非线性结构 ( B)在链表中,如果有两个结点的同一个指针域的值相等,则该链表一定是非线性结构 ( C)在链表中,如果每个结点有两个指针域,则该链表一定是线性结构 ( D)在链表中,如果有两个结点的同一个指针域的值相等,则该链表一定是线性结构 4 下列叙述中错误的是 ( A)在带链队列中,队头指针和队尾指针都是在动态变化的 ( B)在带链栈中,栈顶指针和栈底指针都是在动态变化的 ( C)在带链栈中,栈顶指针是在动态变化的, 但栈底指针是不变的 ( D)在带链队列中,队头指针和队尾指针可以指向同一个位置 5 软件生命周期中,确定软件系统要做什么的阶段是 ( A)需求分析 ( B)软件测试

3、 ( C)软件设计 ( D)系统维护 6 下面对软件测试和软件调试有关概念叙述错误的是 ( A)严格执行测试计划,排除测试的随意性 ( B)程序调试通常也称为 Debug ( C)软件测试的目的是发现错误和改正错误 ( D)设计正确的测试用例 7 下面属于系统软件的是 ( A)财务管理系统 ( B)编译软件 ( C)编辑软件 Word ( D)杀毒软件 8 将 E-R图转换为关系模式时, E-R图中的实体和联系都可以表示为 ( A)属性 ( B)键 ( C)关系 ( D)域 9 有两个关系 R与 S如下,由关系 R和 S得到关系 T,则所使用的操作为( A)并 ( B)自然连接 ( C)笛卡尔

4、积 ( D)交 10 在数据管理的三个发展阶段中,数据的共享性好且冗余度最小的是 ( A)人工管理阶段 ( B)文件系统阶段 ( C)数据库系统阶段 ( D)面向数据应用系统阶段 11 以下叙述中错误的是 ( A)书写风格良好的程序执行效率高 ( B)书写风格良好的程序易读性好 ( C) C程序可以在一行上写多条语句 ( D) C程序允许将一条语句分写在多行上 12 在 C语言中,以下选项中不能正确表示 101000 之值的是 ( A) 1.0E4.0 ( B) 1.00E+04 ( C) 1.00E+04 ( D) 1.00E+04 13 设有定义: int a=0,b=1,c=1; 以下选

5、项中,表达式值与其它三个不同的是 ( A) b=a=c ( B) a=b=c ( C) a=c=b ( D) c=a!=c 14 设有两行定义语句: int scanf; float case; 则以下叙述正确的是 ( A)两行定义语句都不合法 ( B)两行定义语句都合法 ( C)第 1行语句不合法 ( D)第 2行语句不合法 15 设有定义: double x=2.12;,以下不能完整输出变量 x值的语句是 ( A) printf(“x=%5.0fn“,x); ( B) printf(“x=%fn“,x); ( C) printf(“x=%lfn“,x); ( D) printf(“x=%0

6、.5fn“,x); 16 设有定义: int a,b; float x,y; ,则以下选项中对语句所作的注释叙述错误的是 ( A) scanf(“%d%d%f“, /* 多余的格式符 %f完全不起作用 */ ( B) scanf(“%d%d“, /* 多余的输入项不能获得输入数据 */ ( C) scanf(“%d%f%d“, /* 输入项与格式符类型不匹配,变量 b和 x得不到正确的输入数据 */ ( D) scanf(“Input:%d%d“, /* 格式串中允许加入格式符 以外的字符串 */ 17 有如下程序 #include stdio.h main() int a = 0, b =

7、1; if (+a = b+) printf(“T“); else printf(“F“); printf(“a=%d,b=%dn“, a, b); printf(“n“); 程序运行后的输出结果是 ( A) Ta=0,b=1 ( B) Fa=1,b=2 ( C) Ta=1,b=2 ( D) Fa=0,b=2 18 有如下程序 #include stdio.h main() int i = 1; for (printf(“%d“, i); i 4; i+) printf(“%d“, i); printf(“n“); 程序运行后的输出结果是 ( A) 1123 ( B) 123 ( C) 123

8、 ( D) 1 19 有如下程序 #include stdio.h main() char ch = A; while (ch D) printf(“%d“, ch - A); ch+; printf(“n“); 程序运行后的输出结果是 ( A) ABC ( B) 12 ( C) abc ( D) 123 20 有如下程序 #include stdio.h main() if (0 = 0) putchar(X); if (0 = 0) putchar(Y); if (a b) putchar(Z); printf(“n“); 程序运行后的输出结果是 ( A) X ( B) XYZ ( C)

9、YZ ( D) Y 21 有如下程序 #include stdio.h main() char ch = M; while (ch != K) ch -; putchar(ch); printf(“n“); 程序运行后的输出结果是 ( A) MN ( B) LK ( C) OP ( D) MM 22 有以下程序段 scanf(“%d%d%d“, if(a b) a=b; if(a c) a=c; printf(“%dn“,a); 该程序段的功能是 ( A)输出 a、 b、 c中的最小值 ( B)输出 a、 b、 c中的最大值 ( C)输出 a的原始值 ( D)输出 a、 b、 c中值相等的数值

10、 23 以下关于函数的叙述中正确的是 ( A)函数调用必须传递实参 ( B)函数必须要有形参 ( C)函数必须要 有返回值 ( D)函数形参的类型与返回之的类型无关 24 设有定义: int a,b10,*c=NULL,*p;,则以下语句错误的是 ( A) p=a; ( B) p=b; ( C) p=c; ( D) p= 25 有以下程序 #include stdio.h void fun(int *x,int s,int e) int i,j,t; for(i=s,j=e; i j; i+,j-) t=*(x+i); *(x+i)=*(x+j); *(x+j)=t; main() int m

11、=0,1,2,3,4,5,6,7,8,9,k; fun(m,0,3); fun(m+4,0,5); fun(m,0,9); for(k=0; k 10;k+) printf(“%d“,mk); 程序的运行结果是 ( A) 4567890123 ( B) 3210987654 ( C) 9876543210 ( D) 0987651234 26 设有 n个数按从大到小的顺序存放在数组 x中,以下能使这 n个数在 x数组中的顺序变为从小到大的是 ( A) for(i=0;i n/2;i+) t=xi; xi=xn-i-1; xn-i-1=t; ( B) for(i=0;i n;i+) t=xi;

12、xi=xn-i-1; xn-i-1=t; ( C) for(i=0;i n/2;i+) t=xi; xi=xn-i+1; xn-i+1=t; ( D) for(i=0;i n/2;i+=2) t=xi; xi=xn-i-1; xn-i-1=t; 27 设有一个 M*N的矩阵已经存放在一个 M行 N列的数组 x中,且有以下程序段 sum=0; for(i=0;i M;i+) sum+=xi0+xiN-1; for(j=1;j N-1;j+) sum+=x0j+xM-1j; 以上程序段计算的是 ( A)矩阵两条对角线元素之和 ( B)矩阵所有不靠边元素之和 ( C)矩阵所有元素之和 ( D)矩阵所

13、有靠边元素之和 28 有以下程序 #include stdio.h main() int s32= 1,2,3,4,5,6,*ps3,k; for(k=0;k 3;k+) psk=sk; printf(“%d “,*(psk+1); 程序的运行结果是 ( A) 2 4 6 ( B) 1 3 5 ( C) 1 2 3 ( D) 4 5 6 29 设有以下定义 char s1=“0123“; char s2=0,1,2,3; 则以下叙述正确的是 ( A)数组 s1的长度小于 s2的长度 ( B)数组 s1和 s2的长度相同 ( C)数组 s1的长度大于 s2的长度 ( D)数组 s1和 s2完全等

14、价 30 以下能正确进行字符串赋值的语句组是 ( A) char *ch; ch=“abc“; ( B) char ch =a,b,c; ( C) char ch3=“abc“; ( D) char ch4; ch=“abc“; 31 有以下程序 #include stdio.h int fun(char *s) char *p=s; while( *p+ != 0); return(p-s); main() char *p=“01234“; printf(“%dn“,fun(p); 程序的运行结果是 ( A) 6 ( B) 5 ( C) 4 ( D) 3 32 有以下程序 #include

15、stdio.h main() char *mm4=“abcd“,“1234“,“mnop“,“5678“; char *pm=mm; int i; for(i=0; i 4; i+) printf(“%s“,pmi+i); printf(“n“); 程序的运行结果是 ( A) abcd1234mnop5678 ( B) abcd234op8 ( C) a2o8 ( D) a1m5 33 有以下程序 #include stdio.h void fac2(int ); void fac1(int n) printf(“*“); if(n 0) fac2(n-1); void fac2(int n)

16、 printf(“#“); if(n 0) fac2(-n); main() fac1(3); 程序的运行结果是 ( A) *# ( B) *#* ( C) *# ( D) *#*# 34 有以下程序 #include stdio.h int fun(int n) static int t=1; int i=1; for( ; i =n; i+) t*=i; return t; main() int t=1,i; for(i=2;i 4; i+) t+=fun(i); printf(“%dn“,t); 程序的运行结果是 ( A) 8 ( B) 11 ( C) 15 ( D) 4 35 有以下程

17、序 #include stdio.h #include string.h #include stdlib.h main() char *p1,*p2; p1=p2=(char *)malloc(sizeof(char)*10); strcpy(p1,“malloc“); strcpy(p2,p1+1); printf(“%c%cn“,p10,p20); 程序的运 行结果是 ( A) aa ( B) ma ( C) am ( D) mm 36 设有定义: struct int n; float x; s2,m2=10,2.8,0,0.0; 则以下赋值语句中正确的是 ( A) s0=m1; ( B

18、) s=m; ( C) s.n=m.n; ( D) s2.x=m2.x; 37 有以下程序 #include stdio.h struct S int a; int *b; main() int x1 =3,4,x2 =6,7; struct S x =1,x1,2,x2; printf(“%d,%dn“,*x0.b,*x1.b); 程序的运行结果是 ( A) 1,2 ( B) 3,6 ( C) 4,7 ( D)变量的地址值 38 有以下程序 #include stdio.h #include string.h typedef struct char name10; char sex; int

19、 age; STU; void fun(STU *t) strcpy(*t).name,“Tong“); (*t).age+; main() STU s2=“Hua“,m,18,“Qin“,f,19; fun(s+1); printf(“%s,%d,%s,%dn“,s0.name,s0.age,s1.name ,s1.age ); 程序运行后的输出结果是 ( A) Hua,18,Tong,20 ( B) Hua,18,Qin,19 ( C) Tong,19,Qin,19 ( D) Hua,19,Tong,19 39 以下不属于 C语言位运算符的是 ( A) ! ( B) | ( C) ( D)

20、 40 有以下程序段 FILE *fp; if( (fp=fopen(“test.txt“, “w“) = NULL) printf(“不能打开文件! “); exit(0); else printf(“成功打开文件! “); 若指定文件 test.txt不存在,且无其他异常,则以下叙述错误的是 ( A)输出 “不能打开文件! “ ( B)输出 “成功打开文件! “ ( C)系统将按指定文件名新建文件 ( D)系统将为写操作建立文本文件 二、程序填空题 41 下列给定程序中,函数 fun的功能是进行数字字符转换。若形参 ch中是数字字符 0一 9,则将 0转换成 9, 1转换成 8, 2转换成

21、 7, , 9转换成 0;若足其他宁符 则保持不变;并将转换后的结果作为函数值返回。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h /*found*/ 【 1】 fun(char ch) /*found*/ if(ch =0 【 2】 ) /*found*/ return9一 (ch【 3】 ); return ch; main() char c1, c2; printf(“ nThe result: n”); c1=2; c2=fun(c1); pri

22、ntf(“c1= c c2= c n”, c1, c2), c1=8; c2=fun(c1); printf(“cl= c c2= c n”, c1, c2), c1=a; c2=fun(c1), printf(“c1= C c2= c n”, c1, c2), 三、程序修改题 42 下列给定程序中函数 fun的功能是:求两个非零正整数的最大公约数,并作为函数值返回。 例如,若 num1和 num2分别为 49和 21,则输出的最大公约数为 7;若 num1和hUm2分别为 27和 81,则输出的最大公约数为 27。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main函数,不得

23、增行或删行。也不得更改程序的结构 ! 试题程序: #include stdio h int fun(int a, int b) int r, t; if(a b) /*found*/ t=a, b=a, a=t; r=a b; while(r!=0) a=b, b=r; r=a b, /*found*/ return(a); void main() int num1 , hum2 , a; printf(”Input num1 num2: ”); scanf(” d d”, 四、程序设计题 43 学生的记录由学号和成绩组成, N名学生的数据已放入主函数中的结构体数组s中。请编写函数 fun,其

24、功能足:函数返回指定学号的学生数据,指定的学号在主函数中 输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置一1,作为函数值返同 (用于字符串比较的函数是 stremp, stremp(a, b)函数中,当 a和 b字符串相等时返回值为 0)。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include string h #include stdio h #include stdlib h #defihe N 16 typedef struct char num10; int S; STR

25、EC; STREC fun(STREC*a, Char*b) void main() STREC sN=“GA005”, 85), “GA003”, 76, “GA002”, 69, “GA004”, 85, “GA001”, 91, “GA007”, 72, “GA008”, 64, “GA006”, 87), “GA015”, 85, (“GA013”, 91, “GA012”, 64, “GA014”, 91, “GA011”, 77, “GA017”, 64, “GA018”, 64, “GA016”, 72; STREC h; char m10; int i; printf(“The

26、 original data: n”); for(i=0; i N, i+) if(i 4=0) printf(“ n”), *每行输出 4个学生记录 * printf(“ s 3d”, si num, si s); printf(“ n nEnter the number: ”); gets(m); h=fun (s, m); printf(“The data: ”); printf(“ n S 4d n”, h num, h s); printf(“n”); 国家二级( C语言)机试模拟试卷 56答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 循环队列是队列的一种顺序存储结构,

27、用队尾指针 rear指向队列中的队尾元素,用排头指针指 向排头元素的前一个位置,因此,从排头指针 front指向的后一个位置直到队尾指针 rear指向的位置之间所有的元素均为队列中的元素,队列初始状态为 front=rear=m,当 front=20, rear=15时,队列中有 m-20+15=m-5个元素,比较次数为 m-6次, D选项正确。 2 【正确答案】 D 【试题解析】 二叉树遍历可以分为 3种:前序遍历(访问根节 点在访问左子树和访问右子树之前)、中序遍历(访问根节点在访问左子树和访问右子树两者之间)、后序遍历(访问根节点在访问左子树和访问右子树之后)。二叉树的前序序列为 ABC

28、DEFG, A为根节点。中序序列为 DCBAEFG,可知 DCB为左子树节点, EFG为右子树节点。同理 B为 C父节点 ,C为 D父节点,且 CD均为 B的同侧子树节点。同理 E为 F根节点, F为 G根节点,且 FG为 E同侧子树节点。二叉树的后序序列为 DCBGFEA, D选项正确。 3 【正确答案】 C 【试题解析】 一个非空的数据结构如果满足以下两个条件:有且 只有一个根节点;每一个节点最多有一个前件,也最多有一个后件,称为线性结构。双向链表节点有两个指针域,指向前一个节点的指针和指向后一个节点的指针,也是线性结构, A选项错误。如果有两个节点的同一个指针域的值相等,说明一个节点有两

29、个前件,属于非线性结构, B选项正确, D选项正确。非线性结构主要是指树形结构和网状结构,可以满足每个节点有两个指针域的条件, C选项正确。 4 【正确答案】 B 【试题解析】 带链的队列就是用一个单链表来表示队列,队列中的每一个元素对应链表中的一个节点,在入队和退队过程中,队头指针 和队尾指针都是在动态变化的, A选项叙述正确,循环队列中当队列满或者空时,队头指针和队尾指针指向同一个位置, D选项叙述正确。栈也可以采用链式存储结构表示,把栈组织成一个单链表,这种数据结构可称为带链的栈,入栈和退栈过程中栈底指针不变,栈顶指针随之变化, B选项叙述错误, C选项叙述正确。故选择 B选项。 5 【

30、正确答案】 A 【试题解析】 软件生命周期各阶段的主要任务是:问题定义、可行性研究与计划制定、需求分析、软件设计、软件实现、软件测试、运行维护。其中需求分析是指对待开发软件提出的需求进行分析并给出详 细定义,也即是确定软件系统要做什么, A选项正确。 6 【正确答案】 C 【试题解析】 软件测试就是在软件投入运行之前,尽可能多地发现软件中的错误,但改正错误又调试完成, C选项叙述错误。软件测试应在测试之前制定测试计划,并严格执行,排除测试随意性,并且需要设计正确的测试用例, AD选项叙述正确。调试(也称为 Debug,排错)是作为成功测试的后果出现的步骤而调试是在测试发现错误之后排除错误的过程

31、, B选项叙述正确。故选择 C选项。 7 【正确答案】 B 【试题解析】 计算机软件按功能分为应用软件、 系统软件、支撑软件(或工具软件)。系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件,如操作系统、数据库管理系统、编译程序、汇编程序和网络软件等, B选项正确。 A、 C、 D选项为应用软件。 8 【正确答案】 C 【试题解析】 采用 E-R方法得到的全局概念模型是对信息世界的描述,并不适用于计算机处理,为了适合关系数据库系统的处理,必须将 E-R图转换成关系模式。这就是逻辑设计的主内容。 E-R图是由实体、属性和联系组成,而关系模式中只有一种元素 -关系。 C选项

32、正确。 9 【正确答 案】 C 【试题解析】 用于查询的 3个操作无法用传统的集合运算表示,引入的运算为投影运算、选择运算、笛卡尔积。常用的扩充运算有交、除、连接及自然连接等。并: RS是将 S中的记录追加到 R后面。交: RS结果是既属于 R又属于 S的记录组成的集合。上述两种操作中,关系 R与 S要求有相同的结构,故 A、 D选项错误。自然连接:去掉重复属性的等值连接。自然连接要求两个关系中进行,比较的是相同的属性,并且进行等值连接,本题中结果 T应为空, B选项错误。若 T为笛卡尔积,结果为 5元关系,元组个数为 4,且计算结果与题目相符, C选项正确。 10 【正确答案】 C 【试题解

33、析】 数据管理技术的发展经历了 3个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。由下表可知 C选项正确。11 【正确答案】 A 【试题解析】 书写风格良好的程序易读性好,方便团队合作,分模块来完成复杂的程序设计, B选项叙述正确。但是书写风格与程序执行效率无关,程序执行效率与程序的数据结构有关,由算法的时间复杂度和空间复杂度决定, A选项叙述错误。 C语言程序书写规范中,良好的书写习惯中一般一行上写一条语句,这样方便阅读,但是一行写多条语句是符合 C程序编 写规则的, C选项叙述正确。 C程序允许将一条较长的语句分写在多行, D选项叙述正确。叙述中错误的是 A选项 ,故选择 A选项。 1

34、2 【正确答案】 A 【试题解析】 实型常量用带小数点的数字表示,其值有两种表达形式,分别为十进制小数形式和指数形式。指数形式由十进制数加阶码标志 “ “或 “ “以及阶码(只能为整数,可以带符号)组成。指数形式中阶码必须是整型常量,而 A选项中 4.0是浮点数,所以 A选项不能正确表示 101000 之值, B、 C、 D选项都表示正确并且值为 10000,故选择 A选项。 13 【正确答案】 A 【试题解析】 赋值运算结合性为由右向左结合,赋值运算符左值为变量,右值为变量或常量,且左右两边数据类型相同才能实现赋值。成功实现赋值后以左值为返回值。逻辑表达式成立则返回 1,不成立返回 0。 A

35、选项逻辑表达式 a=c不成立( 0),则 b=0,表达式值为 0。 B选项中将 c赋值给 b, b=1,再将 b赋给 a,a=1,表达式值为 1。 C选项逻辑表达式 c=b成立( 1),则 a=1,表达式值为1。 D选项逻辑表达式 a!=c成立( 1),则 c=1,表达式值为 1。 A选项与其他选项不同, A选项正确。 14 【正确答案】 D 【试题解析】 合法的标识符由字母(大、小写均可)、数字和下划线组成,并且必须以字母或下划线开头。关键字是指被语言保留的,不能用作其他用途的一些标识符,它们在程序中都代表着固定的含义,用户不可重新定义。预定义标识符是系统已经有过定义的标识符,用户可以重新定

36、义,可以作为变量名。 scanf为库函数名,属于预定义标识符,可以被用户重定义,所以第一行语句合法。 case为关键字,是选择结构 switch语句中的关键字,不可被用户重定义,所以第二行语句不合法。 D选项正确。 15 【正确答案】 A 【试题解 析】 float类型变量有效位数为 67位, double类型变量有效位数为1516位。 printf函数控制字符 %f输出 float类型, %lf输出 double类型。对于float或 double型数据,在指定数据输出宽度的同时,也可以指定小数位的位数,格式为 %m.nf,表示数据输出总的宽度为 m位,其中小数部分占 n位。当数据的小数位多

37、于指定宽度时,截去右边多余的小数,并对截去的第一位小数做四舍五入处理;而当数据的小数位少于指定宽度时,在小数的右边补零;当 m小于有效位数时,整数部分输出所有有效数字并且自动对齐 ,小数部分按照 n指定位数输出。 A选项按照 float格式输出数据,宽度为 5位,保留小数 0位,输出为2,不能完整输出 x,选择 A选项。 B选项按照 float格式输出数据,输出为2.120000。 C选项按照 double格式输出数据,输出为 2.120000。 D选项按照 float格式输出数据,保留小数位数为 5,输出为 2.12000。 16 【正确答案】 A 【试题解析】 A选项中 %f是起作用的,程

38、序从键盘正确的读入前两个数据并且保存在指定的地址,读入第三个数据后,将其放入缓冲区,然后寻找应该存放的地址,因为没有 找到,程序会发生错误而中断, A选项注释错误,所以选择 A选项。 B选项由于 scanf接收数据只有两个,所以变量 x得不到赋值,注释正确。 C选项 scanf会按照 float类型读取输入的第二个数据并且保存为 int类型,由于两种类型的存储形式与所占内存单元均不同,所以 b得不到正确的赋值,注释正确。在使用 scanf函数时,如果除了格式说明字符和附加格式字符外,还有其他字符,则在输入数据时要求按一一对应的位置原样输入这些字符,故 D选项注释正确。 17 【正确答案】 C

39、【试题解析】 程序执行过程为:判断 +a = b+是否成立, +a前置运算先加1,则 a=1,b+后置运算先取值,则 b=1,也即是判断 1=1,成立,输出 T,之后b=2,输出 a=1,b=2。 C选项正确。 18 【正确答案】 A 【试题解析】 for循环语句格式: for(exp1;exp2;exp3)。 exp1通常用来给循环变量赋初值; exp2通常是循环条件,以便决定是否继续执行循环体; exp3通常可用来修改循环变量的值。程序执行过程为: for循环开始,输出 i=1,判断 i 4成立,输出 i=1,之后 i=2;判断 i 4成立,输出 i=2,之后 i=3;判断 i 4成立,输

40、出 i=3,之后 i=4;判断 i 4不成立,退出循环。程序运行后的输出结果是 1123,A选项正确。 19 【正确答案】 B 【试题解析】 字符之间做加减法,是用其 ASCII码进行加减,但是不能超过范围 0255,否则不是合法的字符。 while循环语句一般形式为: while(表达式 )循环体 ,执行过程为,首先判断表达式,成立(非 0)则执行循环体,不成立( 0)则退出循环。程序执行过程为:定义字符变量 ch = A,判断 A D成立,输出0, ch=B;判断 B D成立,输出 1, ch=C;判断 C D成立,输出 2,ch=D;判断 D D不成立,退出循环。程序运行后的输出结果是

41、012, B选项正确。 20 【正确答案】 A 【试题解析】 字符所占内存为一个字节,故其 ASCII码值不能超过范围 0255,其中一些特殊字符 0的 ASCII码为 0,字符 0ASCII码值为 48,字符 aASCII码值为 97,字符 bASCII码值为 98。 putchar函数是向标准输出设备上输出一个字符。程序执行过程为:判断 0=0成立,输出 X,判断 0=0不成立,不输出,判断 a b不成立,不输出。 A选项正确。 21 【正确答案】 B 【试题解析】 字符之间做加减法,是用其 ASCII码进行加减,但是不能超过范围 0255,否则不是合法的字符。 while循环语句一般形式

42、为: while(表达式 )循环体 ,执行过程为,首先判断表达式,成立(非 0)则执行循环体,不成立( 0)则退出循环。程序执行过程为:定义字符变量 ch = M,判断 ch != K成立,ch=L,输出 L;判断 ch != K成立, ch=K,输出 K;判断 ch != K不成立,退出循环。程序运行后的输出结果是 LK, B选项正确。 22 【正确答案】 A 【试题解析】 程序执行过程为:从键盘读入三个整型数据,依次赋给 a,b,c,判断 a b,若成立将较小的值 b赋值给较大的值 a,判断 a c,若成立将较小的值c赋值给较大的值 a,if实现了将从键盘读入的数据中最小值赋给 a的功能,

43、最后输出 a,也即输出最小值。 A选项正确。 23 【正确答案】 D 【试题解析】 函数参数有两种:形式参数和实际参数,前者函数定义时函数名后括号内是形参列表,每个形参由类型和名称 两部分组成。在定义函数时,系统并不给形参分配存储单元,当然形参也没有具体的数值,所以称它为形参,也称虚参。形参在函数调用时,系统暂时给它分配存储单元,以便存储调用函数时传来的实参。一旦函数结束运行,系统马上释放相应的存储单元;后者函数调用时函数名后括号内是实参列表,实参可以是常量、变量或表达式。当函数返回到主调函数时,有时会有数据带给主调函数,也可以没有任何数据返回给主调函数,返回的数据称为函数的返回值。函数形参的

44、类型与返回值的类型无关, D选项正确。函数可以没有形参, B选项错误。函数可以没有返回值, C选项错 误。函数如果没有形参也就不必传递实参, A选项错误。 24 【正确答案】 A 【试题解析】 一个变量的地址是一个值,可以把这个地址值存放到另一个变量里保存。这种专门用来存放变量地址的变量,称为 “指针变量 “。所以对指针变量赋值,值必须是地址值。 a为整型变量不是地址值,不能赋值给指针变量, A选项语句错误。数组名为数组首地址,所以 b为地址可以赋值给指针变量, B选项语句正确。 c为指针,初始化为 NULL,与 p均为整型指针,可以将其赋值给 p, C选项语句正确。 ch=“abc“, A选

45、项正确。 另一种是定义一个字符指针变量,并且初始化为一个字符串的首地址: char *ch=“abc“。 B选项定义一个字符数组并为其赋初值,因为没有字符串结束标志,所以字符数组不是一个字符串, B选项错误。 C选项定义字符数组,长度为 3,用字符串 “abc“初始化,但是字符串的结束标志由于数组长度不够并未放入数组,所以数组不是一个完整的字符串, C选项错误。 D选项正确定义了数组,长度为 4,但是不能用这样的形式 ch=“abc“为数组赋值 “,需要按照元素赋值, D选项错误。 31 【正确答案】 A 【试题解析】 程序执行过 程为:定义字符串指针 p并为其初始化为 “01234“,调用函

46、数 fun(p),将指针传入函数。 while循环找到字符串的束符地址,然后使这个指针指向结束符下一个单元,结束循环。返回字符串首地址与结束符下一个地址之差,也即是字符串长度加 1。输出地址差为 6, A选项正确。 32 【正确答案】 B 【试题解析】 程序执行过程为:定义指针数组,长度为 4,并为其初始化为 4个字符串。定义指向指针的指针,并为其初始化为指针数组首地址。 for循环依次输出 4个字符串,第 i个字符串从第 i个下标值处开始输出到字符串结束,即第 一个字符串输出 abcd,第二个字符串输出 234,第三个字符串输出 op,第四个字符串输出 8。程序的运行结果是 abcd234o

47、p8, B选项正确。 33 【正确答案】 A 【试题解析】 函数 fac1中嵌套函数 fac2,而 fac2为递归函数。程序执行过程为:调用函数 fac1(3),输出 *, 3 0成立,调用函数 fac2(2),输出 #, 2 0成立,调用 fac2(1),输出 #, 1 0成立,调用 fac2(0),输出 #, 0 0不成立,返回fac2(1),再返回 fac2(2),再返回 fac1(3),函数调用结束。程序 的运行结果是:*#, A选项正确。 34 【正确答案】 C 【试题解析】 static变量又称为静态变量,编译时,将其分配在内存的静态存储区中,在整个程序运行期间都不释放这些存储单元,即使退出函数,下次再进入该函数时,静态局部变量仍使用原来的存储单元,值是上一次函数调用结束时的值。若定义时未赋初值,在编译时,系统自动赋初

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1