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

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

1、国家二级( C语言)机试模拟试卷 100及答案与解析 一、选择题 1 下列关于栈叙述正确的是 ( )。 ( A)栈顶元素最先能被删除 ( B)栈顶元素最后才能被删除 ( C)栈底元素永远不能被删除 ( D)栈底元素最先被删除 2 下列叙述中正确的是 ( )。 ( A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化 ( B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化 ( C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化 ( D)以上说法都不正确 3 某二叉树共有 7个结 点,其中叶子结点只有 1个,则该二叉树的深度为 (假设根结点在第 1层 )( )。 ( A)

2、3 ( B) 4 ( C) 6 ( D) 7 4 软件按功能可以分为应用软件、系统软件和支撑软件 (或工具软件 )。下面属于应用软件的是 ( )。 ( A)学生成绩管理系统 ( B) C语言编译程序 ( C) UNIX操作系统 ( D)数据库管理系统 5 结构化程序所要求的基本结构不包括 ( )。 ( A)顺序结构 ( B) GOTO跳转 ( C)选择 (分支 )结构 ( D)重复 (循环 )结构 6 下面描述中错误的是 ( )。 ( A)系统总体结构图支持软件系统的详细设计 ( B)软件设计是将软件需求转换为软件表示的过程 ( C)数据结构与数据库设计是软件设计的任务之一 ( D) PAD图

3、是软件详细设计的表示工具 7 负责数据库中查询操作的数据库语言是 ( )。 ( A)数据定义语言 ( B)数据管理语言 ( C)数据操纵语言 ( D)数据控制语言 8 一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是 ( )。 ( A) 1: 1联系 ( B) 1: m联系 ( C) m: 1联系 ( D) m: n联系 9 有 三个关系 R、 S和 T如下: 则由关系R和 S得到关系 T的操作是 ( )。 ( A)自然连接 ( B)并 ( C)交 ( D)差 10 定义无符号整数类为 UInt,下面可以作为类 UInt实例化值的是 ( )。 ( A) -369 (

4、 B) 369 ( C) 0 369 ( D)整数集合 1, 2, 3, 4, 5 11 以下叙述中错误的是 ( )。 ( A) C程序在运行过程中所有计算都以二进制方式进行 ( B) C程序在运行过程中所有计算都以十进制方式进行 ( C)所有 C程序都需要编译链接无误后才能运行 ( D) C程序中 字符变量存放的是字符的 ASCII码值 12 以下关于 C语言的叙述中正确的是 ( )。 ( A) C语言的数值常量中夹带空格不影响常量值的正确表示 ( B) C语言中的变量可以在使用之前的任何位置进行定义 ( C)在 C语言算术表达式的书写中,运算符两侧的运算数类型必须一致 ( D) C语言中的

5、注释不可以夹在变量名或关键字的中间 13 以下不合法的字符常量是 ( )。 ( A) ( B) “ ( C) 018 ( D) xcc 14 以下选项中正确的定义语句是 ( )。 ( A) double, a, b; ( B) double a=b=7; ( C) double a; b; ( D) double a=7, b=7; 15 若有定义语句: int a=3, b=2, c=1; 以下选项中错误的赋值表达式是 ( )。 ( A) a=(b=4)=3; ( B) a=b=c+1; ( C) a=(b=4)+c; ( D) a=1+(b=c=4); 16 若有定义: int a, b;

6、 通过语句: scanf(“ d; d“, &a, &b); 能把整数 3赋给变量 a, 5赋给变量 b的输入数据是 ( )。 ( A) 3 5 ( B) 3, 5 ( C) 3; 5 ( D) 35 17 已知大写字母 A的 ASCII码值是 65,小写字母 a的 ASCII码值是 97。以下不能将变量 c中的大写字母转换为对应小写字母的语句是 ( )。 ( A) c=(A+c) 26-a ( B) c=c+32 ( C) c=c-A+a ( D) c=(c-A) 26+a 18 在以下给出的表达式中,与 while(E)中的 (E)不等价的表达式是 ( )。 ( A) (E 0|E 0)

7、( B) (E=0) ( C) (!E=0) ( D) (E!=0) 19 以下程序段中,与语句: k=a b?(b c?1: 0): 0; 功能相同的是 ( )。 ( A) if(a h)|(b c)k=1; else k=0; ( B) if(a b)&(b c)k=1; else!k=0; ( C) if(a =b)k=0; else if(b =c)k=1; ( D) if(a h)k=1; else if(h c)k=1; else k=0; 20 有以下程序: #include stdio h main() int a=1, 1=2; for(; a 8; a+)b+=a; a+=

8、2; printf(“ d, d n“, a, b); 程序运行后的输出结果是 ( )。 ( A) 9, 18 ( B) 8, 11 ( C) 7, 11 ( D) 10 14 21 有以下程序: #include stdio h main() int i, j, m=55; for(i=1; i =3; i+) for(j=3; j =i; j+)m=m j; printf(“ d n“, m); 程序运行后的输出结果是 ( )。 ( A) 0 ( B) 1 ( C) 2 ( D) 3 22 有以下程序: #inelude stdio h main() int x=8: for(; x 0;

9、 x-) if(x 3) printf(“ d, “, x-); continue; printf(“ d, “, -x); 程序运行后的输出结果是 ( )。 ( A) 7, 4, 2, ( B) 8, 7, 5, 2, ( C) 9, 7, 6, 4, ( D) 8, 5, 4, 2, 23 以下叙述中错误的是 ( )。 ( A) C程序必须由一个或一个以上的函数组成 ( B)函数调用可以作为一个独立的 语句存在 ( C)若函数有返回值,必须通过 return语句返回 ( D)函数形参的值也可以传回给对应的实参 24 有以下程序: #include stdio h main() int a=

10、1, b=3, c=5; int*p1=&a, *p2=&b, *p=&c; *p=*p1*(*p2); printf(“ d n“, c); 程序执行后的输出结果是 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 25 有以下程序: #include stdio h void f(int*p, int*q); main() int m=1, n=2, *r=&m; f(r, &n); printf(“ d, d“, m, n); void f(int*p, int*q) p=p+1; *q=*q+1: 程序运行后的输出结果是 ( )。 ( A) 2, 3 ( B) 1, 3

11、 ( C) 1, 4 ( D) 1, 2 26 若有定义语句: int a23, *p3; 则以下语句中正确的是 ( )。 ( A) p=a; ( B) p0=a; ( C) p0=&12; ( D) p1=&a; 27 以下程序中函数 f的功能是:当 flag为 1时,进行由小到大排序;当 flag为 0时,进行由大到小排序。 #include stdio h void f(int b, int n, int flag) int i, j, t; for(i=0; i n-1; i+) for(j=i+1; j n; j+) if(flag?bi bj: bi bj) t=bi; bi=bj

12、; bj=t; main() int a10=5, 4, 3, 2, 1, 6, 7, 8, 9, 10, i; f(&a2, 5, 0); f(a, 5, 1); for(i=0; i 10; i+) printf(“ d, “, ai); 程序运行后的输出结果是 ( )。 ( A) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ( B) 3, 4, 5, 6, 7, 2, 1, 8, 9, 10, ( C) 5, 4, 3, 2, 1, 6, 7, 8, 9, 10, ( D) 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 28 有以下程序: #includ

13、e stdio h main() int s12=1, 2, 3, 4, 4, 3, 2, 1, 1, 1, 2, 3, c5=0, i; for(i=0; i 12; i+) csi+; for(i=1; i 5; i+) printf(“ d“, ci); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) 2 3 4 4 ( B) 4 3 3 2 ( C) 1 2 3 4 ( D) 1 1 2 3 29 以下能正确定义字符串的语句是 ( )。 ( A) char str: “ x43“; ( B) char str=“ 0“; ( C) char str= ; ( D

14、) char str= 064; 30 以下关于字符串的叙述中正确的是 ( )。 ( A)空串比空格打头的字符串小 ( B)两个字符串中的字符个数相同时才能进行字符串大小的比较 ( C)可以用关系运算符对字符串的大小进行比较 ( D) C语言中有字符串类型的常量和变量 31 有以下程序: #include stdio。 h void fun(ehar*a, char*b) while(*a=*)a+; while(*b=*a)b+; a+; main() char*s=“*a*b*“, t80; fun(s, t); puts(t); 程序运行后的输出结果是 ( )。 ( A) ab ( B)

15、 a*b ( C) *a*b ( D) a*b* 32 下列函数的功能是 ( )。 void fun(char*a, char*b) while(*b=*a)!= 0) a+; b+; ( A)将 a所指字符串赋给 b所指空间 ( B)使指针 b指向 a所指字符串 ( C)将 a所指字符串和 b所指字符串进行比较 ( D)检查 a和 b所指字符串中是否有 0 33 有以下程序: #include stdio h int fun(int x) int p; if(x=0|x=1) return(3): p=x-fun(x-2); return p; main() printf(“ d n“, f

16、un(7); 干旱序执行后的输出结果是 ( )。 ( A) 2 ( B) 3 ( C) 7 ( D) 0 34 有以下程序: #include stdio h int fun() static int x=1; x*=2; return x; main() int i, s=1: for(i=1; i =2; i+)s=fun(); printf(“ din“, s); 程序运行后的输出结果是 ( )。 ( A) 0 ( B) 1 ( C) 4 ( D) 8 35 以下结构体类型说明和变量定义中正确的是 ( )。 ( A) struct REC; int n; char c; ; REC t1

17、, t2; ( B) typedef struct int n; char c; REC; REC t1, t2; ( C) typedef struct REC; int n=0; char c=A; t1, t2; ( D) struct int n; char c; REC; REC t1, t2; 36 似定已建立以下链表结构,且指针 p和 q已指向如图所示的结点:则以下选项中可将 q所指结点从链表中删除并释放该结点的语句组是 ( )。 ( A) p- next=q- next; free(q); ( B) p=q- next; free(q); ( C) p=q; free(q);

18、( D) (*p) next=(*q) next; free(p); 37 有以下程序: #include stdio h #include string h struct A int a; char b10; double c; ; void f(struct A t); main() struct A a=1001, “ZhangDa“, 1098 0; f(a); printf(“ d, s, 6 1f n“, a a, a b, a c); void f(struct A t) t a=1002; strcpy(t b, “ChangRong“); t c=1202 0; 程序运行后的

19、输出结果是 ( )。 ( A) 1002, ZhangDa, 1202 0 ( B) 1002, ChangRong, 1202 0 ( C) 1001, ChangRong, 1098 0 ( D) 1001, ZhangDa, 1098 0 38 有以下程序: #include stdio h #define N5 #define M N+l #define f(x)(x*M) main() int i1, i2: i1=f(2): i2=f(1+1); printf(“ d d n“, i1, i2); 程序运行后的输出结果是 ( )。 ( A) 12 7 ( B) 12 12 ( C)

20、 11 11 ( D) 11 7 39 有以下程序: #include stdio h main() int a=5, b=1, t: t=(a 2)|b: printf(“ d n“, t); 程序运行后的输出结果是 ( )。 ( A) 1 ( B) 11 ( C) 6 ( D) 21 40 设 fp为指向某二进制文件的指针,且已读到此文件末尾,则函数 feof(fp)的返回值为 ( )。 ( A) 0 ( B) 0 ( C)非 0值 ( D) NULL 二、程序填空题 41 下列给定程序中,函数 fun的功能是进行数字字符转换。若形参 ch中是数字字符 0 9,则将 0转换成 9, 1转换

21、成 8, 2转换成 7, , 9转换成 0;若是其他字符则保持不变;并将转换后的结果作为函数值返回。 请在程序的下划线处填入止确的内容并将下划线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANK1 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

22、= c c2= c n“, c1, c2); c1=8; c2=fun(c1); printf(“c1= c c2= c n“, c1, c2); c1=a; c2=fun(c1); printf(“c1= c c2= c n“, c1, c2); 三、程序修改题 42 给定程序 MODI1 C中,函数 fun的功能是:判断输入的任何一个正整数 n,是否等于某个连续正整数序 列之和。若是,则输出所有可能的序列,否则输出 “不能分解 ”。 例如:当输入 100时,输出: 100=9+10+11+12+13+14+15+16 100=18+19+20+21+22 请改正函数 fun中指定部位的错误

23、,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include stdio h void fun(int n) int j, b, c, m, flag=0; for(b=1; b =n 2; b+) *found* n=m: c=b; while(m!=0&m =c) *found* m=m-c; c+ *found* if(m!=0) printf(“ d=“, n); for(j=b; j c-1; j+)printf(“ d+“, j); printf(“ d n“, j); flag=1; if(flag=0) print

24、f(“不能分解 n“); main() int n; printf(“请输入一个整数: “); seailf(“ d“, &n); fun(n); 四、程序设计题 43 编写函数 fun,其功能是:求 ss所指字符串中指定字符的个数,并返回此值。 例如,若输入字符串 123412132,输入字符为 1,则输出 3。 注意:部分源程序在文件 PROG1 C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include stdio h #include string h #define M81 int fun(char*ss, char c

25、) main() char aM, ch; void NONO(); printf(“ nPlease enter a string: “); gets(a); printf(“ nPlease enter a char: “); ch=getchar(); printf(“ nThe number of the char is: d n“, fun(a, ch); NONO(); void NONO() *本函数用于打开文件,输人测试数据,调用 fun函数,输出数据,关闭文件。* int i; FILE*rf, *wf; char aM, bM, ch; rf=fopen(“in dat“,

26、 “r“); wf=fopen(“out dat“, “w“); for(i=0; i 10; i+) fscanf(rf, “ s“, a); fscanf(rf, “ s“, b); ch=*b: fprintf(wf, “ c= d n“, ch, fun(a, ch); fclose(rf); fclose(wf); 国家二级( C语言)机试模拟试卷 100答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 栈是先进后出的数据结构,所以栈顶元素最后入栈却最先被删除。栈底元素最先人栈却最后被删除。所以选择 A。 2 【正确答案】 C 【试题解析】 栈是先进后出的数据结构,在整个过

27、程中,栈底指针不变,入栈与出栈操作均 由栈顶指针的变化来操作,所以选择 C 3 【正确答案】 D 【试题解析】 根据二叉树的基本性质 3:在任意一棵二义树中,多为 0的叶子结点总比度为 2的结点多一个,所以本题中度为 2的结点为 1-1=0个,所以可以知道本题目中的二义树的每一个结点都有一个分支,所以共 7个结点共 7层,即度为7。 4 【正确答案】 A 【试题解析】 软件按功能町以分为:应用软件、系统软件、支撑软件。操作系统、编译程序、汇编程序、网络软件、数据库管理系统部属于系统软件。所以B、 C、 D都是系统软件,只有 A是应用软件。 5 【正确答案】 B 【试题解析】 1966年 Boe

28、hm和 Jacopini证明了程序设计语言仅仅使用顺序、选择和重复三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。 6 【正确答案】 A 【试题解析】 详细设计的任务是为软件结构图中而非总体结构图中的每一个模块确定实现算法和局部数据结构,刚某种选定的表达工具表示算法和数据结构的细节,所以 A错误。 7 【正确答案】 C 【试题解析】 数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询 及增、删、改等操作;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。 8 【正确答案】 D 【试题解析】 因为一个教师可讲授多门

29、课程,而一门课程又能由多个老师讲授所以他们之间是多对多的关系,可以表爪为 m: n。 9 【正确答案】 D 【试题解析】 关系 T中的元组是关系 R中有而关系 S中没有的元组的集合,即从关系 R中除去与关系 S中相同元组后得到的关系 T。所以做的是差运算。 10 【正确答案】 B 【试题解析】 只有 B选项 369可以用无符号整数来表示和存储 。 A选项 -369有负号,选项 C0 369是小数都不能用无符号整数类存储。选项 D是一个整数集合得用数组来存储。 11 【正确答案】 B 【试题解析】 C程序在运行过程中的所有计算都以二进制方式进行,所以 B选项错误 12 【正确答案】 D 【试题解

30、析】 C语言的数值常量中不能夹带空格,所以 A错误。 C语言中的变量都必须先定义再使川,对变量的定义通常放在甬数体内的前部,但也可以放往函数外部或复合语句的开头,不能随便放置,所以 B错误在 Ci语言中运算符两侧的运算数据类型可以不一致,且结果与精度较高 的保持一致,所以 C错误。 13 【正确答案】 C 【试题解析】 转义字符中,八进制的表示形式为 ddd,但是八进制中不能包含数字 8,所以 C选项不合法。 14 【正确答案】 D 【试题解析】 A选项中变量类型符 double后面不能有逗号。 B选项中变量 b不能先使用再定义,应该写成选项 D中的格式。 C选项中变量 a后面应该是逗号而不是

31、分号。 15 【正确答案】 A 【试题解析】 不能将变量或常量赋给一个表达式,所以 A选项中 (b=4)=3是错误的。 16 【正确答案】 C 【试题 解析】 输入数据的格式必须与 scanf()的格式控制串完全匹配,所以输入时必须在 3和 5之间输入 “; ”。 17 【正确答案】 A 【试题解析】 根据题意可知,小写字母比与之对应的大写字母的 ASCII码大32。 A选项中字符 A加上 c表示的大写字符再对字母个数 26取余,本身这个表达式没有任何含义,所以选择 A选项。 18 【正确答案】 B 【试题解析】 while语句中条件表达式 E的值不为 0即为真,认为满足条件,所以与 B选项中

32、表达式的含义正好相反,选择 B选项。 19 【正确答案】 B 【 试题解析】 条件表达式的含义是,如果表达式 1成立,结果为表达式 2的值,如果不成立为表达式 3的值。所以题干中 k的值这样取值:如果 a b且 b c, k值结果为 1,如果 a b,且 b c则值为 0。如果 a b, k值为 0。也就是只要 ab与 b c中只要有一个条件不成立, k的值就为 0,所以选择 B选项。 20 【正确答案】 D 【试题解析】 第一次循环 a的值为 1,满足条件,执行 b+=a,与 a+=2,则 b的值变为 3, a的值变为 3。执行 a+, a的值为 4,满足条件进入第二次循环,执行完循环体后

33、b的值为 7, a的值为 6。执 行 a+, a的值为 7,满足条件进入第三次循环,执行完循环体后 b的值为 14, a的值为 9。执行 a+, a的值变为 10,不满足条件,循环结束。所以选择 D选项。 21 【正确答案】 B 【试题解析】 第一次执行外循环 i的值为 1,满足条件,判断第一次内循环, j的值为 3,不满足条件,跳出内循环。第二次执行外循环 i的值为 2,同理也不满足内循环条件,跳出内循环。第三次执行外循环 i的值为 3,此时进入内循环判断条件时,条件成立,执行 m=m j, m的值为 1,跳出内循环,跳出外循环打印 m的值。 22 【正确答案】 D 【试题解析】 couti

34、nue的作用是跳出循环体中剩余的语句而进行下一次循环。第一次循环 x的值为 8,循环体中 if条件成直,打印 x的值 8后将 x减 1,再执行continue语句,跳出本次循环。第二次判断循环条件时, x的值变为 6,不满足循环体内 if条件,执行打印 -x的操作,即打印 5后跳出循环。第三次判断循环条件时 x的值为 4,满足循环体中 if条件,执行打印 x-的操作,即打印 4,后将 x值减一,执行 continue语句,跳出本次循环。第四次判断循环条件时 x的为 2,满足循环体中 if条件,打印 x-,即打印 2后 将 x减一,执行 continue语句,跳出本次循环。在进行 for条件表达

35、式中第三个表达式 x-的操作后 x的值为 0,不满足条件结束循环。所以打印结果为 8, 5, 4, 2,。 23 【正确答案】 D 【试题解析】 形参是函数定义时由川户定义的形式上的变量,实参是函数调用时,主调函数为被调函数提供的原始数据。在 C语言中,实参向形参传送数据的方式是 “值传递 ”。因此 D选项正确。 24 【正确答案】 C 【试题解析】 该程序中 int*p1=&a, *p2=&h, *p=&c;指定义三个指针变量,并赋值,即使 p1指向 a; p2指向 b; p指向 c。 *p=*p1*(*p2);该条语句是给 p所指的存储单元 c赋值,就是 p1所指的存储单元的值,即 a的值

36、,与 p2所指的存储单元 b的值相乘,也就是 c=a*b,等价于 c=1*3=3;因此 C选项正确。 25 【正确答案】 B 【试题解析】 在 f(int*p, int*q)函数中,执行 p=p+1是将 p所对应的地址加 1,而 *q=*q+1是将 q所指向的 n的地址所对应的值加 1,所以 m的得知所对应的值没有变,而 n的值则为 3了。因此 B选项正确。 26 【正确答案】 C 【试题解析】 A选项错误,因为 p是指向一个指针数组,作为数组名,不能指向别的地方。 B选项错误,因为 p0是一个 int指针,也就是 int*;而 a是一个指向指针的指针 int*。选项正确,因为 p0是一个 i

37、nt*, a12是 int, &a12是int*,类型吻合。 D选项错误,因为 a作为数组名,不能取地址。即使能取, p1是 int*, &a是 int=*,类型不对。因此 C选项正确。 27 【正确答案】 B 【试题解析】 本题重点考察函数的参数传递,函数的参数传递分为传值和传地址两种情况。本题就是结 合数组考查参数传递的情形。函数 f完成的功能是对数据进行排序,语句 f(&a2, 5, 0)的作用是对从 a2开始的 5个元素进行从大到小排序。注意:这里传递的是地址 &a2,所以排序操作可看作是直接对数组 a操作,执行后的结果为 5, 4, 7, 6, 3, 2, 1, 8, 9, 10。语

38、句 f(a, 5, 1)对数组 a的前5个元素从小到大排序,排序后数组为: 3, 4, 5, 6, 7, 2, 1, 8, 9, 10。因此B选项正确。 28 【正确答案】 B 【试题解析】 在 for(i=0; i 12; i+)csi+中,数组元素 si的值作为数组 c的下标,当退出循环时,数组 c的 4个元素的值分别为 4、 3、 3、 2。因此 B选项正确。 29 【正确答案】 B 【试题解析】 C语言中,字符串是用一对双引号括起来的字符序列,并用字符型数组来存放,故 C选项和 D选项不属于字符串, A选项定义的是一个字符变量str,却用来存放字符串,显然也不正确,冈此 B选项正确。

39、30 【正确答案】 A 【试题解析】 字符串比较大小是以第 1个不相同字符的大小为标准的,跟长度没有关系, B选项不正确;字符串比较大小除了使用库函数 strcmp()以外, 就只能靠自己写代码来实现了,而不能通过关系运算符来比较大小。因为字符串在表达式中相当于 const char*,即常字符指针,代表的是字符串的首地址,关系运算符会将两个字符串的首地址值比较大小,这是毫无意义的。 C选项不正确。 C语言中只有字符串常量而没有字符串变量, D选项描述不正确;空串的长度为 0,而以空格打头的字符串的长度至少为 1,因此 A选项是正确的。 31 【正确答案】 D 【试题解析】 在函数 fun(c

40、har*a, char*b)中, while(*a=*)a+的功能是:如果*a的内容为 *则 a指针向后移动,卣到遇到非 *字符为止,退出循环进入下一个whik循环,在 while(*b=*a)b+; a+; 中,把字符数组 a中的字符逐个赋给字符数组 b。所以在主函数中,执行 fun(s, t)语句后,字符数组 t中的内容为“a*b*”。因此 D选项正确。 32 【正确答案】 A 【试题解析】 While循环条件为: (*b=*a)!= 0,执行时先把指针 a所指向的字符赋给指针 h所在内存单元,如果该字符不是结束标识 0,执行循环体 a+;h+;,指针 a、 b分别指向下一个字符单元 。再

41、判断循环条件,如果成立,继续把指针 a所指向的字符赋给指针 b所在内存单元,直到遇到结束标识为止。因此A选项正确。 33 【正确答案】 A 【试题解析】 因为 fun(int x)是一个递归函数,所以主函数中 fun(7)经过 3次递归调用,其过程可以描述为 “fun(7)=7-fun(5)=7-(5-fun(3)=7-(5-(3-fun(1)=7-(5-(3-3)=7-5=2”,所以最后输出结果为 2。因此 A选项正确。 34 【正确答案】 C 【试题解析】 fun函数中的 x为静态局部变量 ,占用固定的内存单元,下一次调用时仍可保留上次调用时的值。也就是说,如果多次调用 fun函数, x的

42、定义只在第一次调用时有效,从第二次调用开始, x的定义相当于不存在,直接使用 x的值。主函数中调用两次 fun函数:第一次调用: x=1, x=x*2=2, s=2;第二次调用: (直接用上次 x的值 )x=x*2=4, s=4。因此 C选项正确。 35 【正确答案】 B 【试题解析】 本题考查结构体的相关知识,选项 A中 struct REC后面不能有分号, C选项中 typedef struct REC的后面也不能有分号,选项 D中 REC已经是结构体变量,不能当做结构体类型来使用。 36 【正确答案】 A 【试题解析】 本题考查删除链表中的结点操作,其方法是将要删除结点的上个结点的下个结

43、点指向要删除结点的下个结点,然后释放该要删除结点,所以选项 A正确。 37 【正确答案】 D 【试题解析】 本题考查结构体的相关操作以及传值、传址的区别,该题中调用 f函数后,会生成参数 a的一个副本,而不会改变 a的值,所以 a值维持原值,选项 D正确。 38 【正确答案】 D 【试题解析】 本题考查宏定义的用法,宏定义只是做个简 单的替换,所以本题中执行 f(2)=(2*N+1)=11,执行 f(1+1)=(1+1*N+1)=7。选项 D正确。 39 【正确答案】 D 【试题解析】 本题考查位运算,以及按位或操作,将 a左移一位相当于是将 a乘以了 4,所以 a 2等于 20,二进制表示为

44、 00010100,与 b按位或得到00010101,即 21,所以选项 D正确。 40 【正确答案】 C 【试题解析】 本题考查文件的定位, feof函数的用法是从输入流读取数据,如果到达文件末尾 (遇文件结束符 ), eof函数值为非零值,否则为 0,所以 选项 C正确。 二、程序填空题 41 【正确答案】 (1)char (2)ch =9 (3)0。 【试题解析】 本题考查:函数定义,注意函数定义的一般形式以及有参函数和无参函数的区别; if语句条件表达式,本题的条件表达式是判断数字字符;函数返回值,其一般形式为 “retum表达式: ”。 有参函数定义,其一般形式为: 类型标识符函数名

45、 (形式参数表列 ) 声明部分 语句 在形参表中给出的参数称为形式参数,它们可以是各种类型的变量,各参数之间用逗号间隔。在进行函数调用时,主调函数将赋予这些形式 参数实际的值。形参既然是变量,必须在形参列表中给出类型说明。 三、程序修改题 42 【正确答案】 (1)m: n; (2)m: m-c; c+; (3)if(m=0)。 【试题解析】 (1)每次循环,程序需要对 n执行减去连续的正整数序列来判断 n是否刚好为 0,即 n是否是连续的正整数序列之和,所以需要使用临时变量 m寄存 n的值,每次循环对 m执行减运算操作,不满足继续下一轮。另外,程序声明变量 m时,未初始化它的值,所以此处应该

46、修改为: m=n。 (2)语法错误。 C语言中每个语句必须以分号结束,所以应修改为: m=m-c;c+;。 (3)题目判断 n是否是连续的正整数序列之和,若是,则输出所有序列,程序中 m依次减去连续的正整数,当 m为 0时,表示 m(即 n)满足条件,再输出当前序列中的每个正整数,所以此处判断条件反了,应修改为: if(m=0)。 四、程序设计题 43 【正确答案】 int flun(char*ss, char c) int i=0: for(; *ss!= 0; ss+) if(*ss=c) i+; *求出 ss所指字符串中指定字符的个数 * return i: 。 【试题解析】 本题考查: for循环语句遍历字符串,并通过 if条件语句,判断字符串是否结束。 从字符串中查找指定字符,需要使用循环判断结构,循环语句用来遍历字符串,循环条件为字符串没有结束,即当前字符不是 0,判断语句用来判断当前字符是否为指定字符。最后返回指定字符的个数。

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

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

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