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

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

1、国家二级( C语言)机试模拟试卷 29 及答案与解析 一、选择题 1 设栈的顺序存储空间为 S(0:49),栈底指针 bottom=49,栈顶指针 top=30(指向栈顶元素)。则栈中的元素个数为 ( A) 30 ( B) 29 ( C) 20 ( D) 19 2 某二叉树的前序序列为 ABCDEFG,中序序列为 DCBAEFG,则该二叉树的深度(根结点在第 1层)为 ( A) 2 ( B) 3 ( C) 4 ( D) 5 3 下列叙述中正确的是 ( A)存储空间连续的数据结构一定是线性结构 ( B)存储空间不连续的数据结构一 定是非线性结构 ( C)没有根结点的非空数据结构一定是线性结构 (

2、 D)具有两个根结点的数据结构一定是非线性结构 4 下列叙述中正确的是 ( A)带链队列的存储空间可以不连续,但队头指针必须大于队尾指针 ( B)带链队列的存储空间可以不连续,但队头指针必须小于队尾指针 ( C)带链队列的存储空间可以不连续,且队头指针可以大于也可以小于队尾指针 ( D)带链队列的存储空间一定是不连续的 5 某系统结构图如下图所示 该系统结构图的宽度是 ( A) 2 ( B) 3 ( C) 4 ( D) n 6 下面不能作 为软件需求分析工具的是 ( A) PAD图 ( B) 数据字典 (DD) ( C)数据流程图 (DFD图 ) ( D)判定树 7 下面不属于对象基本特点的是

3、 ( A)标识唯一性 ( B)可复用性 ( C)多态性 ( D)封装性 8 在数据库设计中,描述数据间内在语义联系得到 E-R图的过程属于 ( A)逻辑设计阶段 ( B)需求分析阶段 ( C)概念设计阶段 ( D)物理设计阶段 9 有两个关系 R, S如下,由关系 R和 S得到关系 T,则所使用的操作为( A)并 ( B)自然连接 ( C)差 ( D)交 10 关系数据模型 ( A)只能表示实体间 1:1联系 ( B)只能表示实体间 1:m联系 ( C)可以表示实体间 m:n联系 ( D)能表示实体间 1:n联系而不能表示实体间 n:1联系 11 以下选项中叙述正确的是 ( A) C程序中的语

4、句要经过编译才能转换成二进制机器指令 ( B)算法需要包含所有三种基本结构 ( C)有些算法不能用三种基本结构来表达 ( D)简单算法的操作步骤不能超过 20步 12 以下选项中叙述正确的是 ( A)复杂任务可以分解成简单子任务 ( B) C语言程序中的所有函数必须保存在同一 个源文件中 ( C)全部三种基本结构都包含的才是结构化程序 ( D) C语言程序可以定义多个不同内容的 main函数 13 以下选项中,合法的数值型常量是 ( A) 3.1415 ( B) A ( C) 92 ( D) 0xDH 14 以下选项中,合法的实数是 ( A) 4.5E2 ( B) E1.3 ( C) 7.11

5、E ( D) 1.2E1.2 15 若有定义 int a, b, c; 以下选项中的赋值语句正确的是 ( A) a = (b = c) + 1; ( B) (a = b) = c = 1; ( C) a = (b = c) = 1; ( D) a + b = c; 16 有如下程序 #include stdio.h main() int x = 0x13; printf(“%dn“, x+1); 程序运行后的输出结果是 ( A) 12 ( B) 14 ( C) 20 ( D) 13 17 对于 if(表达式 ) 语句,以下叙述正确的是 ( A)表达式的值可以是任意合法的数值 ( B)在 “表达

6、式 “中不能出现变量 ( C)在 “表达式 “中不能出现常量 ( D)表达式的值必须是逻辑值 18 以下程序段中,不能实现条件 “如果 a b则 x=10,否则 x=-10“的是 ( A) x=(a =b): -10:10; ( B) if(a b) x=10; else x=-10; ( C) x=-10; if(a b) x=10; ( D) if(a b) x=10; if(b a) x=-10; 19 以下能够实现计算 5!的程序段是 ( A) int fac=1,k=0; do k+; fac*=k; while(k 5); ( B) int fac=0,k=1; do fac*=k

7、; k+; while(k 5); ( C) int fac=1,k=1; do k+; fac*=k; while(k =5); ( D) int fac=1,k=0; do fac*=k; k+; while(k 5); 20 有以下程序 #include stdio.h main() int x=0,y=6; do while(-y) x+; while(y-); printf(“%d,%dn“,x,y); 程序的运行结果是 ( A) 5,0 ( B) 6,0 ( C) 5,-1 ( D) 6,-1 21 有以下程序 #include stdio.h main() char *s=“12

8、0119110“; int n0,n1,n2,nn,i; n0=n1=n2=nn=i=0; do switch(si+) default : nn+; case 0 : n0+; case 1 : n1+; case 2 : n2+; while(si); printf(“n0=%d,n1=%d,n2=%d,nn=%dn“,n0,n1,n2,nn); 程序的运行结果是 ( A) n0=3,n1=8,n2=9,nn=1 ( B) n0=2,n1=5,n2=1,nn=1 ( C) n0=2,n1=7,n2=10,nn=1 ( D) n0=4,n1=8,n2=9,nn=1 22 有以下程序 #inc

9、lude stdio.h int m1(int x,int y) return x =y , x :y; int m2(int x,int y) return x =y , y :x; int fun(int a,int b) return a+b; main() int x=2,y=3,z=1; printf(“%dn“, fun(m1(x,y),m2(y,z); 程序的运行结果是 ( A) 6 ( B) 5 ( C) 4 ( D) 3 23 有如下程序 #include stdio.h int sub(double a, double b) return (int)(a - b); mai

10、n() printf(“%dn“, sub(3.8, 2.1); 程序运行后的输出结果是 ( A) 2.0 ( B) 1.7 ( C) 2 ( D) 1 24 有如下程序 #include stdio.h main() char* p1 = 0; int* p2 = 0; double* p3 = 0; printf(“%d,%d,%dn“, sizeof(p1), sizeof(p2), sizeof(p3); 程序运行后的输出结果是 ( A) 4,4,4 ( B) 1,4,8 ( C) 0,0,0 ( D) 1,2,4 25 有如下程序 #include stdio.h main() in

11、t a = 0, *ptr; ptr = *ptr = 3; a = (*ptr) +; printf(“%d,%dn“, a, *ptr); 程序运行后的输出结果是 ( A) 4,4 ( B) 0,1 ( C) 1,4 ( D) 0,4 26 有如下程序 #include stdio.h main() int i, k; int array42 = 1,2, 4,9, 6; for (i=0; i 2; i+) for (k=0; k 4; k+) printf(“%d,“, arrayki); printf(“n“); 程序运行后的输出结果是 ( A) 1,2,4,9,6, ( B) 1,

12、4,6,0,2,9,0,0, ( C) 2,9,0,0,1,4,6,0, ( D) 2,9,6,1,4, 27 有如下程序 #include stdio.h main() int i, *ptr; int array3 = 8,2,4; for (ptr=array, i=0; i 2; i+) printf(“%d,“, *ptr+); printf(“n“); 程序运行后的输出结果是 ( A) 8,2, ( B) 8,8, ( C) 2,4, ( D) 4,8, 28 有如下程序 #include stdio.h main() int i, *ptr; int array5 = 5,3,1

13、; for (ptr=array, i=0; i 5; i+, ptr+) if (*ptr = 0) putchar(X); else putchar(A + *ptr); printf(“n“); 程序运行后的输出结果是 ( A) FDBXX ( B) FFFXX ( C) FDBBB ( D) ABCDE 29 有如下程序 #include stdio.h #include string.h main() char name10 = “c-book“; char* str = name; printf(“%d,%d,%d,%dn“, sizeof(name), strlen(name),

14、 sizeof(str), strlen(str); 程序运行后的输出结果是 ( A) 10,6,4,6 ( B) 11,6,11,6 ( C) 11,6,1,6 ( D) 10,7,1,7 30 有如下程序 #include stdio.h main() char name10 = S, T, R, I, N, G; name3 = E; name5 = 0; printf(“%sn“, name); 程序运行后的输出结果是 ( A) STRENG ( B) STRIEG ( C) STREN ( D) STREN0 31 有如下程序 #include stdio.h int disp(ch

15、ar* str) while (*str) putchar(*str+); return *str; main() printf(“%dn“, disp(“NAME“); 程序运行后的输出结果是 ( A) NAME0 ( B) NAMEE ( C) NAME ( D) NAME0 32 有如下程序 #include stdio.h main() char *p, old_str10 = “wind“; int password; scanf(“%d“, p = old_str; while (*p) printf(“%c“, *p + password); p+; printf(“n“); 程

16、序运行时,从键盘输入 2回车,输出结果是 ( A) ykpf ( B) wind ( C) xjoe ( D) 2222 33 有如下程序 #include stdio.h int sum(int* array, int len) if (len = 0) return array0; else return array0 + sum(array+1, len-1); main() int array5 = 1,2,3,4,5; int res = sum(array, 4); printf(“%dn“, res); 程序运行后的输出结果是 ( A) 15 ( B) 10 ( C) 8 ( D

17、) 1 34 有如下 程序 #include stdio.h int* sum(int data) static int init = 0; init += data; return main() int i, *p; for (i=1; i =4; i+) sum(i); p = sum(0); printf(“%dn“, *p); 程序运行后的输出结果是 ( A) 15 ( B) 0 ( C) 1 ( D) 10 35 有如下程序 #include stdio.h #define D(x) 4*x+1 main() int i = 2, j = 4; printf(“%dn“, D(i+j

18、); 程序运行后的输出结果是 ( A) 25 ( B) 13 ( C) 9 ( D) 12 36 有如下程序 #include stdio.h struct S int x, y; ; main() struct S data2 = 4, 3, 1, 9; int i; for (i=0; i 2; i+) printf(“%d,%d;“, datai.x, datai.y 1); printf(“n“); 程序运行后的输出结果是 ( A) 4,1;1,4; ( B) 4,1;2,4; ( C) 4,3;1,9; ( D) 4,3;2,3; 37 有如下程序 #include stdio.h

19、#include string.h struct S char name10; ; void change(struct S *data, int value) strcpy(data- name, “*“); value = 13; main() struct S input; int num = 4; strcpy(input.name, “THIS“); change( printf(“%s,%dn“, input.name, num); 程序运行后的输出结果是 ( A) *,4 ( B) *,13 ( C) THIS,4 ( D) THIS,13 38 有如下程序 #include s

20、tdio.h #include string.h struct S char name10; ; main() struct S s1, s2; strcpy(s1.name, “12345“); strcpy(s2.name, “ABC“); s1 = s2; printf(“%sn“, s1.name); 程序运 行后的输出结果是 ( A) ABC12 ( B) ABC45 ( C) 12345 ( D) ABC 39 有如下程序 #include stdio.h main() int i, array5 = 3, 5, 10, 4; for (i=0; i 5; i+) printf(“

21、%d,“, arrayi printf(“n“); 程序运行后的输出结果是 ( A) 3,1,2,0,0, ( B) 3,5,10,4,0, ( C) 3,3,3,3,0, ( D) 3,2,2,2,0, 40 有如下程序 #include stdio.h main() int i; FILE* fp; for (i=0; i 5; i+) fp = fopen(“output.txt“, “w“); fputc(A + i, fp); fclose(fp); 程序运行后,在当前目录下会生成一个 output.txt文件,其内容是 ( A) E ( B) EOF ( C) ABCDE ( D)

22、 A 二、程序填空题 41 程序通过定义学牛结构体变量,存储学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到 student dat文件中。函数 fun的功能是:从文件中找出指定学号的学牛数据,读入此学生数据,对该学生的分数进行修改,使每门课的分数加 3分,修改后重写文件中学生的数据,即用该学生的新数据覆盖原数据,其他学生数据指定不变;若找不到,则不做任何操作。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h #define N 5 typ

23、edef struct student long Sno; char name10; float Score3; STU; vold fun(char*filename, long sno) ( FILE*fp; STU n; int i; fp=fopen(filename, “rb+”); /*found*/ while(!feof(【 1】 ) (fread( n, sizeof(STU), 1, fp); /*found*/ if(n sno 【 2】 sno)break; if(!feof(fp) for(i=0; i 3; i+) n 8coEei+=3; /*found*/ fs

24、eek(【 3】 ,一 (long)sizeof (STU), SEEK CUR); fwrite( n, sizeof(STU), 1, fp); fclose(fp), main() STU tN=10001, “NaChao”, 91, 92, 77, 10002, “CaoKai”, 75, 60,88, (10003, “LiSi”, 85, 70, 78, 10004, “FangFang”, 90, 82, 87,10005, “ZhangSan”, 95, 80, 88, ssN; int i, j; FILE*fp; fp=fopen(“student dat”, “wb”)

25、; fwrite(t, sizeof(STU), N, fp); fclose(fp); printf(“ nThe original data: n”), fp=fopen(“student dat”, “rb”); fread(ss, sizeof(STU), N, fp); fclose(fp), for(j=0; j N; j+) printf(“ nNo: id Name:一 8s Scores:”, ssj sno, ssj name); for(i=0; i(3; i+) printf(“ 6 2f”, ssj scorei); printf(“n”); fun(“student

26、 dat”, 10003); fp=fopen(“student dat”, “rb”); fread(ss, sizeof(STU), N, fp); fclose(fp), printf(“ nThe data after modifing: n”); for(j=0; j N; j+) printf(“ nNo: id Name:一 8s Scores: ”, SSj sno, ssj name); for(i=0, i 3; i+) printf(“ 6 2f”, SSj scorei); printf(“ n”); 三、程序修改题 42 下列给定程序中函数 fun的功能是:用选择法对

27、数组中的 n个元素进行 升序排列。 请修改程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行和删行,也不得更改程序的结构 ! 试题程序: #include Stdio h #define N 20 void fun(int a, int n) int i, j, t, P; for(j=0; j n一 1; j+) /*found*/ P=j for(i=j; i n;i+) if(ai aP) /*found*/ P=j; t=aP; aP=a;; aj=t; void main() int aN=9, 6, 8, 3,一 1), i, m=5; printf(“排

28、序前的数据: ”), for(i=0; i m; i+) printf(“ d”, ai); printf(“ n”); fun(a, m); printf(“排序后的数据: ”); for(i=0 ; i m; i+) printf(“ d”, ai); printf(“ n”); 四、程序设计题 43 学生的记录由学号和成绩组成。 N名学生的数据已放入主函数中的结构体数组s中,请编写函数 fun,其功能是:把高于等于平均分的学生数据放在 b所指的数组中,高于等于平均分的学生人数通过形参 n传回,半均分通过函数值返同。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内

29、容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include Stdio h #define N 12 typedef struct char num10; double s; STREC; double fun(STREC*a, STREC*b, int *n) void main() STREC SN=“GA05”, 85), “GA03”, 76, “GA02”, 69, “GA04”,85, (“GA01”, 91, “GA07”, 72, “GA08”, 64, “GA06”, 87,“GA09”, 60, “GA11”, 79, “GA12”, 73, “GA

30、l0”, 90, STREC hN; int i, n; double ave; ave=fun(S, h, n); printf(“The d student data which is higher than 7 3f: n”, n, ave); for(i=0;i n; i+) printf(“ S 4 1f n”, hi num, hi s); printf(“ n”); 国家二级( C语言)机试模拟试卷 29 答案与 解析 一、选择题 1 【正确答案】 C 【试题解析】 栈是一种特殊的线性表,它所有的插入与删除都限定在表的同一端进行。入栈运算即在栈顶位置插入一个新元素,退栈运算即是取

31、出栈顶元素赋予指定变量。元素依次存储在单元 30: 49中,个数为20. 2 【正确答案】 C 【试题解析】 深度,定义一棵树的根节点所在的层次为,其他节点所在的层次等于它的父节点所在的层次加,树的最大层次称为树的深度。二叉树遍历可以分为 3种:前序遍历(访问根节点再访问左子树和访问右子树之前)、中序遍历(访问根节点在访问左子 树和访问右子树两者之间)、后序遍历(访问根节点在访问左子树和访问右子树之后)。二叉树的前序序列为 ABCDEFG, A为根节点。中序序列为 DCBAEFG,可知 DCB 为左子树节点, EFG为右子树节点。同理 B 为 C父节点 ,C为 D父节点。同理 E 为 F根节点

32、, F为 G根节点。故二叉树深度为 4层。 C选项正确。 3 【正确答案】 D 【试题解析】 一个非空的数据结构如果满足以下两个条件:有且只有一个根节点;每一个节点最多有一个前件,也最多有一个后件,称为线性结构,也称为线性表,可以采用顺序存储和链接存储,其中顺序存储的 空间连续而链式存储空间不连续。非线性结构是指不满足以上两个条件的数据结构,非线性结构主要是指树形结构和网状结构。数据结构线性与否与存储空间是否连续没有直接关系,如二叉树可以用一片连续的空间来存储,但其为非线性结构, A选项错误。线性表的链式存储结构可以用不连续的空间来存储,但其为线性结构, B 选项错误。没有根结点的非空数据结构

33、一定不是线性结构, C选项错误。具有两个根结点的结构一定是非线性结构, D选项正确。 4 【正确答案】 C 【试题解析】 带链的队列就是用一个单链表来表示队列,队列中的每一个元素对应 链表中的一个节点,其存储结构既可以采用顺序存储也可以是链接存储,其中顺序存储的空间连续而链式存储空间不连续, D选项错误。循环队列中,由于指针超过队列地址最大值时会移动到队列最小地址处,所以队头指针可以大于也可以小于队尾指针, A、 B 选项错误, C选项正确。 5 【正确答案】 D 【试题解析】 宽度是指最大模块数的层的控制跨度。题目中系统第一层只有 1个模块,第二层有 n( n 3)个模块,第三层有 4个模块

34、,控制跨度为 n, D选项正确。 6 【正确答案】 A 【试题解析】 需求分析方法可以分为结构化分 析方法和面向对象的分析方法,结构化分析工具包括:数据流图( DFD)、数据字典( DD)、结构化英语、判定表和判定树等。 PAD图是过程设计工具,所以 A选项正确。 7 【正确答案】 B 【试题解析】 对象的基本特点如下:可知 B选项正确。 8 【正确答案】 C 【试题解析】 数据库设计的 4个阶段为:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段。概念设计最常用的方法是 E-R方法,它采用 E-R模型,将现实世界的信息结构统一由实体、属性以及实体之间的联系来描述, C选项正确。 9 【

35、正确答案 】 A 【试题解析】 常用的扩充运算有交、除、连接及自然连接等。并: RS 是将 S中的记录追加到 R后面。自然连接:去掉重复属性的等值连接。差: R-S 结果是属于 R但不属于 S的记录组成的集合。交: RS 结果是既属于 R又属于 S 的记录组成的集合。并: RS的结果集为 T,所以 A选项正确。 10 【正确答案】 C 【试题解析】 关系模型是目前最常用的数据模型之一,现实世界的实体以及实体间的各种联系均用关系来表示。实体集之间通过联系来建立联接关系分为三类:一对一联系( 1:1)、一对多联系( 1:m)、多对多联系( m:n)。 C选项正确。 11 【正确答案】 A 【试题解

36、析】 编译就是把高级语言变成计算机可以识别的二进制语言,不经过编译的源程序是不能运行的, A选项正确。算法不一定要包含所有三种基本结构,也可以只包含一种或两种, B选项错误。结构化程序主要由种基本控制结构组成,循环结构、选择结构、顺序结构,它们组成的算法结构可以解决任何复杂的问题, C选项错误。算法的复杂程序不是由操作步骤多少决定的,而是按时间复杂度与空间复杂度来衡量, D选项错误。 12 【正确答案】 A 【试题解析】 结构化程序设计把一 个复杂的问题的求解过程分成阶段进行,即复杂任务可以分解成简单子任务, A选项正确。 C语言程序中的函数不一定要保存在同一个源文件中,外部函数可以被同程序中

37、其他源文件中调用, B选项错误。结构化程序主要由种基本控制结构组成,循环结构、选择结构、顺序结构,它们组成的算法结构可以解决任何复杂的问题。算法不一定要包含所有三种基本结构,也可以只包含一种或两种, C选项错误。程序由一个或若干个函数构成,程序中有且只能有一个主函数,即 main 函数, D选项错误。 13 【正确答案】 A 【试题解析】 数值型常量包括整 型常量和实型常量。整型常量有三种:十进制常量,用 09表示,不能以 0开头;八进制常量,用 07表示,必须用 0开头;十六进制常量,用 0 9和 A F(a f)表示,必须以 0x或 0X开头。实型常量:用带小数点的数字表示,其值有两种表达

38、形式,分别为十进制小数形式和指数形式。3.1415为实型常量, A选项正确。 “A“为长度为 1的字符串常量, B选项错误。092按照格式来说是八进制整型常量,但是八进制不会出现 9,故 C选项错误。0xDH按照格式说是十六进制整型常量,但是不应该出现 H, D选项错误。 14 【正确答案】 A 【试题解析】 实型常量用带小数点的数字表示,其值有两种表达形式,分别为十进制小数形式和指数形式。十进制小数形式由数字和小数组成,必须有小数点,且小数点的位置不受限制。指数形式由十进制数加阶码标志 “ “或 “ “以及阶码(只能为整数,可以带符号)组成。 4.5E2 为指数形式实数, A选项正确。 E1

39、.3阶码标志前缺少十进制数,并且阶数不是整数, B 选项错误。 7.11E缺少阶数, C选项错误。 1.2E1.2 阶数不是整数, D选项错误。 15 【正确答案】 A 【试题解析】 赋值运算结合性为由右向左结合,赋值 运算符左值为变量,右值为变量或常量,且左右两边数据类型相同才能实现赋值。 A选项中,将 c赋值给 b,然后将 b 加 1赋值给 a,正确的赋值语句, A选项正确。 B选项中,将 1赋值给c,赋值运算 (a=b)=c中左值为表达式,不是变量不能被赋值, B选项错误。 C选项中赋值运算 (b=c) =1左值为逻辑表达式,不是变量不能被赋值, C选项错误。 D选项左值 (a+b)为表

40、达式,不是变量不能被赋值, D选项错误。 16 【正确答案】 C 【试题解析】 整型常量有种表示方法,分别是十进制数表示法、八进制数表示法和十六进制数表示 法。十进制整常量没有前缀,输出格式控制符为 %d;八进制整常量以作为前缀,输出格式控制符为 %o;十六进制整常量以 0X 或 0x作为前缀,输出格式控制符为 %x。十六进制数 0x13表示成十进制数为 19,以十进制格式输出 x+1=19+1=20, C选项正确。 17 【正确答案】 A 【试题解析】 单分支选择语句 if 语句格式如下: if(表达式 ) 语句体。 “表达式 “可以是任意合法的语言表达式,包括关系表达式和逻辑表达式等,也可

41、以是任意的数值类型(包括整型、实型、字符型等), A选项正确。 “表达式 “中可以出现变量或 者常量,也不一定必须是逻辑值, B、 C、 D选项错误。 18 【正确答案】 D 【试题解析】 D选项:如果 a b,则 x=10,如果 b a,则 x=-10,其中没有对a=b 进行判断, D选项不能实现题目中功能,选择 A选项。 B选项:如果 a b,则 x=10,否则 x=-10,能实现题目中功能。 C选项:首先赋值 x=-10,如果 a b,则 x=10,即在 a =b情况下有 x=-10,能实现题目中功能。 A选项:条件运算符?运算过程为:如果 a =b, x= -10,否则 x=10,能实

42、现题目中功能。 19 【正确答案】 A 【试题解析】 dowhile 循环语句一般形式为: do循环体 while(表达式 ),执行过程为:首先执行循环体,之后判断表达式,成立(非 0)则再一次执行循环体,不成立( 0)则退出循环。 A选项: k=1,fac=1*1,判断 k 5,条件成立进行下一次循环,直到 k=5,fac=1*2*3*4*5,k 5不成立退出循环,实现计算 5!, A选项正确。B 选项: fac从 0开始,做乘法一直都是 0,无法实现 5!,错误。 C选项:k=2,fac=1*2,循环条件成立 ,直到 k=6,fac=1*2*3*4*5*6 才因循环条件 不成立退出循环,实

43、现 6!,错误。 D选项: k=0,fac=1*0=0,之后做乘法一直为 0,无法实现5!,错误。 20 【正确答案】 C 【试题解析】 程序执行过程为:执行 dowhile 的循环体: y=5,判断 y为真,x=1; y=4, x=2; y=3,x=3; y=2,x=4; y=1,x=5; y=0,判断 y为假,退出循环体。判断 dowhile 条件 y=0为假, y=-1,退出循环。输出 x,y为 5, -1, C选项正确。 21 【正确答案】 A 【试题解析】 本题执行过程为, s0=1,匹配 case1, n1=1, n2=1; s1=2,匹配 case2, n2=2; s2=0,匹配

44、 case0, n0=1, n1=2, n2=3; s3=1,匹配case1, n1=3, n2=4; s4=1,匹配 case1, n1=4, n2=5; s5=9,匹配default, nn=1, n0=2, n1=5, n2=6; s6=1,匹配 case1, n1=6, n2=7;s7=1,匹配 case1, n1=7, n2=8; s8=0,匹配 case0, n0=3, n1=8,n2=9; s9=0,退出循环。输出 n0,n1,n2,nn 为 3,8,9,1, A选项正确。 22 【正确答案】 B 【试题解析】 条件运算符 “?“是 C语言中唯一的一个三目运算符,语法形式为:ex

45、p1: exp2:exp3。执行规则为:计算表达式 exp1的值,测试其是否为 0;如果exp1的值非 0,则对 exp2求值,并把这个值作为条件表达式的结果输出,不计算exp3;如果 exp1 的值为 0,则对 exp3求值,并把这个值作为条件表达式的结果输出,不计算 exp2。函数 m1 实现返回传入两个参数中的最小 值。函数 m2 实现返回传入两个参数中的最大值。函数 fun实现返回传入两个参数之和。程序执行过程为:调用 m1(2,3)返回 2,调用 m2(3,1)返回 3,调用 fun(2,3)返回 5,输出结果 5,B 选项正确。 23 【正确答案】 D 【试题解析】 在类型转换过程

46、中,如果较高类型转换成较低类型,直接忽略多余位数。在程序执行过程为:调用函数 sub(3.8,2.1),3.8-2.1=1.7(double类型 ),( int)强制转换将 1.7转换成 int类型 1,然后返回 1并输出, D选项正确。 24 【正确答案】 A 【试题解析】 sizeof 用来获取类型或数据对象的长度,也即是一个这种数据类型的变量在内存中所占字节数。由于一个变量的地址也是一个值,因此就可以把这个地址值存放到另一个变量里保存。这种专门用来存放变量地址的变量,称为 “指针变量 “。所有类型的指针变量都是地址,所占字节数均为 4, A选项正确。 25 【正确答案】 A 【试题解析】

47、 程序执行过程为:定义整型变量 a=0与指针 ptr,使指针指向变量a。对指针指向的变量进行赋值 a=3,将指针所指向变量加 1,并赋值给 a=4,此时指针依然指向变量 a,输出 a与指针指向的变量值: 4,4, A选项正确。 26 【正确答案】 B 【试题解析】 二维数组的初始化有两种方式,其中一种是分行初始化,方式为:数据类型数组名 行下标表达式 列下标表达式 =第 0行初值 ,第 1行初值表 , 最后 1行初值表 ;,如果初值表只对部分元素赋初值,没有被赋初值的元素将被自动赋值为 0,故相当于 array42 = 1,2,4,9,6,0,0,0。执行两次for语句,实现按列依次输出数组中元素值为 1,4,6,0,2,9,0,0, B选项正确。 27 【正确答案】 A 【试题解析】

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

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

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