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

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

1、国家二级( C语言)机试模拟试卷 99及答案与解析 一、选择题 1 下列数据结构中,属于非线性结构的是 ( )。 ( A)循环队列 ( B)带链队列 ( C)二叉树 ( D)带链栈 2 下列数据结构中,能够按照 “先进后出 ”原则存取数据的是 ( )。 ( A)循环队列 ( B)栈 ( C)队列 ( D)二叉树 3 对于循环队列,下列叙述中正确的是 ( )。 ( A)队头指针是固定不变的 ( B)队头指针一定大于队尾指针 ( C)队头指针一定小于队尾指针 ( D)队头指针可以大于队尾指针,也可以小于队 尾指针 4 算法的空间复杂度是指 ( )。 ( A)算法在执行过程中所需要的计算机存储空间

2、( B)算法所处理的数据量 ( C)算法程序中的语句或指令条数 ( D)算法在执行过程中所需要的临时工作单元数 5 软件设计中划分模块的一个准则是 ( )。 ( A)低内聚低耦合 ( B)高内聚低耦合 ( C)低内聚高耦合 ( D)高内聚高耦合 6 下列选项中不属于结构化程序没计原则的是 ( )。 ( A)可封装 ( B)自顶向下 ( C)模块化 ( D)逐步求精 7 软件详细设计生产的图如图:该图是 ( )。 ( A) NS图 ( B) PAD图 ( C)程序流程图 ( D) ER图 8 数据库管理系统是 ( )。 ( A)操作系统的一部分 ( B)在操作系统支持下的系统软件 ( C)一种编

3、译系统 ( D)一种操作系统 9 在 ER图中,用来表示实体联系的图形是 ( )。 ( A)椭圆形 ( B)矩形 ( C)菱形 ( D)三角形 10 有三个关系 R、 S和 T如下: 其中关系 T由关系 R和 S通过某种操作得到,该操作为 ( )。 ( A)选择 ( B)投影 ( C)交 ( D)并 11 以下关于结构 化程序设计的叙述中正确的是 ( )。 ( A)结构化程序使用 goto语句会很便捷 ( B)在 C语言中,程序的模块化是利用函数实现的 ( C)一个结构化程序必须同时由顺序、分支、循环三种结构组成 ( D)由三种基本结构构成的程序只能解决小规模的问题 12 对于一个正常运行的

4、C程序,以下叙述中正确的是 ( )。 ( A)程序的执行总是从 main函数开始,在程序的最后一个函数中结束 ( B)程序的执行总是从程序的第一个函数开始,在 main函数结束 ( C)程序的执行总是从 main函数开始 ( D)程序的执行总 是从程序的第一个函数开始,在程序的最后一个函数中结束 13 以下选项中能表示合法常量的是 ( )。 ( A) 1, 200 ( B) 1 5E2 0 ( C) ( D) 007 14 以下定义语句中正确的是 ( )。 ( A) int a=b=0; ( B) char A=65+1, b=h; ( C) float a=1, *b=&a, *c=&b;

5、( D) double a=0 0; b=1 1; 15 若变量 x、 y已正确定义并赋值,以下符合 C语言语法的表达式是 ( )。 ( A) x+1=y ( B) +x, y=x- ( C) x=x+10=x+y ( D) double(x) 10 16 若变量已正确定义为 int型,要通过语句: scanf(“ d, d, d“, &a, &b, &c); 给 a赋值 1、给 b赋值 2、给 c赋值 3,以下输入形式中错误的是 ( )。 (注: 代表一个空格符 ) ( A) 1, 2, 3回车 ( B) 1, 2, 3回车 ( C) 1, 2, 3同车 ( D) 123回车 17 以下不能

6、输出字符 A的语句是 ( )。 (注:字符 A的 ASCII码值为 65,字符 a的ASCII码值为 97) ( A) printf(“ c n“, a-32); ( B) printf(“ d n“, A); ( C) printf(“ c n“, 65); ( D) printf(“ c n“, B-1); 18 若 a是数值类型,则逻辑表达式 (a=1)|(a!=1)的值是 ( )。 ( A) 1 ( B) 0 ( C) 2 ( D)不知道 a的值,不能确定 19 设有定义: int a=1, b=2, c=3; 以下语句中执行效果与其他三个不同的是 ( )。 ( A) if(a b)

7、c=a, a=b, b=c; ( B) if(a 1) c=a, a=b, b=c; ; ( C) if(a b) c=a; a=b; b=c; ( D) if(a b) c=a; a=b; b=c; ; 20 有以下程序: #include stdio h main() int y=lO; while(y-); printf(“y= d n“, y); 程序执行后的输出结果是 ( )。 ( A) y=0 ( B) y=-1 ( C) y=1 ( D) while构成无限循环 21 有以下程序: #include stdio h main() int i, j; for(i=1; j 4; i

8、+) for(j=i; j 4; j+)printf(“ d* d= d“, i, j, i*j); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) 1*1=1=1 1*2=2 1*3=3 2*2=4 2*3=6 3*3=9 ( B) 1*1=1 1*2=2 1*3=3 2*1=1=2 2*2=4 3*1=3 ( C) 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 ( D) 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 22 有以下程序: #include stdio h main() int i=5; do if(i

9、 3=1) if(i 5=2) printf(“* d“, i); break; i+: while(i!=0); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) *2*6 ( B) *3*5 ( C) *5 ( D) *7 23 有以下程序: #include stdio h double f(double x); main() double a=0; int i; for(i=0; i 30; i+=10)a+=f(double)i); printf(“ 3 0f n“, a); double f(double x) return x*x+1; 程序运行后的输出结果

10、是 ( )。 ( A) 500 ( B) 401 ( C) 503 ( D) 1404 24 若有以下函数首部: int fun(double x10, int; *n) 则下面针对此函数的函数声明语句中正确的是 ( )。 ( A) int fun(double, int); ( B) int fun(double*, int*); ( C) int fun(double*x, int n); ( D) int fun(double x, int*n); 25 有以下程序: #include stdio h main() int m=1, n=2, *p=&m, *q=&n, *r; r=p;

11、 p=q; q=r; printf(“ d, d, d, d n“, m, n, *p, *q); 程序运行后的输出结果是 ( )。 ( A) 2, 1, 1, 2 ( B) 1, 2, 1, 2 ( C) 2, 1, 2, 1 ( D) 1, 2, 2, 1 26 若有以下定义: int x10, *pt=x; 则对 x数组元素的正确引用是 ( )。 ( A) pt+3 ( B) *&x10 ( C) *(pt+10) ( D) *(x+3) 27 有以下程序: #include stdio h main() int i, s=0, t=1, 2, 3, 4, 5, 6, 7, 8, 9;

12、for(i=0; i 9; i+=2)s+=*(t+i); printf(“ d n“, S); 程序执行后的输出结果是 ( )。 ( A) 20 ( B) 25 ( C) 45 ( D) 36 28 有以下程序: #include stdio h #define N4 void fun(int aN, int b) int i; for(i=0; i N; i+)bi=aii; main() int xN=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, yN, i; fun(x, y); for(i=0; i N; i+)printf(“ d, “, yi); printf(“

13、 n“); 程 序运行后的输出结果是 ( )。 ( A) 1, 0, 7, 0, ( B) 1, 2, 3, 4, ( C) 1, 4, 5, 9, ( D) 3, 4, 8, 10, 29 设有定义: char*c; 以下选项中能够使 c正确指向一个字符串的是 ( )。 ( A) char str()=“string“; c=str; ( B) seanf(“ s“, c); ( C) c=getehar(); ( D) *c=“string“; 30 若有定义语句: char s10=“1234567 0 0“; 则 strlen(s)的值是 ( )。 ( A) 7 ( B) 8 ( C)

14、 9 ( D) 10 31 有以下程序: #include stdio h #include string h main() char p20=a, b, c, d, q=“abc“, r=“abcde“; streat(p, r); strepy(p+strlen(q), q); printf(“ d n“, strlen(p); 程序运行后的输出结果是 ( )。 ( A) 11 ( B) 9 ( C) 6 ( D) 7 32 有以下程序 (说明:字母 A的 ASCII码值是 65): #include stdio h void fun(char*s) while(*s) if(*s 2)p

15、rintf(“ c“, *s); s+: main() char a()=“BYTE“; fun(a); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) BT ( B) YE ( C) YT ( D) BY 33 有以下程序: #include stdio h int fun() static int x=1: x+=1: return x; main() int i, s=1; for(i=1; i =5; i+) s+=fun(); printf(“ d n“, s); 程序运行后的输出结果是 ( )。 ( A) 120 ( B) 1 ( C) 6 ( D) 21

16、34 有以下程序: #include stdio h void fun2(char a, char b) pfintf(“ c c“, a, b); char a=A, b=B; void fun1() a=C:; b=D; main() fun1(); printf(“ c c“, a, b); fun2(E, F); 程序运行后的输出结果是 ( )。 ( A) A B E F ( B) C D E F ( C) A B C D ( D) C D A B 35 以下关于 typedef的叙述错误的是 ( )。 ( A)用 typedef可以增加新类型 ( B) typedef只是将已存在的类

17、型用一个新的名字来代替 ( C)用 typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名 ( D)用 typedef为类型说明一个新名,通常可以增加程 序的可读性 36 程序中已构成如下图所示的不带头结点的单向链表结构,指针变量 s、 p、 q均已正确定义,并用于指向链表结点,指针变量 s总是作为指针指向链表的第一个结点。 若有以下程序段: q=s; s=s- next; p=s; while(p- next)p=p- next: p- next=q; q- next=NULL; 该程序段实现的功能是 ( )。 ( A)删除尾结点 ( B)尾结点成为首结点 ( C)删除首结点

18、 ( D)首结点成为尾结点 37 有以下程序: #include stdio h #define S(x)4*(x)*x+1 main() int k=5, j=2; printf(“ d n“, S(k+j); 程序运行后的输出结果是 ( )。 ( A) 33 ( B) 197 ( C) 143 ( D) 28 38 符有以下稗序段: int r=8: printf(“ d n“, r 1): 程序运行后的输出结果是 ( )。 ( A) 16 ( B) 8 ( C) 4 ( D) 2 39 以下叙述中错误的是 ( )。 ( A) gets函数用于从终端读入字符串 ( B) getchar函数

19、用于从 磁盘文件读入字符 ( C) fputs函数用于把字符串输出到文件 ( D) fwrite函数用于以二进制形式输出数据到文件 40 有以下程序: #include sldio h main() FILE*pt; (thar*s1=si=“China“, *s2=“Beijing“; pf=fopen(“abc dat“, “wb+“); fwrite(s2, 7, 1 pf); rewind(pf); *文件位置指针回到文件开头 * fwrite(s1, 5, 1, pf); fclose(pf); 以上程序执行后 abc dat文件的内容是 ( )。 ( A) China ( B) C

20、hinang ( C) ChinaBeijing ( D) BeijingChina 二、程序填空题 41 下列给定程序的功能是:从键盘输入若十行字符串 (每行不超过 80个字符 ),写入文件 mvfile4 txt中,用 -1作字符串输入结束的标志,然后将文件的内容显示在屏幕上。文件的读写分别由函数 ReadText和 Write Text实现。 请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! #include stdio h #include string h #include

21、stdlib h void WriteText(FILE*); void ReadText(FILE*); main() FILE*fp; if(fp=fopen(“myfile4 txt“, “w“)=NULL) printf(“open fail! n“); exit(0); WriteText(fp); fclose(fp); if(fp=fopen(“mytile4 txt“, “r“)=NULL) printf(“open fail! n“); exit(0); ReadText(fp); fclose(fp); *found* void WriteText(FILE1) char

22、str81; printf(“ nEnter string with-1 to end: n“); gets(str); while(strcmp(str, “-1“)!=0) *found* fputs(2, fw); fputs(“ n“, fw); gets(str); void ReadText(FILE*fr) char str81; printf(“ nRead file and output to screen: n“); fgets(str, 81, fr); while(!feof(fr) *found* printf(“ s“, 3); fgets(str, 81, fr)

23、; 三、程序修改题 42 下列给定程序中函数 fun的功能是:将 p所指字符串中的所有字符复制到 b中,要求每复制三个字符之后插入一个空格。 例如,若给 a输入字符串: ABCDEFGKHIJK,调用函数后,字符数组 b中的内容为: ABC DEF GHI JK。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件 MODI1 C中,不得增行或删行,也不得更改程序的结构。 #include stdio h void fun(char*p, char*b) int i, k=0; while(*p) i=1; while(i =3&*p) *found* bk=p; k+; P+

24、; i+; if(*p) *found* bk+=“ “; bk= 0; main() char a80, b80; printf(“Enter a string: “); gets(a); printf(“The original string: “); puts(a); fun(a, b); printf(“ nThe string after insert space: “); puts(b); printf(“ n n“); 四、程序设计题 43 请编写函数 fun,其功能是:判断 t所指字符串中的字母是否由连续递增字母序列组成 (字符串长度大于等于 2)。例如字符串: uvwxyz满

25、足要求;而字符串:uvxwyz不满足要求。 注意:部分源程序存放在 PROG1 C中,请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun指定的部位填入所编写的若干语句。 试题程序: #include stdio h #include string h void NONO(); int fun(char*t) main() char s26; printf(“请输入一个字母组成的字符串: “); gets(s); if(fun(s)printf(“ s是由连续字母组成的字符串 n“, s); else printf(“ S不是由连续字母组成的字符串 ! n“, s); NONO()

26、; void NONO() *本函数用于打开文件,输人数据,调用函数,输出数据,关闭文件。 * FILE*fp, *wf; int i; char s26, *p; fp=fbpen(“in dat“, “r“); wf=fopen(“out dat“, “w“); for(i=0; i 10; i+) fgets(S, 26, fp); p=strchr(s, n); if(p)*p=0; if(fun(s)fprintf(wf, “ s n“, s+2); else fprintf(wf, “ s n“, strrev(s); Mose(fp); fclose(wf); 国家二级( C语言

27、)机试模拟试卷 99答案与解析 一、选择题 1 【正确答案】 C 【试题解析】 树是简单的非线性结构,所以二叉树作为树的一种也是一种非线性结构。 2 【正确答案】 B 【试题解析】 栈是按先进后出的原则组织数据的。队列是先进先出的原则组织数据。 3 【正确答案】 D 【试题解析】 循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作要进行变化。因为是循环利用的队列结构,所以队头指针有时可能大于队尾指针,有时也可能小于队尾指针。 4 【正确答案】 A 【试题解析】 算法的空间复杂度是指算法在 执行过程中所需要的内存空间。所以选择 A。 5 【正确答案】 B 【试题解析】 一般较优秀的软件

28、设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。 6 【正确答案】 A 【试题解析】 结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用 goto语句,所以选择 A。 7 【正确答案】 C 【试题解析】 NS图提出了用方框图来代替传统的程序流程图,所以 A不对。PAD图是问题分析图,它是继承程序流程图和方框图之后提出的又一种主 要用于描述软件详细设计的图形表示工具,所以 B不对。 ER图是数据库中的用于表示ER模型的图示工具,所以 D不对。根据图中所示表示方法是进行软件详细设计时使用的程序流程图。 8 【正确答案】 B 【试题解析

29、】 数据库管理系统是数据库的机构,它足一种系统软件,负责数据库中数据组织、数据操纵、数据维护、控制及保护和数据服务等。是一种在操作系统之上的系统软件。 9 【正确答案】 C 【试题解析】 在 ER图中实体集用矩形,属性用椭网,联系用菱形。 10 【正确答案】 D 【试题解析】 关系 T中包含了关系 R与 s中的所有元组,所以进行的是并的运算。 11 【正确答案】 B 【试题解析】 滥用 goto语句将使程序的流程毫无规律,可读性差,对于初学者来说尽量不要使用,所以 A错误。一个结构化程序可以包含顺序、分支、循环结构中的一种或多种,所以 C错误。由三种基本结构构成的程序可以解决任何复杂的问题。所

30、以 D错误。 12 【正确答案】 C 【试题解析】 任何一个 C程序都是从主函数 main开始,至主函数 main结束,所以选择 C选项。 13 【正确答案】 D 【试题解析】 A选 项中整型常量应表示为 1200,不能包含 “, ”。 B选项中 E后面的指数必须为整数。 C选项中转义字符以 “ ”开始,若要表示字符 “ ”,应写为 “ ”。 14 【正确答案】 B 【试题解析】 A选项语句中 b变量还没有定义不能直接用于给 a变量赋值。 C选项语句中 *b、 *c表示的是一个文型变量的地址,不能再将 &b赋值给指针型变量c。 D选项语句中 a=0 0后面应该为逗号,不能是分号。 15 【正确

31、答案】 B 【试题解析】 A选项中不能将变量 y赋给表达式, C选项中错误与 A选项一样,D选项中强制类型转换表达 式应写成 (double)x 10。 16 【正确答案】 D 【试题解析】 scanf()的格式控制串可以使用其他非空白字符,如本题中的逗号,但在输入时必须输入这些字符,以保证匹配。所以逗号必须输入。 17 【正确答案】 B 【试题解析】 B选项输出的格式为 d,即为整型格式,所以输出字符 A的ASCII码值 65,而不是字符 A。由于大写字母比与其对应的小写字母的 ASCII码值小 32,所以 A正确。字符 A的 ASCII码值就是 65,所以以 c格式输出可以输出字符 A,所

32、以 C正确。由于字符 A的 ASCIl码值比字符 B的小 1,所以 D正确。 18 【正确答案】 A 【试题解析】 逻辑或 “|“要求只要两边的运算对象有一个非零,结果就为真。虽然不知道 a的值,但是若 a为 1,则左边运算对象为 1;若 a的值不是 1,则右边运算对象的值为 1,所以总能保证一边非零,所以结果为真,即 1。 19 【正确答案】 C 【试题解析】 由于 a小于 b,所以所有选项中的条件都为假, C选项中实际执行了 a=b; b=c;两个操作。而 A、 B、 D选项由于条件不成立,所以什么也没有做,所以选择 C选项。 20 【正确答案】 B 【试题解析】 执行 y-直到值为 0,

33、由于 y-是先用再减,所以退出循环时, y的值为 -1。 21 【正确答案】 A 【试题解析】 外循环第一次 i的值为 1,内循环第一次 j的初值为 1,打印1*1=1;内循环第二次 j的值为 2,打印 1*2=2;内循环第三次 j的值为 3,打印1*3=3,打印回车换行,退出内循环。外循环第二次 i的值为 2,内循环第一次 i的初值为 2,打印 2*2=4;内循环第二次 j的值为 3,打印 2*3=6,打印回车换行,退出内循环。外循环第三次 i的值为 3,内循环第一次 j的初值为 3,打印 3*3=9,打印回车换行,退出内循环。 22 【正确答案】 D 【试题解析】 do.while语句是先

34、执行后判断,所以第一次先执行循环体,判断j 3=1的条件,由于 j为 5,所以余数为 2,条件不成立,执行 i+, i的值为6,判断 while条件为真;第二次执行循环体,同第一次循环的执行过程一样, i的值变为 7,判断 while条件为真;第三次执行循环体,此时 i 3=1,条件成立,再判断 i 5=2也成立,打印 *与 i的值,即 *7,然后执行 break语句,跳出循环。所以选择 D选项。 23 【正确答案】 C 【试题解析】 本题重点考察函数的定义和调用,第一次循环, a=0, i=0,返回值a=0*0+1+0=1;第二次循环, a=1, i=10,返回值 a=10*10+1+1=1

35、02;第三次循环, a=102, i=20,返回值 a=20*20+1+102=503;第四次循环, a=503, i=30;不符合 i 30,跳出循环,最后结果输出 a=503。 24 【正确答案】 B 【试题解析】 函数声明的一般形式为: “类型说明符被调函数名 (类型形参,类型形参, ) ; ”或 “类型说明符被调函数名 (类型,类型, ) ; ”由于 函数首部为int fun(double x10, int*n),因此 B选项正确。 25 【正确答案】 D 【试题解析】 int m=1, n=2, *p=&m, *q=&n, *r;即指针变量 p指向 m,指针变量 q指向 n, r=p

36、; p=q; q=r;即通过指针变量 r,将指针 p和指针 q的指向交换、因此最后输出 1, 2, 2, 1。 26 【正确答案】 D 【试题解析】 没有 A选项的引用形式 *与 &放在一起作用抵消,所以 B选项错误,最大只能引用到 x9、 *(pt+i)表示引用指针 pt所指元素后的第 i个元素, 所以 C选项错误,最大只能为 *(pt+9)。因此 D选项正确 27 【正确答案】 B 【试题解析】 统计 1 9九个数中的奇数和,此题考察指向数组的指针。 C语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此 *(1+i)代表数组的第 i+1个元素。守运行的结果是 1+3+5+7+9=

37、2=5。 28 【正确答案】 A 【试题解析】 该程序首先存定义变量时,对二维数组 aN进行赋他操作;调用函数 fun,函数 fun的功能是将二维数组中的 a00、 a11、 a22和 a33赋值给一维数组,最后将一维数组元素 1, 0, 7, 0,输出。 29 【正确答案】 A 【试题解析】 A选项为证确用法,先将字符串存在于字符数组中,然后将数组名赋给字符指针 (数组名代表数组首地址,定义数组时为其分配确定地址 )。 C选项错误, getchar()函数只能输入一个字符给字符型变量,而不是字符指针。 B选项和 D选项有类似的错误,两个选项并无语法错误,但运行时可能会出现问题。因为存B选项和

38、 D选项中,字符指针没有被赋值,是个不确定的值,指向一个不确定的内存区域,这个区域可能存放有的指令或数据。在 这个不确定的区域重新存放字符串,可能会发生无法预知的错误。因此 A选项正确。 30 【正确答案】 A 【试题解析】 strlen()函数存计算字符串长度时,遇到结束标识为止,且长度不包括结束标识。本题中字符串,从第一个字符开始,遇到第一个结束标识 0为止,注意 0不占字符串场度,所以字符串长度为 7。因此 A选项正确。 31 【正确答案】 C 【试题解析】 strcpy:字符串拷函数; strlen:求字符串长度函数 (注意:不包含字符串结束标识符 0); streat:字符串连接函数

39、。 执行完语句 strcat(p r);后, p数组中存储的元素为 a, b, c, d, a, b, c, d, p;执行语句strcpy(p+strlen(q), q);得到的结果是将 q所指向的字符串拷贝至 p+strlen(q)开始的存储位置,因为 strlen的值为 3,即从 p+3开始存储 q中的元素,所以执行完strcpy(p+strlen(q), q)语句后,字符数组 p20的仔储元素为 a, b, c, a, b, c;所以 strlen(p)的结果为 6因此 C选项正确。 32 【正确答案】 B 【试题解析】 本题中执行 fun(a)时 ,会取字符串 a的第一个字母 B,因

40、为字母 B的 ASCII码值为 66,所以不会输出之母 B,函数只会输出 ASCII码值为奇数的之母,之母 Y的 ASCII码值为 89,字母 T的 ASCII码值为 84,字母 E的 ASCII码值为 69,因此 B选项正确。 33 【正确答案】 D 【试题解析】 fun函数中的变量 x为静态的局部变量,占用固定的内存单元,下一次调用时仍可以保留上次调用时的值。也就是说,如果多次调用 fun函数, x的定义只在第一次调用时有效,从第二次调用开始, x的定义卡相当于不存在,直接使用上次 x的值, fun函数 被调用了 5次,每次调用后的返回值累加到 s上, 5次调用后, x的值为 6, s的值

41、为 1+2+3+4+5+6=21,因此 D选项正确。 34 【正确答案】 B 【试题解析】 本题考察的是变量的作用范围。如果在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范同内,外部变量被 “屏蔽 ”,即不起作用。本题中,在 fun1()和 main()函数内访问的是全局变量 a和 b,在 fun2()函数中访问的是参变量 a和 b,所以, main()函数中的 printf()函数输出的是在 fun1()函数中被改变的全局变量 a和 b的值 C、 D,而 fun2()函数中输出的是传递给它的实参值 E、 F。因此 B选项正确。 35 【正确答案】 A 【试题解析】 typede

42、f并不是增加了新类型,而是用一个新名字替代已存在的类型,不能为变量说明一个新名,使用 typedef可以增强程序的可移植性。所以 A选项错误。 36 【正确答案】 D 【试题解析】 本题考查链表的操作,本题中首先是 s指向了,它的下个结点,题目中说明了 s总是指向链表的第一个结点,然后 while循环找到链表的最后一个元素,然后最后一个元素指向了之前链表的头结点,之前头结 点指向了空结点,所以本题实现的功能是使首结点成为尾结点。选项 D正确。 37 【正确答案】 C 【试题解析】 本题考查带参数的宏定义, S为带参数的宏定义,运行 S(k+j)为4*(k+j)*k+j+1=143,选项 C正确

43、。 38 【正确答案】 C 【试题解析】 本题考查位运算,属于基础知识,题目中将整型变量 8,二进制表达为 00001000,右移一位为 00000100,即 4,选项 C正确 39 【正确答案】 B 【试题解析】 本题号考查字符处理函数和文件操作函数数,属于基础知以,其中B选项 gelchar函数是用于从终端读入一个字符。 40 【正确答案】 B 【试题解析】 本题考查文件操作函数, fwrite和 rewind函数,题目中先是将 s2字符串写入 abc dat中,然后将写指针回到文件开头,然后写入 s1字符串,那么s1字符串就将前 5个字符覆盖,所以最终结果为 Chinang,选项 B正确

44、。 二、程序填空题 41 【正确答案】 (1)*fw (2)str (3)str。 【试题解析】 本题考查:函数定义以及文件指针; fputs函数的功能是向指定的文件写入一个字符串,其调 用形式为: fputs(字符串,文件指针 )。 三、程序修改题 42 【正确答案】 (1)bk=*p; (2)bk= ; k+;。 【试题解析】 本题考查:指针类型变量作为函数的参数,函数的参数不仅可以是整型、实型、字符型等数据类型,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。 C语言中为了表示指针变量和它所指向的变量之间的关系,在程序中用 “*”符号表示 “指向 ”,例如, pointe

45、r代表指针变量,而 *pointer是 pointer所指向的变量。 四、程序设计题 43 【正确答案】 int fun(char*1) int len=strlen(t); if(len 2) return 0: char before_ch=t0; char current_ch; int flag=1; for(int i=1; ti!= 0; +i) current_ch=ti; if(before_ch!=current_ch_1) flag=0: break; before ch=current_ch; return flag;。 【试题解析】 函数 fun的功能是判断指针 t指向的字符串是否是由连续递增的字母构成,返回值为整数, 0代表不满足条件。根据题口要求,字符串长度必须大丁等丁 2,所以首先需要对 t指向的字符串进行长度判断,小丁 2的字符串返回 0。接着需要对字符串中的连续字符,逐个进行比较。 C语言中字符变量可以当作整数使用,所以当前字符只有是前一个字符的 ASCII码 +1,才能说它们是连续递增字母序列,然后比较后一个字符与当前字符的 ASCII码,如果字符串中的所有字符都满足条件,则返回 1;否则说明该字符串不满足要求,此时设置 flag=0, 后面的字符也就不需要再比较了,跳出循环返回即可。

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

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

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