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

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

1、国家二级( C语言)机试模拟试卷 104及答案与解析 一、选择题 1 下列叙述中正确的是 ( )。 ( A)数据的存储结构会影响算法的效率 ( B)算法设计只需考虑结果的可靠性 ( C)算法复杂度是指算法控制结构的复杂程度 ( D)算法复杂度是用算法中指令的条数来度量的 2 设数据集合为 D=1, 2, 3, 4, 5。下列数据结构 B=(D, R)中为非线性结构的是 ( )。 ( A) R=(1, 2), (2, 3), (3, 4), (4, 5) ( B) R=(1, 2), (2, 3), (4, 3), (3, 5) ( C) R=(5, 4), (4, 3), (3, 2), (2

2、, 1) ( D) R=(2, 5), (5, 4), (3, 2), (4, 3) 3 某二叉树共有 150个结点,其中有 50个度为 1的结点,则 ( )。 ( A)不存在这样的二叉树 ( B)该二叉树有 49个叶子结点 ( C)该二叉树有 50个叶子结点 ( D)该二叉树有 51个叶子结点 4 循环队列的存储空间为 Q(1: 50),初始状态为 front=rear=50。经过一系列正常的入队与退队操作后, front=rear=25,此后义正常地插入了一个元素,则循环队列中的 元素个数为 ( )。 ( A) 51 ( B) 50 ( C) 49 ( D) 1 5 下列排序方法中,最坏情

3、况下时间复杂度 (即比较次数 )低于 O(n2)的是 ( )。 ( A)快速排序 ( B)简单插入排序 ( C)冒泡排序 ( D)堆排序 6 下面描述正确的是 ( )。 ( A)软件测试是指动态测试 ( B)软件测试可以随机地选取测试数据 ( C)软件测试是保证软件质量的重要手段 ( D)软件测试的目的是发现和改正错误 7 下面图中属于软件设计建模工具的是 ( )。 ( A) DFD图 (数据流程图 ) ( B)程序流程图 (PFD图 ) ( C)用例图 (USE_CASE图 ) ( D)网络工程图 8 数据库 (DB)、数据库系统 (DBS)和数据库管理系统 (DBMS)之间的关系是 ( )

4、。 ( A) DB包括 DBS和 DBMS ( B) DBMS包括 DB和 DBS ( C) DBS包括 DB和 DBMS ( D) DBS、 DB和 DBMS相互独立 9 医院里有不同的科室,每名医生分属不同科室,则实体科室与实体医生问的联系是 ( )。 ( A)一对一 ( B)一对多 ( C)多对一 ( D)多对多 10 有 3个关系 R、 S和 T如下:则由关系 R和 S得到关系 T的操作是 ( )。 ( A)投影 ( B)选择 ( C)交 ( D)差 11 以下叙述错误的是 ( )。 ( A)任何能通过编译和运行的算法都一定能得到所期望的结果 ( B)一个算法所包含的操作步骤应该是有限

5、的 ( C)算法中每一条指令必须有确切的含义 ( D)算法可以用各种描述方法来进行描述 12 若有定义语句: int x=10: 则表达式 x-=x+x的值为 ( )。 ( A) 10 ( B) -20 ( C) 0 ( D) -10 13 若有定义: double a=22; int i=0 k=18; 则不符合 C语言规定的赋值语句是 ( )。 ( A) a=a+, i+; ( B) i=(a+k) =(i+k); ( C) i=a 11; ( D) i=!a; 14 以下选项中,合法的 C语言实数是 ( )。 ( A) 4e0 ( B) 4 3e0 2 ( C) E4 8 ( D) 0

6、29E 15 以下选项中,与 k=n+完全等价的表达式是 ( )。 ( A) k=n, n=n+1 ( B) n=n+1, k=n ( C) k=+n ( D) k+=n+1 16 以下叙述错误的是 ( )。 ( A)若用户标识符的命名与预定义标识符相同,命名无效 ( B)若用户标识符的命名与关键字相同,将产生编译错误 ( C)若用户标识符的命名与预定义标识符相同,预定义标识符失去原有含义 ( D)若用户标识符的命名与预定义标识符相同,可能引发运行错误 17 没有定义: doublex;,以下选项中不能将输人数据 3 14读入赋给变量 x的是( )。 ( A) scanf(“ 4 2f“, &

7、x); ( B) scanf(“ 1f“, &x); ( C) scanf(“ 1e“, &x); ( D) scanf(“ 41f“, &x); 18 若有定义: float x=1 5: int a=1, b=3, c=2; 则正确的 switch语句是 ( )。 ( A) switch(a+b) case1: printf(“* n“); case2+1: printf(“* n“); ( B) switch(int)x); casel: printf(“* n“); case2: printf(“* n“); ( C) switch(x) case1 0: printf(“* n“);

8、 case2 0: printf(“* n“); ( D) switch(a+b) case1: printf(“* n“); case c: printf(“* n“); 19 有以下程序段: #include stdio h int a, b, c; a=10; b=50; c=30; if(a b)a=b, b=c; c=a; printf(“a= d b= d c= d n“, a, b, c); 程序的输出结果是 ( )。 ( A) a=10 b=50 c=10 ( B) a=10 b=50 c=30 ( C) a=10 b=30 c=10 ( D) a=50 b=30 c=50 2

9、0 以下关于循环语句的叙述中正确的是 ( )。 ( A) dowhile 语句的循环体至少执行一次 ( B) while语句的循环体至少执行一次 ( C) for语句的循环体至少执行一次 ( D)上述 A、 B、 C说法均正确 21 有以下稃序: #include stdio h main() int x, y=0, z=0, t; do scanf(“ d“, &x); t=x 0: switch(t) ease 0: break; ease1: y+=x; continue; z+=x; while(x); printf(“ d, d n“, y, z); 程序运行时输入: -1 1 -2

10、 2 0回车,则输出结果是 ( )。 ( A) 1, 1 ( B) 1, 0 ( C) 3, -3 ( D) 3, 0 22 有以下程序: #include stdio h main() int b33=0, 1, 2, 0, 1, 2, 0, 1, 2, i, j, t=1; for(i=0; i 3; i+) for(j=i; j =i; j+) t+=bibji; printf(“ d n“, t); 程序运行后的输出结果是 ( )。 ( A) 3 ( B) 4 ( C) 1 ( D) 9 23 以下选项中能正确定义二维数组的选项是 ( )。 ( A) double a3=2*3; (

11、B) double a3; ( C) double a3=; ( D) double a23=1 0, 2 0, 3 0, 4 0; 24 若有函数定义如下: int fun(int x, int y) return x-y; 则以下涉及上述函数的说明语句错误的 ( )。 ( A) int fun(int x, y); ( B) int fun(int, int); ( C) int fun(int a, int b); ( D) int i, fun(int x, int y); 25 有以下程序: #include stdio h #define N4 main() int aNN=0,

12、i, j, k; for(i=0; i N 2; i+) for(j=i; j N-i; j+) aij=aN-i-1j: i+l; for(k=i+1: k N-i-1; k+) aki=akN-i-1: i+1; for(j=0; j N; j+) printf(“ 2d“, a1j); printf(“ n“); 执行后的输出结果是 ( )。 ( A) 1 2 2 1 ( B) 1 1 1 1 ( C) 2 1 1 2 ( D) 2 2 2 2 26 有以下程序: #include stdio h int f(int n); main() int a=3, s; S=f(a); s=s+

13、f(a); printf(“ d n“, s); int f(int n) statie int a=1; n+=a+: return n; 程序运行后的输出结果是 ( )。 ( A) 7 ( B) 8 ( C) 9 ( D) 10 27 有以下程序: #include stdio h main() ehar s6=“abcd“, “abc“, “ab; int i; for(i=0; i 3; i+)puts(si); 执行后的输出结果是 ( )。 ( A) babcd abc ab ( B) a a a ( C) abcd bcd cd ( D) a b C 28 若有以下函数: int

14、fun(char*a, char*b) int bk=0: while(*a!= 0)&(*b!= 0)&strlen(a)=strlen(b) if(*b!=*a)bk=0; break; a+; b+; bk=1; return bk; 此函数的功能是 ( )。 ( A)判断 a和 b两个字符串是否相等 ( B)将字符串 a改名为字符串 b ( C)将字符串变量 a的值赋给字符串变量 b ( D)检查字符串 a和 b中是否有 0 29 设有如下定 义和语句: 1char*s; s=“string“; 2char s7; s=“string“; 3char s=“string“; 4char

15、 s=s, t, r, i, n, g; 其中定义项可以作为字符串使用的是 ( )。 ( A) 1和 4 ( B) 1和 2 ( C) 1和 3 ( D) 3和 4 30 有以下程序: #include stdio h #include stdlib h int fun(int n) int*p; P=(int*)malloe(sizeof(int); *p=n; return*p; main() int a; a=fun(10); printf(“ d n“, a+fun(10); 程序的运行结果是 ( )。 ( A) 10 ( B) 20 ( C) 0 ( D)出错 31 有以下程序: #

16、include stdio h strut S int a, b; data2=10, 100, 20, 200; main() struct S P=data1; printf(“ d n“, +(p a); 程序运行后的输 H结果是 ( )。 ( A) 10 ( B) 11 ( C) 20 ( D) 21 32 以下叙述中正确的是 ( )。 ( A)当对文件的读 (写 )操作完成之后,必须将它关闭,否则可能导致数据丢欠 ( B)打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖 ( C)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第 1个数据

17、( D) C语言中的文件是流式文件,因此只能顺序存取数据 33 有以下程序: #include stdio h nlain() FILE*fp; int i, a6=1, 2, 3, 4, 5, 6, k; fp=fopen(“datadat“, “w+b“); fwite(&a0, sizeof(int), 1, fp); for(i=1; i 6; i+) fseek(fp, 0L, 0); fwrite(&ai, sizeof(int), 1, fp); fseek(fp, 0L, 0); fread(&k, sizeof(int), 1, fp); felose(fp); printf

18、(“ d n“, k); 程序运行后 的输出结果是 ( )。 ( A) 123456 ( B) 21 ( C) 6 ( D) 654321 34 有以下程序: #include stdio h #define S(x)(x x)*x main() int k=6, j=3; printf(“ d, d n“, S(k+j), S(j+k); 程序运行后的输出结果是 ( )。 ( A) 57, 39 ( B) 57, 57 ( C) 9, 9 ( D) 39 39 35 若要通过位运算使整型变量 a中的各位数字全部清零,以下选项正确的是 ( )。 ( A) a=a&0; ( B) a=a 10;

19、 ( C) a=a0; ( D) a=!a: 36 程序中若有以下的说明定义和语句: #include stdio h #include string hstruct STRchar hum10; int s; ; main()struct STR t, *p; p=&t; 则不能给变量 t的 s成员赋整数 99,给 num成员赋空串的语句组是 ( )。 ( A) (*p) s=99; (*p) num=“ “; ( B) p- s=99; p- num0=0; ( C) (*p) s=99; p- num0= 0; ( D) p- s: 99; strcpy(*p) num, “ “); 3

20、7 有以下程序: #include stdio h int fun(int a) int b=2; static int c=2; b+: c-; return(a+b+c); main() int k, a=2; for(k=0; k 3; k+)printf(“ d“, fun(a); printf(“ n“); 执行后的输出结果是 ( )。 ( A) 678 ( B) 666 ( C) 654 ( D) 456 38 有定义语句: int i; char s110, s210=“Program“;则能正确给 s1数组赋字符串的语句是 ( )。 ( A) for(i=0; i =7; i+

21、)s1i=s2i; ( B) s1=s2; ( C) while(s2)s1+=s2+; ( D) for(i=0; s2i; i+)sli=s2i; 39 以下程序拟读取一个姓氏,查找其对应的年龄并输出: #include stdio h #include string h #include stdlib h struct personchar name10; int age; ; struet person group6=“zhang“, 18, “wang“, 20, “li“, 19, “zhao“, 18, “liu“ 19 , *p; main() int i, flag=0; p

22、=(struet person*)malloc(sizeof(struet person); gets(&p- name); for(i=0; i 6; i+) if(stremp(p- name, groupi name)=0) printf(“ d n“, groupi age); flag=1; if(flag=0)printf(“No find! n“); 程序有语法错误,出错的是 ( )。 ( A) gets(&p- name); ( B) p=(struet person*)malloc(sizeof(struet person) ( C) if(stremp(p- name, g

23、roupi name)=0) ( D) printf(“ d n“, groupi age) 40 有以下程序: #include stdio。 h #include stdlib h main() FILE*fp; char ch, str5; if(fp=fopen(“file txt“, “wb+“)=NULL) printf(“error! n“); exit(0); ch=getchar(); while(ch!=!) fputc(ch, fp); ch=getchar(); rewind(fp); do fgets(str, 4, fp); puts(str); while(!fe

24、of(fp); felose(fp); 程序运行时输入: c: test!回车,则程序的输出结果是 ( )。 ( A) c: te st ( B) c: test ( C) c: tes t ( D) c: t est 二、程序填空题 41 下列给定程序中,函数 fun的功能是:在形参 ss所指字符串数组中查找与形参t所指字符串相同的串,找到后返回该串在字符串数组中的位置 (即下标值 ),若未找到则返回 -1。 ss所指字符串数组中共有 N个内容不同的字符串,且串长小于M。 请 在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANK1 C中。

25、不得增行或删行,也不得更改程序的结构 ! #include stdio h #include string h #define N5 #define M8 int fun(char(*ss)M, char*t) int i; *found* for(i=0; i 1; i+) *found* if(strcmp(ssi, t)=0)return2; return -1; main() char chNM=“if“, “while“, “switch“, “int“, “for“, tM; int n, i; printf(“ nThe original string n n“); for(i=

26、0; i N; i+)puts(chi); printf(“ n“); printf(“ nEnter a string for search: “); gets(t); n=fun(ch, t); *found* if(n=3)printf(“ nDont found! n“); else printf(“ nThe position is d n“, n); 三、程序修改题 42 下列给定程序中函数 fun的功能是:将长整型数中各位上为奇数的数依次取出,构成一个新数放在 t中。高位仍在高位,低位仍在低位。 例如,当 s中的数为 87653142时, t中的数为 7531。 请改正程序中的错

27、误,使它能得出正确的结果。 注意:部分源程序在文件 MODI1 C中,不得增 行或删行,也不得更改程序的结构 ! #include stdio h void fun(long s, long*t) int d; long s1=1: *found* t=0; while(s 0) d=s 10; *found* if(d 2=0) *t=t=d*s1+*t; s1*=10; s =10; main() long s, t; printf(“ nPlease enter s: “); seanf(“ 1d“, &s); fun(s, &t); printf(“The result is: 1d

28、n“, t); 四、程序设计题 43 规定输入的字符串中只包含字母和 *号。请编写函数 fun,其功能是:除了字符串前导的 *号之外,将串中其他 *号全部删除。在编写函数时,不得使用 C语言提供的字符串函数。 例如,字符串中的内容为: “*A*BC*DEF*G*”,删除后,字符串中的内容应当是: “*ABCDEFG”。 注意:部分源程序在文件 PROG1 C中。 请勿改动主函数 main和其他函数中 的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include stdio h void fun(char*a) main() char s81; void NONO(); pri

29、ntf(“Enter a string: n“); gets(s); fun(s); printf(“The string after deleted: n“); puts(s); NONO(); void NONO() *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * FILE*in, *out; int i; char s81; in=fopen(“in dat“, “r“); out=fopen(“out dat“, “w“); for(i=0; i 10; i+) fscanf(in, “ s“, s); fun(s); fprintf(out, “ s n“, s)

30、; fclose(in); fclose(out); 国家二级( C语言)机试模拟试卷 104答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 算法的基本特征包括可行性、确定性、有穷性、足够的初 始信息,算法的设计必须考虑到算法的复杂度,故 B选项错误。算法的复杂度是指该算法所需要的计算机资源的多少,即时间和空间的资源,分为时间复杂度和空间复杂度。算法控制结构在具体实现中影响程序执行时间,与算法复杂度无关,故 C选项错误。算法的时间复杂度是用算法所执行的基本运算次数来度量的,而不是算法中指令的条数,故 D选项错误。数据的存储结构与算法的复杂度有关,会影响算法的效率。故 A选项正确。

31、2 【正确答案】 B 【试题解析】 一个非空的数据结构如果满足以下两个条件:有且只有一个根结点;每一个结点最多有一个前件,也最多有一个后件,称为线性结构。不同时满足以上两个条件的数据结构就称为非线性结构。 B选项中,由 (2, 3)、 (4, 3)可知,结点 3有两个前件 2和 4,为非线性结构,故选择 B选项。 3 【正确答案】 A 【试题解析】 在树结构中,一个结点所拥有的后件个数称为该结点的度。对任何一棵二叉树,度为 0的结点 (即叶子结点 )总是比度为 2的结点多一个。二叉树中有150个结点,设叶子结点个数为 n0,度为 1的结点个数为 50,设度为 2的结点个数为 n2。 150=n

32、0+50+n2且, n0=n2+1,则 n0=50 5, n2=49 5。由于结点个数必须是整数,所以不存在这样的二叉树,故选择 A选项。 4 【正确答案】 D 【试题解析】 循环队列是队列的一种顺序存储结构,用队尾指针 rear指向队列中的队尾元素,用排头指针 front指向排头元素的前一个位置。入队运算时,队尾指针进 1(即 rear+1),然后在 rear指针指向的位置插入新元素。当 front=rear=25时可知队列空或者队列满,此后又正常地插入了一个元素说明之前队列为 窄,所以插入操作之后队列里只有一个元素。故 D选项正确。 5 【正确答案】 D 【试题解析】 对长度为 n的线性表

33、排序,常用排序方法最坏情况的时间复杂度如下表所示: 时间复杂度低于 O(n2)的排序算法是堆排序,故 D选项正确。 6 【正确答案】 C 【试题解析】 软件测试有多种方法,根据软件是否需要被执行,可以分为静态测试和动态测试,故 A选项叙述错误。软件测试应在测试之前制定测试计划,并严格执行,排除测试随意性,并且需要设计正确的测试用例,故 B选项叙述错误。软件测试就是在软件投入运行之前,尽可能多 地发现软件中的错误,改正错误是调试的过程,故 D选项叙述错误。软件测试是保证软件质量的重要手段,故 C选项正确。 7 【正确答案】 B 【试题解析】 结构化分析方法的常用工具:数据流程图 (DFD)、数据

34、字典(DD)、判定表、判定树。常用的过程设计建模工具:图形工具 (PFD图、 NS图、 PAD图、 HIPO)、表格工具 (判定表 )、语言工具 (PDL)。用例图 (USE_CASE图 )用于对系统、子系统或类的功能行为进行建模。网络工程图用于网络设备布线。属于软件设计建模工具的是程序流程图 (PFD图 ),故 B选项正确 。 8 【正确答案】 C 【试题解析】 数据库 (DB)是指长期存储在计算机内的、有组织的、可共享的数据集合。数据库管理系统 (DBMS)是数据库的机构,它是一个系统软件,负责数据库中的数据组织、数据操纵、数据维护、数据控制及保护和数据服务等。数据库系统 (DBS由如下几

35、部分组成:数据库、数据库管理系统、数据库管理员、硬件平台、软件平台,这些构成了一个以数据库管理系统为核心的完整的运行实体。数据库系统包括数据库与数据库管理系统,故 C选项正确。 9 【正确答案】 B 【试题解析】 实体集之间通 过联系来建立联接关系分为 3类:一对一联系 (1:1)、一对多联系 (1: m)、多对多联系 (m: n)。每个科室有多名医生,但每个医生只能在一个科室里,故实体科室和实体医生之间的联系是一对多,因此 B选项正确。 10 【正确答案】 D 【试题解析】 投影是指从关系模式中指定若干个属性组成新的关系。从关系中找出满足给定条件的元组的操作称为选择。这两种操作运算均是对单个

36、关系进行,不是两个关系之间的运算,故 A、 B选项错误。交: RS结果是既属于 R又属于S的记录组成的集合, RS得到一个元组,按照属性 ABC的顺序是 c32,故 C选项错误。差: RS结果是属于 R但不属于 s的记录组成的集合, RS得到 3个元组,按照属性 ABc的顺序是 a34、 b21、 ed2,故 D选项正确。 11 【正确答案】 A 【试题解析】 算法的特性包括有穷件、确定性、有效性等。有穷性是指一个算法应该包含有限的操作步骤而不能是无限的,故选项 B正确;确定性是指算法中每一个步骤应当是确定的,而不能是含糊的、模棱两可的,故选项 C正确;算法可以使用自然语言、流程图、伪代码等多

37、种描述方法来进行描述,故选项 D正确;算法的有效性是指算法中每一个步骤应当能有效 地执行,并得到确定的结果,至于结果是否符合期望,另当别论,故 A选项错误,因此答案选 A。 12 【正确答案】 D 【试题解析】 表达式 x-=x+x等价于 x=x-(x+x), x取值为 10,所以结果为: 10-20=-10,答案选 D。 13 【正确答案】 C 【试题解析】 自增、自减操作符适用于 char、 short、 int、 long、 float、 double等类型,故选项 A正确;赋值操作符 “=”的优先级小于比较操作符 “ =”,所以选项 B等价于: i=(a+k) =(i+k);,即将后面

38、比较操作 符的结果赋值给 i,故选项B也正确; “!”是逻辑非运算符, i=!a表示将 a表达式的值取反,赋值给 i,故选项D也正确;求模运算符 “ ”的操作数只能是整数,故选项 C错误,因此答案选C。 14 【正确答案】 A 【试题解析】 C语言中,实数有两种形式:十进制小数形式和指数形式。由 4个选项可知,本题考查的是实数的指数形式,指数形式一般为: aEn,其中 a为十进制数, n为十进制整数,表示的值为: a10n; B、 C选项错在阶码必须是整数, D选项错在无阶码,故答案为 A, A的值为: 0 4100=0 4。 15 【正 确答案】 A 【试题解析】 本题考查后缀自增 +运算符

39、, n+表示 n的当前值参与运算后,再自增 1,所以表达式 k=n+等价于 k=n, n=n+1,故答案选 A。 16 【正确答案】 A 【试题解析】 标识符分为关键字、预定义标识符、用户标识符,关键字不可以作为用户标识符,故选项 B正确;预定义标识符可以作为用户标识符,原来的预定义标识符将会被用户标识符覆盖,预定义标识符的原意失效,故选项 A错误,选项 C正确;用户标识符与预定义标识符同名时,可能会导致运行错误,故选项 D正确,因此答案为 A。 17 【正确答案】 A 【试题解析】 scanf()函数格式字符串的一般形式为: 输入数据宽度 长度 类型。输入数据宽度必须是十进制的整数,它没有精

40、度控制, 4 2f是错误的,不能企图用此语句输入小数点为 2位的实数,故选项 A错误; scanf()函数的长度格式符为 l和 h, lf表示用小数形式输入双精度浮点数,满足条件,故选项 B正确; le表示用指数形式输入双精度浮点数,满足条件,故选项 C正确; 4lf表示用小数形式输入宽度为 4的双精度浮点数,故选项 D正确,因此答案为 A。 18 【正确答案】 A 【试 题解析】 switch语句的一般形式为: switch(表达式 ) case常量表达式 1:语句 1; case常最表达式 2:语句 2; default:语句 n; 其中 switch后的表达式只能是整型或字符型,故 C选

41、项错误; case后面必须是常量表达式,所以 D选项错误; switch()右括号后面不能有分号。故选项 B错误,因此答案选 A。 19 【正确答案】 A 【试题解析】 形式为 “if(表达式 )语句 ”的 if作用到语句的第一个分号结束,所以本题中 if语句的作用范围为 a=b, b=c;由于 if条件为 false,所以这两条语句不执行,执行 c=a语句,所以程序最终输出结果: 10, 50, 10,答案为 A。 20 【正确答案】 A 【试题解析】 while(表达式 )当表达式为 false时,循环体一次都不执行,故选项B、 D错误; for(表达式 1;表达式 2;表达式 3)语句,

42、当表达式 2为 false时,循环体一次都不执行,故选项 C错误; do-while语句循环体至少执行一次,故答案选 A。 21 【正确答案】 C 【试题解析】 分析程序结构,在 dowhile 循环中,嵌套一个 swich语句,switch语句中两 个 case语句分别执行 break和 continue,其中 break语句是跳出swiich语句,接着执行 dowhik 循环体剩下的部分;而 continue语句是直接进入dowhile 的下一个循环,由此可知每次循环,当 t=0时,执行 break语句,接着将 z值累加 x;当 t=1时,执行 continue语句,将 y值累加 x,所以

43、当 x输入 -1、 -2、 0时, t=0, z值累加为 -3;当 x输入 1、 2时, t=1, y值累加为 3,输出 y、 z的值分别为 3、 -3,故答案选 C。 22 【正确答案】 B 【试题解析】 分析程序可 以发现,内层 for循环每次只执行一次:即当 j=i时。所以可以使用 i替换 j,去掉 for循环,对应外层 for循环的 i,执行t+=bibii,所以当 i取值 0、 1、 2时, t的值累加 b0b00、b1b11、 b2b22,即 b00、 b11、 b22,对应的值为: 0、 1、2, t取值为 4(t初始值为 1)。故答案选 B。 23 【正确答案】 A 【试题解析

44、】 如果第一维的长度没有指定,则定义的同时需要完成初始化,否则不知道分配多大的内 存空间给它,所以选项 B、 C错误;二维数组 a23中只有两个元素,都是一维数组,一维下标最大只能是 a1,所以选项 D错误;若完成初始化的二维数组,第一维的长度没有指定,则第一维的大小按如下规则确定:若初值个数能被第二维大小整除,所得的商就是第一维的大小;若不能整除,则所得的商加 1作为第一维的大小,所以选项 A相当于: douhle a13=|6|;其中a00=6,其他元素赋值 0,故选项 A正确,答案为 A。 24 【正确答案】 A 【试题解析】 C语言中函数的说明形式为:类型说明符函 数名 (类型形参名

45、1,类型形参名 2, ) ;其中形参名可以直接省略,故选项 B、选项 C正确,选项 D中,变量 i和函数同时声明,正确; A选项中的说明语句中省略类型,故错误。 25 【正确答案】 A 【试题解析】 本题程序需要输出二维数组 a中第二行的各个元素值,即 a1这个一维数组的元素值。分析程序可知只有在两种情况下才会对 a1中的元素赋值: 外层 for循环中 i=0时,内层第二个 for循环的 k取值为 1,此时aki=a10=t, akN-i-1=a13=1; 外层 for循环中 i=1时,内层笫一个for循环的 j取值为 1、 2, aij=a1j=2,即 a11=2, a12=2。除了这两种情

46、况,其他情况不会修改 a1中的值,所以最终 a1各个元素的值为: 1、 2、 2、1,故答案选 A。 26 【正确答案】 C 【试题解析】 首先 main函数中的局部变量 a和 f()函数中的静态局部变量 a的作用域都只限在其所在的函数中,相互之间不影响,看作两个小同的变量即可。另外, f()函数中的静态局部变量 a只在第一次调用 f()函数时初始化一次,其他调用都会保留上一次渊 用结束时的值。分析 main函数可知,第一次调用时将 f(a)的返回值赋给 s,所以语句可以改写为: s=f(a)+f(a),即 main函数中调用两次 f(a),传入的参数 a取值都为 3,第一次调用时,静态局部变

47、量初始化为 1,所以 n=4并返回, a自增为 2;第二次调用时静态局部变量 a取上一次调用结束时的值 2,所以n=5并返回, a自增为 3,所以在 main()函数中, s=4+5=9,所以函数执行完输出结果为 9,答案为 C。 27 【正确答案】 A 【试题解析】 程序初始化一个二维数组,其中每个元素都是一个字符数组, for循环中使用字符串输出函数 puts()打印二维数组侦破那个的每个元素, puts()接受字符数组名当做参数,将该字符数组存储的字符串打印出来,程序中 s0存储的字符串是 “abecd”, s1存储的字符串是 “abc”, s2存储的字符串是 “ab”,所以程序输出为: abcd、 abc、 ab,答案选 A

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

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

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