1、二级 C语言笔试-377 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.具有 3个结点的二叉树有( )。A) 2种形态 B) 4 种形态 C) 7 种形态 D) 5 种形态(分数:1.00)A.B.C.D.2.设有下列二叉树:(分数:1.00)A.B.C.D.3.下列数据结构中,能用二分法进行查找的是( )。A) 顺序存储的有序线性表 B) 线性链表C) 二叉链表 D) 有序线性链表(分数:1.00)A.B.C.D.4.结构化程序设计主要强调的是( )。A) 程序的规模 B) 程序的效率C) 程序设计语言的先进性 D) 程序易读性(分数:
2、1.00)A.B.C.D.5.为了使模块尽可能独立,要求( )。A) 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B) 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C) 模块的内聚程度要尽量低,且各模块间的偶合程度要尽量弱D) 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强(分数:1.00)A.B.C.D.6.在结构化方法中,软件功能分别属于下列软件开发中的( )阶段。A) 详细设计 B) 需求分析 C) 总体设计 D) 编程调试(分数:1.00)A.B.C.D.7.在软件设计中,不属于过程设计工具的是( )。A) PDL(过程设计语言) B) PAD 图C) N-S图
3、D) DFD 图(分数:1.00)A.B.C.D.8.用树形结构来表示实体之间联系的模型称为( )。A) 关系模型 B) 层次模型 C) 网状模型 D) 数据模型(分数:1.00)A.B.C.D.9.关系数据库管理系统所管理的关系是( )。A) 若干个二维表 B) 一个 DBF文件C) 一个 DBC文件 D) 若干个 DBC文件(分数:1.00)A.B.C.D.10.设有如下三个关系表:(分数:1.00)A.B.C.D.11.算法中,对需要执行的每一步操作,必须给出清楚、严格的规定。这属于算法的( )。A) 正当性 B) 可行性 C) 确定性 D) 有穷性(分数:1.00)A.B.C.D.12
4、.以下叙述中错误的是( )。A) 用户所定义的标识符允许使用关键字B) 用户所定义的标识符应尽量做到“见名知意”C) 用户所定义的标识符必须以字母或下划线开头D) 用户定义的标识符中,大、小写字母代表不同标识(分数:1.00)A.B.C.D.13.以下选项中可作为 C语言合法常量的是( )。A) -80 B) -080 C) -8e1.0 D) -80.0e(分数:1.00)A.B.C.D.14.若整型变量 a、b、c、d 中的值依次为:1、4、3、2,则条件表达式 ab? a:cd? c:d 的值是( )。A) 1 B) 2 C) 3 D) 4(分数:1.00)A.B.C.D.15.有以下程
5、序:#include stdio.hmain() int x=1, y=0, a=0, b=0; switch(x) case 1:switch(y) case 0: a+; break; case 1:b+:break; case 2:a+; b+; break; case 3:a+; b+; printf(“a=%d, b=%d/n“, a, b); 程序的运行结果是( )。A) a=1, b=0 B) a=2, b=2 C) a=1, b=1 D) a=2, b=1(分数:1.00)A.B.C.D.16.以下程序的输出结果是( )。#includestdio.hmain() int a=
6、15, b=21, m=0, switch(a%3) case 0:m+; break; case 1:m+; switch(b%2) default:m+; case 0:m+; break; printf(“%d/n“,m); A) 1 B) 2 C) 3 D) 4(分数:1.00)A.B.C.D.17.有如下程序:#includestdio.hmain() int i; for(i=0; i3; i+) switch(i) case 0:printf(“%d“, i+); case 2:printf(“%d“, i); default: printf(“%d“, i); 程序运行后的输出
7、结果是( )。A) 022111 B) 021021 C) 000122 D) 01122(分数:1.00)A.B.C.D.18.下面程序的运行结果是( )。#includestdio.hmain() int i; for(i=1; iif(i%3=0) break; printf(“%d“, i); A) 123 B) 12 C) 23 D) 12345(分数:1.00)A.B.C.D.19.有以下程序:#includestdio.hmain() int i, j, x=0; for(i=0; i2; i+) x+; for(j=0; j=3; j+) if(%2) continue; x+
8、; x+; printf(“x=%d/n“, x); 程序执行后的输出结果是( )。A) x=4 B) x=8 C) x=6 D) x=12(分数:1.00)A.B.C.D.20.若变量已正确定义,以下 while循环不断输出读入的字符,当读入回车符时结束循环,正确的程序段是( )。A) while(ch=getchar() =/n) putchar(ch); B) while(ch=getchar() ) =/n) putchar(ch); C) while(ch=getchar() !=/n) putchar(ch); D) while(ch=getchar() !=/n) putchar
9、(ch);(分数:1.00)A.B.C.D.21.有如下程序:#include stdio.hmain() char c1, c2, c3, c4, c5, c6; scanf(“%c%c%c%c“, c1, c2, c3, c4); c5=getchar(); c6=getchar(); putchar(c1); putchar(c2); printf(“%c%c/n“, c5, c6); 程序运行后,若从键盘输入(从第 1列开始) :123回车45678回车则输出结果是( )。A) 1267 B) 1256 C) 1278 D) 1245(分数:1.00)A.B.C.D.22.若程序中定义
10、了以下函数:double myadd(double a, double b) return(a+b); 并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是( )。A) double myadd(double a, b); B) double myadd(double, double); C) double myadd(double b, double a); D) double myadd(double x, double y);(分数:1.00)A.B.C.D.23.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是( )。A) 函数的实参和其对
11、应的形参共占同一存储单元B) 形参只是形式上的存在,不占用具体存储单元C) 同名的实参和形参占同一存储单元D) 函数的形参和实参分别占用不同的存储单元(分数:1.00)A.B.C.D.24.若有定义语句:int k23, *pk3; ,则以下语句中正确的是( )。A) pk=k; B) pk0=k12; C) pk=k0; D) pk1=k;(分数:1.00)A.B.C.D.25.若有以下说明和语句:int c45, (*p)5; p=c; 能够正确引用 c数组元素的是( )。A) p+1 B) *(p+3) C) *(p+1)+3 D) *(p0+2)(分数:1.00)A.B.C.D.26.
12、有以下程序:#include stdio.h#include string.hvoid f(char p10, int n) /*字符串从小到大排序*/char t10; int i, j; for (i=0; in-1; i+) for(j=i+1; jn; j+) if (strcmp(pi, pj) 0) strcpy(t, pi); strcpy(pi, pj); strcpy(pj, t); main() char p510=“123“, “aabdfg“, “abbd“, “dcdbe“, “cd“; f(p, 5); printf(“% d/n “, strlen(p0) );
13、A) 2 B) 4 C) 6 D) 3(分数:1.00)A.B.C.D.27.有以下程序:#include stdio.hvoid fun(int a, int b) int t; t=a; a=b; b=t; main() int c10=1, 2, 3, 4, 5, 6, 7, 8, 9, 0, i; for (i=0; i10; i+=2) fun(ci, ci+1); for (i=0; i10; i+) printf(“%d, “, ci); printf(“/n“); 程序的运行结果是( )。A) 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, B) 2, 1, 4,
14、3, 6, 5, 8, 7, 0, 9, C) 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, D) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,(分数:1.00)A.B.C.D.28.下列函数的运行结果是( )。#include stdio.hmain() int 1=2, p; int j, k; j=i; k=+i; p=f(j, k); printf(“%d“, p); int f(int a, int b) int c; if(ab) c=1; else if(a=b) c=0; else c=-1; return(c); A) -1 B) 1 C) 2 D
15、) 编译出错,无法运行(分数:1.00)A.B.C.D.29.当用户要求输入的字符串中含有空格时,应使用的输入函数是( )。A) scanf() B) getchar() C) gets() D) getc()(分数:1.00)A.B.C.D.30.有以下程序:#include stdio.h#include string.hmain() char p20=a, b, c, d, q=“123“, r=“ 123de“; strcat(p, r); strcpy(p+strlen(q), q); printf(“%d/n“, strlen(p) ); 程序运行后的输出结果是( )。A) 9 B
16、) 6 C) 11 D) 7(分数:1.00)A.B.C.D.31.设已执行预编译命令#includestring.h,以下程序段的输出结果是( )。(分数:1.00)A.B.C.D.32.阅读下列程序,则在执行后,程序的运行结果为( )。#include stdio.h#include string.hmain() char a30=“nice to meet you!“strcpy(a+strlen(a) /2, “ you“); printf(“%s/n“, a); A) nice to meet you you B) nice toC) meet you you D) nice to
17、you(分数:1.00)A.B.C.D.33.有以下程序:#include stdio.hint fun(int n) if(n=1) return 1; elsereturn(n+fun(n-1) ); main() int x; scanf(“%d“, x); x=fun(x); printf(“%d/n“, x); 执行程序时,给变量 x输入 10,程序的输出结果是( )。A) 55 B) 54 C) 65 D) 45(分数:1.00)A.B.C.D.34.有以下程序:#include stdio.hvoid f(int n, int *r) int r1=0; if (n%3=0) r
18、1=n/3; else if (n%5=0) r1=n/5; else f(-n, r1); *r=r1; main() int m=7, r; fm, r); printf(“%d/n“, r); 程序运行后的输出结果是( )。A) 2 B) 1 C) 3 D) 0(分数:1.00)A.B.C.D.35.有以下程序:#include stdio.hint fun(int a, int b) if (b=0) return a; else return (fun(-a, -b) ); main() printf(“%d/n“, fun(4, 2) ); 程序的运行结果是( )。A) 1 B)
19、2 C) 3 D) 4(分数:1.00)A.B.C.D.36.以下叙述中正确的是( ) A) static型局部变量,只能在编译时赋予值,程序运行期间不能更改B) static型局部变量,可以在程序运行期间更改其值C) 全局变量说明为 static存储类,其作用域将被扩大D) 形参可以使用的存储类说明符与局部变量完全相同(分数:1.00)A.B.C.D.37.有以下程序:#include stdio.h#include stdlib.hint fun(int n) int *p; p=(int*) malloc(sizeof(int) ); *p=n; return*p; main() int
20、 a; a=fun(10); printf(“%d/n“, a+fun(10) ); 程序的运行结果是( )。A) 0 B) 10 C) 20 D) 出错(分数:1.00)A.B.C.D.38.有以下程序:#include stdio.h#include string.htypedef struct char name9; char sex; float score2; STU; void f(STU a) STU b=“Zhao“, m, 85.0, 90.0; int i; strcpy(a.name, b.name); a.sex=b.sex; for (i=0; i2; i+) a.s
21、corei=b.scorei; main() STU c=“Qian“, f, 95, 92; f(c); printf(“%s, %c, %f, %f“, c.name, c.sex, c.score0, c.score1); 程序的运行结果是( )。A) Qian, f, 95.000000, 92.000000 B) Qian, m, 85.000000, 90.000000C) Zhao, f, 95.000000, 92.000000 D) Zhao, m, 85.000000, 90.000000(分数:1.00)A.B.C.D.39.若 x=2,y=3,则 xy 的结果是( )。
22、A) 0 B) 2 C) 3 D) 5(分数:1.00)A.B.C.D.40.有以下程序:#includestdio.hmain() FILE *fp; int k, n, a6=1, 2, 3, 4, 5, 6; fp=fopen(“d2. dat“, “w“); fprintf(fp, “%d%d%d% d/n“, a0, a1, a2); fprintf(fp, “%d%d% d/n“, a3, a4, a5); fclose(fp); fp=fopen(“d2.dat“, “r“); fscanf(fp, “%d%d“, k, n); printf(“%d%d/n“, k, n); f
23、close(fp); 程序运行后的输出结果是( )。A) 1 B) 12 4 C) 123 4 D) 123 456(分数:1.00)A.B.C.D.二、程序填空题(总题数:1,分数:18.00)给定程序中,函数 fun的功能是:求出形参 ss所指字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。字符串数组中共有 M个字符串,且串长小于 N。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#include stdio.h#include string.h#define
24、M 5#defineN 20void fun (char (*ss)N)inti, j, k=0, n, m, len; for(i=0; iM; i+)len=strlen(ssi); if(i=0)n=len; if (lenn)/*found*/n=len; (1) =i; for(i=0; iM; i+)if(if=k)m=n; len=strlen(ssi); /*found*/for (j= (2) ; j=0; j-)ssim-=ssij; for (j=0; jn-len; j+)/*found*/(3) =*; main()char ssMN=“shanghai“, “gua
25、ngzhou“, “beijing“, “tianjin“, “chongqing“); int i; printf(“/nThe original strings are:/n“); for(i=0; iM; i+)printf(“%s“, ssi); printf(“/n“); fun (ss); printf(“/nThe result:/n“); for (i=0; iM; i+)printf(“%s“, ssi); (分数:18.00)填空项 1:_填空项 1:_填空项 1:_三、程序改错题(总题数:1,分数:18.00)41.下列给定程序中,函数 fun的功能是:计算整数 n的阶乘
26、。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include stdlib.h#include stdio.hdouble fun(int n)double result=1.0; while(n1n170)/*found*/result*=-n; /*found*/Return; void main()int n; system(“CLS“); printf(“Enter an integer:“); scanf(“%d“, n); printf(“/n/n%d!=%1dn/n“, n, fun(n); (分数:1
27、8.00)_四、程序设计题(总题数:1,分数:24.00)42.编写函数 fun,其功能是:从字符串中删除指定的字符。同字母的大、小写按不同字符处理。 注意:部分源程序给出如下。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序:#include stdio.hvoid fun(char s, int c)main()fstatic, char str=“turbo c and borland c+“; char ch; printf(“原始字符串:%s/n“,str); printf(“输入一个字符:/n“); scanf(“%c“, c
28、h); fun(str, ch); printf(“str=%s/n“, str); strcpy (str, “turbo c and borland c+“); fun(str, a); (分数:24.00)_二级 C语言笔试-377 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.具有 3个结点的二叉树有( )。A) 2种形态 B) 4 种形态 C) 7 种形态 D) 5 种形态(分数:1.00)A.B.C.D. 解析:解析 具有 3个结点的二叉树有以下的几种形态:2.设有下列二叉树:(分数:1.00)A.B. C.D.解析:解析 本题
29、考查二叉树的遍历。所谓二叉树的前序遍历(DLR)是指在访问根结点、遍历左子树与遍历右子树这 3者中,首先访问根结点,然后遍历左子树,最后遍历右子树,并且,在遍历左右子树时,上述规则同样适用,即“根一左一右”,故该二叉树的前序遍历结果为“ATBZXCYP”。3.下列数据结构中,能用二分法进行查找的是( )。A) 顺序存储的有序线性表 B) 线性链表C) 二叉链表 D) 有序线性链表(分数:1.00)A. B.C.D.解析:解析 二分查找只适用于顺序存储的有序表。此处所说的有序表是指线性表中的元素按值非递减排列(即从小到大,但允许相邻元素值相等)的。选项 A)正确。4.结构化程序设计主要强调的是(
30、 )。A) 程序的规模 B) 程序的效率C) 程序设计语言的先进性 D) 程序易读性(分数:1.00)A.B.C.D. 解析:解析 本题考查考生的结构化程序设计的思想。结构化程序设计强调的是程序的易读性。5.为了使模块尽可能独立,要求( )。A) 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B) 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C) 模块的内聚程度要尽量低,且各模块间的偶合程度要尽量弱D) 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强(分数:1.00)A.B. C.D.解析:解析 系统设计的质量主要反映在模块的独立性上。评价模块独立性的主要标准有两个:一是模
31、块之间的耦合,它表明两个模块之间互相独立的程度;二是模块内部之间的关系是否紧密,称为内聚。一般来说,要求模块之间的耦合尽可能地弱,即模块尽可能独立,而要求模块的内聚程度尽量地高。综上所述,选项 B)的答案正确。6.在结构化方法中,软件功能分别属于下列软件开发中的( )阶段。A) 详细设计 B) 需求分析 C) 总体设计 D) 编程调试(分数:1.00)A.B.C. D.解析:解析 总体设计过程通常由两个主要阶段组成:系统设计,确定系统的具体实现方案;结构设计,确定软件结构。为确定软件结构,首先需要从实现角度把复杂的功能进一步分解。分析员结合算法描述仔细分析数据流图中的每个处理,如果一个处理的功
32、能过分复杂,必须把它的功能适当地分解成一系列比较简单的功能。7.在软件设计中,不属于过程设计工具的是( )。A) PDL(过程设计语言) B) PAD 图C) N-S图 D) DFD 图(分数:1.00)A.B.C.D. 解析:解析 数据流图 DFD是结构化分析方法最主要的一种图形工具,不属于过程设计工具。8.用树形结构来表示实体之间联系的模型称为( )。A) 关系模型 B) 层次模型 C) 网状模型 D) 数据模型(分数:1.00)A.B. C.D.解析:解析 层次模型是最早发展出来的数据库模型。它的基本结构是树形结构,这种结构方式在现实世界中很普遍,如家族结构、行政组织机构,它们自顶向下、
33、层次分明。9.关系数据库管理系统所管理的关系是( )。A) 若干个二维表 B) 一个 DBF文件C) 一个 DBC文件 D) 若干个 DBC文件(分数:1.00)A. B.C.D.解析:解析 在关系数库中,一个表就是一个关系,关系数据库管理系统管理的关系就是多个二维表。10.设有如下三个关系表:(分数:1.00)A.B. C.D.解析:解析 两个相同结构关系的“并”是由属于这两个关系的元组组成的集合。11.算法中,对需要执行的每一步操作,必须给出清楚、严格的规定。这属于算法的( )。A) 正当性 B) 可行性 C) 确定性 D) 有穷性(分数:1.00)A.B.C. D.解析:解析 一个算法应
34、当具有 5个特性,即有穷性、确定性、可行性、有零个或多个输入以及有一个或多个输出。算法的确定性是指:算法中每一条指令必须有确切的含义,读者理解时不会产生二义性。并且在任何条件下,算法只有唯一的一条执行路径,即对于相同的输入只能得出相同的执行结果。12.以下叙述中错误的是( )。A) 用户所定义的标识符允许使用关键字B) 用户所定义的标识符应尽量做到“见名知意”C) 用户所定义的标识符必须以字母或下划线开头D) 用户定义的标识符中,大、小写字母代表不同标识(分数:1.00)A. B.C.D.解析:解析 本题考查 C语言中标识符的概念。用户标识符由字母、数字和下划线组成,并且第一个字符必须为字母或
35、下划线,并且不能与 C语言关键字相同。所以本题应该选择 A)。13.以下选项中可作为 C语言合法常量的是( )。A) -80 B) -080 C) -8e1.0 D) -80.0e(分数:1.00)A. B.C.D.解析:解析 选项 B)中,以 0开头表示一个八进制数,而八进制数的取值范围是 07,所以-080 是不合法的;选项 C)和 D)中,e 后面的指数必须是整数,所以也不合法。14.若整型变量 a、b、c、d 中的值依次为:1、4、3、2,则条件表达式 ab? a:cd? c:d 的值是( )。A) 1 B) 2 C) 3 D) 4(分数:1.00)A. B.C.D.解析:解析 本题考
36、查的是条件表达式的嵌套。因为条件运算符的结合方向为“自右至左”,所以表达式 ab?a:cd?c:d 相当于 ab?a:(cd?c:d)。由于 a=1,b=4,所以 ab 的结果为“真”,整个表达式的值为 a的值 1。所以,4 个选项中选项 A)符合题意。15.有以下程序:#include stdio.hmain() int x=1, y=0, a=0, b=0; switch(x) case 1:switch(y) case 0: a+; break; case 1:b+:break; case 2:a+; b+; break; case 3:a+; b+; printf(“a=%d, b=%
37、d/n“, a, b); 程序的运行结果是( )。A) a=1, b=0 B) a=2, b=2 C) a=1, b=1 D) a=2, b=1(分数:1.00)A.B.C.D. 解析:解析 本题考查 switch语句,首先,x=1 符合条件 case 1,执行 switch(y)语句,y=0 符合case0语句,执行 a+并跳出 switch(y)语句,此时 a=1。因为 case 1语句后面没有 break语句,所以向后执行 case 2语句,执行 a+, b+, 然后跳出 switch(x),得 a=2, b=1。16.以下程序的输出结果是( )。#includestdio.hmain(
38、) int a=15, b=21, m=0, switch(a%3) case 0:m+; break; case 1:m+; switch(b%2) default:m+; case 0:m+; break; printf(“%d/n“,m); A) 1 B) 2 C) 3 D) 4(分数:1.00)A. B.C.D.解析:解析 考查 switch语句的使用。switch 语句的条件是“a%3=15%3=0”,所以执行 case0后面的语句,m+; m=1,然后执行 break,跳出 switch语句,最后输出 m的值为 1。17.有如下程序:#includestdio.hmain() in
39、t i; for(i=0; i3; i+) switch(i) case 0:printf(“%d“, i+); case 2:printf(“%d“, i); default: printf(“%d“, i); 程序运行后的输出结果是( )。A) 022111 B) 021021 C) 000122 D) 01122(分数:1.00)A.B.C.D. 解析:解析 本题考查的知识点是 switch语句的功能。程序先执行 case 0,输出 0,同时 i变为 1,接着执行 default,输出 i为 1,此时便可得出答案为 D)。18.下面程序的运行结果是( )。#includestdio.hm
40、ain() int i; for(i=1; iif(i%3=0) break; printf(“%d“, i); A) 123 B) 12 C) 23 D) 12345(分数:1.00)A.B. C.D.解析:解析 本题考核的知识点是 break语句的应用。本题中 for,循环到 i=3而执行 break语句跳出循环,最终只输出 12。19.有以下程序:#includestdio.hmain() int i, j, x=0; for(i=0; i2; i+) x+; for(j=0; j=3; j+) if(%2) continue; x+; x+; printf(“x=%d/n“, x);
41、程序执行后的输出结果是( )。A) x=4 B) x=8 C) x=6 D) x=12(分数:1.00)A.B. C.D.解析:解析 本题考查的是 for循环的嵌套。外循环的循环变量 i从 0递增到 1会循环 2次,内循环的循环变量 j从 0递增到 3会循环 4次。但是内循环中有一条 if语句,每当 j%2为真,即 j为奇数时会跳过下面的 x+; 语句,所以 4次内循环只有 2次执行到 x+; 语句,再加上外循环中包含的 2条 x+; 语句,所以每次外循环会使 x自增 4次,2 次外循环下来 x的值为 8。故应该选择 B)。20.若变量已正确定义,以下 while循环不断输出读入的字符,当读入
42、回车符时结束循环,正确的程序段是( )。A) while(ch=getchar() =/n) putchar(ch); B) while(ch=getchar() ) =/n) putchar(ch); C) while(ch=getchar() !=/n) putchar(ch); D) while(ch=getchar() !=/n) putchar(ch);(分数:1.00)A.B.C.D. 解析:解析 本题考查的知识点是 getchar函数、putchar 函数和逻辑表达式的判定。题目要求“当读入回车符时结束循环”,所以 A)、B)选项不对,又由于回车符在字符输入时表示为/n,故本题选
43、 D。21.有如下程序:#include stdio.hmain() char c1, c2, c3, c4, c5, c6; scanf(“%c%c%c%c“, c1, c2, c3, c4); c5=getchar(); c6=getchar(); putchar(c1); putchar(c2); printf(“%c%c/n“, c5, c6); 程序运行后,若从键盘输入(从第 1列开始) :123回车45678回车则输出结果是( )。A) 1267 B) 1256 C) 1278 D) 1245(分数:1.00)A.B.C.D. 解析:解析 本题考查的是字符输入输出函数的应用。get
44、char()函数只能接收一个字符,即使输入多个字符后再按回车还是只能将第一个字符读入。scanf()和 printf()是按格式输入输出的函数,当输入123回车,scanf()分别读入字符“1”“2”“3”“回车”;接下来输入 45678回车,则getchar()读入字符“4”赋值给 c5,字符“5”赋值给 c6,所以输出语句输出结果为 1245。故本题答案为 D)。22.若程序中定义了以下函数:double myadd(double a, double b) return(a+b); 并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是( )。A) double
45、myadd(double a, b); B) double myadd(double, double); C) double myadd(double b, double a); D) double myadd(double x, double y);(分数:1.00)A. B.C.D.解析:解析 本题考核的知识点是函数声明的应用。函数声明是对所用到的函数的特征进行必要的声明,编译系统以函数声明中给出的信息为依据,对调用表达式进行检测,以保证调用表达式与函数之间的参数正确传递。函数声明的一般格式为:类型标识符函数名(类型标识符形参,);这些信息就是函数定义中的第一行的内容。这里形参的名字是不重
46、要的,重要的是类型标识符,函数声明中也可以不写形参名只写该形参的声明类型,但不能只写形参名而不写该形参的类型。本题中,选项 A)中 double myadd(double a, b),没写出形参 b的类型。23.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是( )。A) 函数的实参和其对应的形参共占同一存储单元B) 形参只是形式上的存在,不占用具体存储单元C) 同名的实参和形参占同一存储单元D) 函数的形参和实参分别占用不同的存储单元(分数:1.00)A.B.C.D. 解析:解析 本题考查的知识点是函数的形参和实参。在定义函数时函数名后面括弧中的变量名称为“形式参数”(简称
47、形参),在主调函数中调用一个函数时,函数名后面括弧中的参数(可以是一个表达式)称为“实际参数”(简称实参)。C 语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。故本题应该选择 D)。24.若有定义语句:int k23, *pk3; ,则以下语句中正确的是( )。A) pk=k; B) pk0=k12; C) pk=k0; D) pk1=k;(分数:1.00)A.B. C.D.解析:解析 本题考查的是指针数组的运用。pk 是指针数组名,是一个常量,不能被赋值,因此选项 A)和 C)都不正确。pk 中的元素是 int型指针,而二维数组名是指向一维数组的指针常量,即行指针,两者之间不可隐式转换,所以
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1