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

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

1、国家二级( C语言)机试模拟试卷 82及答案与解析 一、选择题 1 下列叙述中正确的是 ( )。 ( A)解决同一个问题的不同算法的时间复杂度一般是不同的 ( B)解决同一个问题的不同算法的时间复杂度必定是相同的 ( C)对同一批数据作同一种处理,如果数据存储结构不同,不同算法的时间复杂度肯定相同 ( D)对同一批数据作不同的处理,如果数据存储结构相同,不同算法的时间复杂度肯定相同 2 下列处理中与队列有关的是 ( )。 ( A)操作系统中的作业调度 ( B)执行程序中的过程调用 ( C)执行 程序中的循环控制 ( D)二叉树的遍历 3 设栈的存储空间为 S(1: m),初始状态为 top=m

2、+1。经过一系列入栈与退栈操作后, top=1。现又要将一个元素进栈,栈顶指针 top值变为 ( )。 ( A)发生栈满的错误 ( B) 2 ( C) m ( D) 0 4 设二叉树共有 150个结点,其中度为 1的结点有 10个,则该二叉树中的叶子结点数为 ( )。 ( A) 71 ( B) 70 ( C) 69 ( D)不可能有这样的二叉树 5 非空循环链表所表示的数据结构 ( )。 ( A)有根结点也有叶子 结点 ( B)没有根结点但有叶子结点 ( C)有根结点但没有叶子结点 ( D)没有根结点也没有叶子结点 6 设二叉树中共有 31个结点,其中的结点值互不相同。如果该二叉树的后序序列与

3、中序序列相同,则该二叉树的深度为 ( )。 ( A) 31 ( B) 16 ( C) 17 ( D) 5 7 在最坏情况下,堆排序的时间复杂度是 ( )。 ( A) O(lgo2n) ( B) O(nlog2n) ( C) O(n2) ( D) O(n1 5) 8 软件按功能可以分为应用软件、系统软件和支撑软件 (或工具软件 )。 下面属于系统软件的是 ( )。 ( A)学籍管理系统 ( B) ERP系统 ( C) C编译程序 ( D) CAI软件 9 存储在计算机内有结构的数据集合是 ( )。 ( A)数据库 ( B)数据库系统 ( C)数据库管理系统 ( D)数据结构 10 在数据库技术中

4、,为提高数据库的逻辑独立性和物理独立性,数据库的结构被划分成用户级、存储级和 ( )。 ( A)概念级 ( B)外部级 ( C)管理员级 ( D)内部级 11 以下叙述错误的是 ( )。 ( A)一个算法所包含的操作步骤应该 是有限的 ( B)任何能通过编译和运行的算法都一定能得到所期望的结果 ( C)算法中每一条指令必须有确切的含义 ( D)算法可以用各种描述方法来进行描述 12 以下是正确 C语言实型常量的是 ( )。 ( A) e-1 ( B) e-1 ( C) -1e ( D) 1e-1 13 以下叙述正确的是 ( )。 ( A)在 C语言中分号是语句的组成部分 ( B) C语言程序由

5、 C语句组成,可以省略 main函数 ( C)分号是 C语句之间的分隔符 ( D)所有程序行都必须用分号结束 14 若有定义: doublea, b, c;能正确给 a, b, c输入数据的语句是 ( )。 ( A) scanf(“ lf lf lf“&a, b, &c); ( B) scanf(“ f f f“, &a, &b, &c); ( C) scanf(“ lf lf lf“, a, b, c); ( D) scanf(“ lf lf lf“, &a, &b, &c); 15 有以下程序: #include stdio h main() intx=0xg; pfinff(“ c n“

6、, A+x); 程序运行后的输出结果是 ( )。 ( A) I ( B) J ( C) K ( D) H 16 设有定义: doublex=5 16894;,则语句 printf(“ lf n“, (int)(x*1000+0 5)1000 );的输出结果是 ( )。 ( A) 5 16900 ( B) 5 16800 ( C) 0 00000 ( D)输出格式说明符与输出项不匹配,产生错误信息 17 有以下程序: #include stdio h main() inta=0, b=0, c=0, d=0; if(a=1) b=1; c=2; else d=3; printf(“ d, d,

7、d, d、 n“, a, b, c, d); 程序输出 ( )。 ( A)编译有错 ( B) 0, 0, 0, 3 ( C) 1, 1, 2, 0 ( D) 0, 1, 2, 0 18 有以下程序: #include stdio h main() inta=-2, b=2; for(; +a&-b; ) ; printf(“ d, d n“, a, b); 程序运行后的输出结果是 ( )。 ( A) 0, 1 ( B) 0, 0 ( C) 1, -1 ( D) 0, 2 19 有以下程序: #include stdio h main() int t; scanf(“ d“, t); if(t+

8、 6)printf(“ d、 n“, t); else printf(“ d n“, t-); printf(“ n“); 执行时输入: 6回车,则输出结果是 ( )。 ( A) 6 ( B) 8 ( C) 7 ( D) 5 20 有以下程序: #include stdio h main() char ch=D; while(ch A)d ch-; putchar(ch); if(ch=-A)break; putehar(ch+1); 程序运行后的输出结果是 ( )。 ( A) CB ( B) BCA ( C) CCBB ( D) CDBCA 21 以下程序拟实现计算 s=1+2*2+3*3+

9、n*n+ ,直到 s 1000为止。 #include stdio h main() int s, n; s=1: n=1; do n=n+1; s=s+n*n; while(s 1000); printf(“s= d n“, s); 程序运行后,不能得到正确结果,以下修改方案正确的是 ( )。 ( A)把 while(s 1000);改为 while(s =1000); ( B)把 s=1;改为 s=0; ( C)把 n=1;改为 n=0; ( D)把 n=n+1;改为 n=n*n; 22 有以下程序: #include stdio h main() int m, n; scanf(“ d

10、d“, &m, &n, ); while(m!=n) while(m n)m=m-n; while(n m)tn=n-m; printf(“ d n“, m); 该程序的功能是 ( )。 ( A)计算 m和 n的最小公 倍数 ( B)计算 m和 n的最大公约数 ( C)计算 m和 n的差值 ( D)找出 m和 n中的较大值 23 有以下程序: #include stdio h int add(int a, int b)return(a+b); main() int k, (*f)(), a=5, b=10; f=add; 则以下函数调用语句错误的是 ( )。 ( A) k=f(a, b); (

11、 B) k=add(a, b); ( C) k=(*f)(a, b); ( D) k=*f(a, b); 24 若有定义语句: doublex, y, *px, *py; 执行 px=&x; py=&y; 正确的输入语句是 ( )。 ( A) scanf(“ lf lf“, x, y); ( B) scanf(“ f f“&x, &y); ( C) scanf(“ f f“, x, y); ( D) scanf(“ lf le“, px, py); 25 以下定义数组的语句中错误的是 ( )。 ( A) int num3=1, 2, 3, 4, 5, 6; ( B) int num24=1,

12、2, 3, 4, 5, 6; ( C) int num=1, 2, 3, 4, 5, 6; ( D) int num4=1, 2, 3, 4, 5, 6; 26 有以下程序: #include stdio h void fun(int a , int n, int flag) int i=0, j, t; for(i=0; i n-1; i+) for(j=i+1; j n; j+) if(flag) if(ai aj) t=ai; ai=aj; aj=t; else if(ai aj) t=ai; ai=aj; aj=t; main() int c10=7, 9, 10, 8, 3, 5,

13、1, 6, 2, 4, i; fun(c, 4, 1); fun(c+4, 6, 0); for(i=0; i 10; i+)printf(“ d, “, ci); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) 7, 8, 9, 10, 6, 5, 4, 3, 2, 1, ( B) 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ( C) 10, 9, 8, 7, 1, 2, 3, 4, 5, 6, ( D) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 27 有以下程序: #include stdio h main() int i, k

14、=0, a10; for(i=0; i 10; i+)ai=i; for(i=0; i 4; i+)k+=ai+i; printf(“ d n“, k); 程序运行后的输出结果是 ( )。 ( A) 10 ( B) 16 ( C) 6 ( D) 12 28 有以下程序: #include stdio h int new_div(double a, double b) returna b+0 5; main() printf(“ d“, new_div(7 8, 3 1); 程序运行后的输出结果是 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 0 29 函数 fun的功能是在 a

15、所指的具有 n个元素的数组中查找最大值并返回给调用函数,函数不完整。 int fun(int*a, int n) int*p, *s; for(p=a, s=a; p-a n; p+) if(_)s=p; return*s: 在 if语句下划线处应填入的选项是 ( )。 ( A) p s ( B) *p *s ( C) ap as ( D) p-a p-s 30 有以下程序: #include stdio h #include string h main() charstr20=“One*world“, “One*Dream!“, *p=str1; printf(“ d, “, strlen(

16、p); printf(“ s n“, p); 程序运行后的输出结果是 ( )。 ( A) 10, One*Dream! ( B) 9, One*Dream! ( C) 9, One*World ( D) 10, One*World 31 有以下程序: #include stdio h #include string h main() int i, len; charb=“Welcome you to Beijing!“; len=strlen(b); for(i=0; i len; i+) if(bi=) strcpy(b, b+i+1); i=0; printf(“ s n“, b); 程序

17、运行后的输出结果是 ( )。 ( A) Beijing! ( B) toBeijing! ( C) WelcomeyoutoBeijing! ( D) youtoBeijing! 32 有以下程序: #include stdio h int f(int k) static int n=0; int m=0; n+; m+; k+; return n+m+k; main() int k; for(k=0; k 2; k+)printf(“ d, “, f(k); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) 3, 5, ( B) 3, 6, ( C) 3, 7, ( D

18、) 0, 3, 33 有以下程序: #inchde stdio h int m=12; int fun(int x, int y) static int m=3; m=x*y-m: return(m); main() int a=7, b=5; m=fun(a, b) m; printf(“ d n“, fun(a, b) m); 程序运行后的输出结果是 ( )。 ( A) 2 ( B) 1 ( C) 3 ( D) 0 34 有以下程序: #include stdio h #include string h main() chara=“TEXT“, *b=“+“, c3=“1“; printf

19、(“ d, d, “, strlen(a), sizeof(a); printf(“ d, d, “, strlen(b), sizeof(b); printf(“ d, d, n“, strlen(c), sizeof(c); 程序运行后的输出结果是 ( )。 ( A) 4, 5, 2, 4, 1, 3, ( B) 4, 4, 2, 2, 1, 1, ( C) 5, 5, 3, 3, 2, 2, ( D) 4, 4, 2, 2, 1, 3 35 以下与存储类别有关的四组说明符中,全部属于静态类的一组是 ( )。 ( A) extem和 static ( B) auto和 static ( C

20、) register和 static ( D) register和 extern 36 为了建立如图所示的存储结构 (即每个结点含两个域, data是数据域, next是指向结点的指针域 )则在 ( )处填入的选项是 ( )。 strucflinkchardata;_node; ( A) structlink*next; ( B) linknext; ( C) link*next; ( D) strucflinknext; 37 有以下程序: #include stdio h #include string h typedef stmct stu char name10; char gende

21、r; int score; STU; void f(char name10, char gender, int score) strcpy(ngnle, “Sun“); gender=m; score=370; main() STU b=“Zhao“, m, 290, a=“Qian“, f, 350; b=a; printf(“ s, c, d, “, b name, b gender, b score); f(b name, b gender, b score); printf(“ s, c, d n“, b name, b gender, b score); 程序运行后的输出结果是 (

22、)。 ( A) Qian, f, 350, Sun, f, 350 ( B) QiaJl, f, 350, Qian, f, 350 ( C) Qian, f, 350, Sun, m, 370 ( D) Zhao, m, 290, Sun, m, 370 38 有以下程序: #inchde stdio h main() char a=3, b=6, c; c=(ab) 2; printf(“ d n“, c); 程序运行后的输出结果是 ( )。 ( A) 5 ( B) 1 ( C) 20 ( D) 18 39 以下叙述正确的是 ( )。 ( A)表达式 sizeof(FILE*)=sizeo

23、f(int*)的值为真 ( B)文件指针的值是一个整数,它的值一定小于文件字节数 ( C)文件指针的值是所指文件的当前读取位置 ( D)使用 fscanf函数可以向任意类型的文件中写入任意数量的字符 40 函数 fgetc的功能是从指定文件中读入一个字符,以下与其功能完全相同的函数是 ( )。 ( A) fread ( B) fscanf ( C) fgets ( D) gete 二、程序填空题 41 下列给定程序中,函数 fun的功能是进行数字字符转换。若形参 ch中是数字字符 0 9,则将 0转换成 9, 1转换成 8, 2转换成 7, , 9转换成 0;若是其他字符则保持不变;并将转换后

24、的结果作为函数值 返回。 请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 注意:部分源程序在文件 BIANK1 C中。 不得增行或删行,也不得更改程序的结构 ! #include stdio h *found* 1fun(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); printf(“c1= c c2= c n“, c1, c2); c1=8; c2=fun(c1

25、); printf(“c1= c c2= c n“, c1, c2); c1=a; c2=fun(c1); printf(“c1= c c2= c n“, c1, c2); 三、程序修改题 42 下列给定程序中函数 fun的功能是:逐个比较 p、 q所指两个字符串对应位置上的字符,并把 ASCII值大或相等的字符依次存放到 c所指的数组中,形成一个新的字符串。 例如,若主函数中 a字符串为 “aBCDeFgH”, b字符串为 “Abcd”,则 c中的字符串应为 “aBcdeFgH”。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件 MODI1 C中,不得增行或删行,也不得更

26、改程序的结构 ! #include stdio h #include string h void fun(char*p, char*q, char*c) *found* int k=1; *found* while(*p!=*q) if(*p *q)ck=*q; else ck=*p; if(*p)p+; if(*q) q+; k+; main() char a10=“aBCDeFgH“, b10=“ABcd“, c80= 0; fun(a, b, c); printf(“The string a: “); puts(a); printf(“The string b: “); puts(b);

27、 printf(“The result: “); puts(c); 四、程序设计题 43 学生记录由学号和成绩组成, N名学生的数据已放入主函数中的结构体数组中,请编写函数 fun,其功能是:把分数最低的学生数据放入 b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生人数。 注意:部分源程序在文件 PROG1 C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include stdio h #define N16 typedef struet char num10; int s; STREC; int fur(ST

28、REC*a, STREC*b) main() STREC sN=“GA05“, 85, “GA03“, 76, “GA02“, 69, “GA04“, 85, “GA01“, 91, “GA07“, 72, “GA08“, 64, “GA06“, 87, “GA015“, 85, “GA013“, 91, “GA012“, 64, “GA014“, 91, “GA011“, 91, “GA017“, 64, “GA018“, 64, “GA016“, 72; STREC hN; int i, n; FILE*out; n=fun(s, h); printf(“The d lowest scor

29、e: n“, n); for(i=0; i n; i+) printf(“ s 4d n“, hi num, hi s); printf(“ n“); out=fopen(“out dat“, “w“); fprintf(out, “ d n“, n); for(i=0; i n; i+) fprintf(out, “ 4d n“, hi s); felose(out); 国家二级( C语言)机试模拟试卷 82答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 算法的时间复杂度是指执行算法所需要的计算工作量,而计算工作量是用算法所执行的基本运算次数来度量的。解决同一个问题的不同算法的时

30、间复杂度,可能相同也可能不相同。算法的时间复杂度与数据存储结构无关,对同一批数据作同一种处理或者不同处理,数据存储结构相同或者不同,算法的时间复杂度都可能相同或者不同。故选 A选项。 2 【正确答案】 A 【试题解析】 队列是指允许在一端进行插入,而在另一端进行删除的线性表。由于最先进入队列的元素将最先出队,所以队列具有 “先进先出 ”的特性,体现了 “先来先服务 ”的原则。作业调度是指根据一定信息,按照一定的算法,从外存的后备队列中选取某些作业调入内存分配资源并将新创建的进程插入就绪队列的过程。执行程序中的过程调用一般指函数调用,需要调用时候转入被调用函数地址执行程序,与队列无关。执行程序中

31、的循环控制是指算法的基本控制结构,包括对循环条件的判定与执行循环体,与队列无关。二叉树是一个有限的结点 集合,二叉树的遍历是指不重复地访问二 3 【正确答案】 A 【试题解析】 栈是一种特殊的线性表,它所有的插入与删除都限定在表的同一端进行。入栈运算即在栈顶位置插入一个新元素,退栈运算即是取出栈顶元素赋予指定变量。题目中初始状态为 top=m+1,可知入栈栈顶指针 top=top-1,出栈栈顶指针 top=top+1,由于栈长为 m,当 top=1时栈满,不能再进行入栈操作。故选 A选项。 4 【正确答案】 D 【试题解析】 在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的

32、度称为树 的度。对任何一棵二叉树,度为 0的结点总是比度为 2的结点多一个。如果有一棵二叉树,结点总数为 150,假设度为 0的结点个数为 n,则有 n+10+n-1=150, n=70 5,由于结点个数必须是整数,所以不可能有题目中这样的二叉树。故选择 D选项。 5 【正确答案】 A 【试题解析】 在单链表的第一个结点前增加一个表头结点,队头指针指向表头结点,最后一个结点的指针域的值由 NULL改为指向表头结点,这样的链表称为循环链表。循环链表是线性结构,有且只有一个根结点,每一个结点最多有一个前件,也最多有一个后件。循环 链表表头结点为根结点,链表的最后一个结点为叶子节点,虽然它含有一个指

33、向表头结点的指针,但是表头结点并不是它的一个后件。故选择 A选项。 6 【正确答案】 A 【试题解析】 二叉树遍历可以分为 3种:前序遍历 (访问根结点在访问左子树和访问右子树之前 )、中序遍历 (访问根结点在访问左子树和访问右子树两者之间 )、后序遍历 (访问根结点在访问左子树和访问右子树之后 )。由结点值互不相同而后序序列与中序序列相同,可知该二叉树所有的结点都没有右子树,所以 31个结点的二叉树深度为 31。故选 A选项。 7 【正确答案】 B 【试题解析】 若有 n个元素的序列,将元素按顺序组成一棵完全二叉树,当且仅当满足下列条件时称为堆,大根堆是指所有结点的值大于或等于左右子结点的值

34、;小根堆是指所有结点的值小于或等于左右子结点的值。在调整建堆的过程中,总是将根结点值与左、右子树的根结点进行比较,若不满足堆的条件,则将左、右子树根结点值中的大者与根结点值进行交换。堆排序最坏情况需要O(nlog2n)次比较,所以时间复杂度是 O(nlog2n), B选项正确。 8 【正确答案】 C 【试题解析】 计算机软件按功能分为应用软件、系统软件、支 撑软件 (或工具软件 )。系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件。应用软件是为了应用于特定的领域而开发的软件。支撑软件介于系统软件和应用软件之间,协助用户开发软件的工具型软件,其中包括帮助程序人员开发和维

35、护软件产品的工具软件,也包括帮助管理人员控制开发进程和项目管理的工具软件。如 Dephi、 PowerBuilder等。选项 C属于系统软件,选项 A、 B、 D属于应用软件,故选 C选项。 9 【正确答案】 A 【试题解析】 数据库是指长期存储在计算机内的、有组织的、可共享的数 据集合。数据库系统是由数据库及其管理软件组成的系统,是应用软件。数据库管理系统是数据库系统的核心,它位于用户与操作系统之间,属于系统软件。数据结构是计算机存储、组织数据的方式。故本题选 A选项。 10 【正确答案】 A 【试题解析】 数据库系统在其内部分为三级模式,即概念模式、内模式和外模式。概念模式是数据库系统中全

36、局数据逻辑结构的描述,全体用户的公共数据视图。外模式也称子模式或者用户模式,是用户的数据视图,也就是用户所能够看见和使用的局部数据的逻辑结构和特征的描述,是与某一应用有关的数据的逻辑表示 。内模式又称物理模式,是数据物理结构和存储方式的描述,是数据在数据库内部的存储方式。所以数据库的结构被划分成用户级、存储级和概念级。故选A选项。 11 【正确答案】 B 【试题解析】 算法的特点:零个或多个输入,至少一个输出,可行性 (能编程实现 ),有穷性 (有限步出结果 ),确定性 (描述不能有歧义 )。可知选项 A, C, D正确。 C语言中,通过编译,可以运行的程序,不一定符合题目的本意,因此即使可以

37、运行得到结果,也不一定和预期的结果一样,否则就不需要调试和修改程序了,故 B选项错误。答案为 B选项。 12 【正确答案】 D 【试题解析】 所谓常量是指在程序运行过程中,其值不能被改变的量。在 C语言中,有整型常量、实型常量、字符常量和字符串常量等类型。实型常量有两种表示形式:十进制小数形式、指数形式。指数形式中 e后面的指数必须是整数,阶码标志 e之前需要有数字,由此可知选项 A, B, C错误。答案为 D选项 13 【正确答案】 A 【试题解析】 C程序的入口函数是 main(), C程序中有且只有一个 main函数,故选项 B错误。分号是 C语言一条语句的结束标志,不是分隔符, C语言

38、分隔符是用来分隔多个变量、数据项 、表达式等的符号,包括逗号、空白符、分号和冒号等,选项 C错误。 C语言的程序不是以分号结束的,因为 C语言是面向过程的,从 main函数开始在 main函数里结束,选项 D错误。故答案为 A选项。 14 【正确答案】 D 【试题解析】 lf, le是针对 double类型的,如果仅用 f,输入的数据可能不完全接收,数据的精度可能不足。 f主要针对 float类型的变量输入,因此选项 B错误。根据题目格式可知选项 A, C错误。故答案为 D选项。 15 【正确答案】 B 【试题解析】 printf(“ c n“, A+x), x=0x9(16)转为十进制 x=

39、9,因此printf(“ c n“, A+9),打印格式要求是 c,因此需要从字符 A,按字母顺序向后偏移 9个位置,可得结果为 J。故答案为 B选项。 16 【正确答案】 A 【试题解析】 (x*1000+0 5)表示 x移动 3位小数,加 0 5,也就是小数第 4位加 5,若这位大于等于 5,则进 1到个位。因为 “5 16894*1000 5168 94+0 5 5169 44”所以 (int)(x*1000+0 5)强制转换为整型结果为 5169。 (51691000 0)5 169,由于 1000 0结果自动转换为浮点数所以 printf(“ lf n”,5 169)结果是 5 16

40、900。故答案为 A选项 17 【正确答案】 A 【试题解析】 C语言规定 else总是和之前与其最近的且不带 else的 if配对,题目中, if(a=1)b=1; c=2;默认省略的 else已经配对了,下一句 else没有匹配, if为非法 else。另外 if的判断条件 a=1是赋值语句,不是判断语句,此处也会产生编译错误。因此答案为 A选项。 18 【正确答案】 A 【试题解析】 for(; +a&-b; ); for循环中第 1, 3表达式为缺省项,判断条件为 +a&-b; a=-2, b=2;,第一次执行了 +a和 -b,表示为真,循环条件成立,第二次执行 +a为 0,由于 &运

41、算符,当第一个条件为假时,不执行第二个条件,所以 b=1,发生短路, -b不执行了。因此 a, b的最终值 0, 1。故答案为 A选项。 19 【正确答案】 C 【试题解析】 后置自增运算: k+表示先运算,后自力口。 if(t+ 6)printf(“ d n”, t); else printf(“ d n”, t-); t的 初值为 6, t+ 6,则条件为假,执行printf(“ d n”, t-),此时 t=7,打印 t值为 7,之后进行自减操作 t=6。因此打印的结果为 7。故答案为 C选项。 20 【正确答案】 D 【试题解析】 putchar()函数功能是输出一个字符,由 whli

42、e判断条件和 ch初始值可知,只要 chA,每次执行二次 putchar,否则跳出。第一次输出 CD,第二次输出 BC,第三次输出 A,跳出循环。因此答案为 D选项。 21 【正确答案】 A 【试题解析】 题目中程序不能实现预期功能是因为 while的循环条件错误,在选项 B中,把 s=1,改为 s=0,最终的结果 s=4,与题目原意不同;在选项 C中,把n=1;改为 n=0;最终的结果 s=2,与题目原意不同;在选项 D中,把 n=n+1;改为 n=n*n;最终的结果 s=2,与题目原意不同;选项 A,正确的修改了 while循环条件,可以得到正确结果。故答案为 A选项。 22 【正确答案】

43、 B 【试题解析】 题目使用更相减损术求最大公约数,其思想: 1、任意给定两个正整数,判断它们是否都是偶数。若是,则用 2约简,若不是则执行第二步。 2、以较大的数减较小的数,接着把所得 的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止。则第一步中约掉的若干个 2与第二步中等数的乘积就是所求的最大公约数。因此。故答案为 B选项。 23 【正确答案】 D 【试题解析】 *与 ()的优先级, ()的优先级高于 *,因为 (*f)()定义函数指针 f。 f指向函数的指针。 f=add,将函数 add()的首地址赋给指针 f,所以调用函数 add()可以写为 f(),其返回

44、值是整型,不是指针类型,不能用 *取指针指向的内存单元的数据,故 k=*f(8, b)的调用方式错误。答案为 D选项。 24 【正确答案】 D 【试题解析】 lf, le是针对 double类型的数据,如果仅用 f,输入的数据可能不能被完全接收,数据的精度可能不足。 f主要针对 float类型的变量输入,选项 B错误。根据 scanf(格式,变量地址 ),选项 A, C错误。故答案为 D选项。 25 【正确答案】 B 【试题解析】 选项 B中, int num24=1, 2, 3, 4, 5, 6;定义数组是2行 4列,但是初始化的结构是 3行 2列,因此初始化错误。故答案为 B选项。 26

45、【正确答案】 C 【试题解析】 fun()函数作用冒泡法排序, flag控制升序 (0)或者降序 (1)。 n为参与排序的元素个数。 a为数组的起始地址。因此, fun(a, 4, 1),数组的前四个降序排序, fun(a+4, 6, 0)对数组的第四项后六个元素进行升序排序。故结果为 10,9, 8, 7, 1, 2, 3, 4, 5, 6。答案为 C选项。 27 【正确答案】 D 【试题解析】 第一个 for循环作用是对数组 a赋初值,从 0 9,第二个 for循环是计算数组前 4项的 ai+i的和。 0+0, 1+1, 2+2, 3+3,经计算的结果为 12,因此答案 为 D选项。 28

46、 【正确答案】 C 【试题解析】 new_div()的返回值是 int类型,因此, a b+0 5(其中 a, b均为double类型 )的小数部分被将被截断。经计算, 7 83 1+0 5=2 516+0 5=3 016,故打印的结果为 3。故答案为 C选项。 29 【正确答案】 B 【试题解析】 函数 fun的功能是在形参 a所指的具有 n个元素的数组中查找最大值并返回。通过 for循环比较, s始终指向最大值的那个元素。取指针的值,使用*p,因此比较使用 *p和 *s,需要找到最大值,当 *s *p时,修改指针 s的指向,因此答案为 B选项。 30 【正确答案】 A 【试题解析】 函数

47、strlen(char*s);计算字符串 s的长度,不包括 0在内; p指向数组的第二个元素,因此 strlen(p)=10,并打印,故答案为 A选项。 31 【正确答案】 A 【试题解析】 for循环的作用是每次遇到空格,将空格后面的移动到数组的最前面。因此数组最后的状态是 “Beijing! 0g! 0ng! neijing! 0”,但是 printf(“ s”)打印遇到 0自动结束。因此,打印 Beijing!。故答案为 A选项。 32 【正确答案】 A 【试题解析】 static静态变量只在声明时初始化一次。因此,第一次调用函数f(k=0),此时 n=m=k=0,经过自增操作 n=1, m=1, k=1,返回值为 3,第二次调用

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

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

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