1、国家二级( C语言)笔试模拟试卷 2及答案与解析 1 在 E-R图中,用来表示实体之间联系的图形是 ( )。 ( A)矩形 ( B)椭圆形 ( C)菱形 ( D)平行四边形 2 下面选项中不属于面向对象程序设计特征的是 ( )。 ( A)继承性 ( B)多态性 ( C)类比性 ( D)封装性 3 下列叙述中正确的是 ( )。 ( A)线性表是线性结构 ( B)栈与队列是非线性结构 ( C)线性链表是非线性结构 ( D)二叉树是线性结构 4 在关系数据库中,用来表示实体之间联系的是 ( )。 ( A)树结构 ( B)网结构 ( C)线性表 ( D)二维表 5 在一棵二叉树上第 5层的结点数最多是
2、 ( )。 ( A) 8 ( B) 16 ( C) 32 ( D) 15 6 数据处理的最小单位是 ( )。 ( A)数据 ( B)数据元素 ( C)数据项 ( D)数据结构 7 软件调试的目的是 ( )。 ( A)发现错误 ( B)改正错误 ( C)改善软件的性能 ( D)挖掘软件的潜能 8 程序流程图 (PFD)中的箭头代表的是 ( )。 ( A)数据流 ( B)控制流 ( C)调用关系 ( D)组成关系 9 在下列选项中,不是一个算法一般应该具有的基本特征的是 ( )。 ( A)确定性 ( B)可行性 ( C)无穷性 ( D)拥有足够的情报 10 在结构化方法中,软件功能分解属于软件开发
3、中的 ( )阶段。 ( A)详细设计 ( B)需求分析 ( C)总体设计 ( D)编程调试 11 以下程序段中与语句 k=a b? (b c? 1:0):0;功能等价的是 ( )。 ( A) if(a b) else k=0; ( B) f(a b)|(b c) k=1; else k=0; ( C) if(a =b) k=0; else if(b =c) k=1; ( D) if(a b) k=1; else if(b c) k=1; else k=0; 12 以下叙述中正确的是 ( )。 ( A) C语言的源程序不必通过编译就可以直接运行 ( B) C语言中的每条可执行语句最终都将被转换成
4、二进制的机器指令 ( C) C语言程序经编译形成的二进制代码可以直接运行 ( D) C语言中的函数不可以单独进行编译 13 以下符合 C语言语法的实型常量是 ( )。 ( A) 1.2E0.5 ( B) 3.14159E ( C) 5E-3 ( D) E15 14 以下四组用户自定义标识符中,全部合法的一组是 ( )。 ( A) _main enclude sin ( B) If - max turbo ( C) txt REAL 3COM ( D) int k_2 _001 15 一个算法应该具有 “确定性 ”等五个特性,下面对另外四个特性的描述中错误的是 ( )。 ( A)有零个或多个输入
5、 ( B)有零个或多个输出 ( C)有穷性 ( D)可行性 16 设有定义: float a=2,b=4,h=3;以下 C语言表达式中与代数式 计算结果不相符的是 ( )。 ( A) (a+b) *h/2 ( B) (1/2)*(a+b)*h ( C) (a+b)*h*1/2 ( D) h/2*(a+b) 17 有以下程序: #include stdio.h void sort(int a,int n) int i,j,t; for(i=0;i n-1;i+=2) for(j=i+2;j n;j+=2) if(aiaj)t=ai;ai=aj;aj=t; main() int aa10=1,2,
6、3,4,5,6,7,8,9,10,i; sort(aa,10); for(i=0;i 10;i+) printf(“%d.“,aai); printf(“n“); 其输出结果是 ( )。 ( A) 1,2,3,4,5,6,7,8,9,10, ( B) 10,9,8,7,6,5,4,3,2,1, ( C) 9,2,7,4,5,6,3,8,1,10, ( D) 1,10,3,8,5,6,7,4,9,2, 18 若程序中定义了以下函数: double myadd(double a,double b) return(a+b);并将其放在调用语句之后,则在调用之前应该对函数进行说明,以下选项中错误的说明
7、是 ( )。 ( 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); 19 以下四个选项,不能看作一条语句的是 ( )。 ( A) ; ( B) a=0,b=0,c=0; ( C) if(a 0); ( D) if(b= =0) m=1;n=2; 20 若以下选项中的变量已正确定义,则正确的赋值语句是 ( )。 ( A) x1=26.8%3; ( B) 1+2=x2;
8、 ( C) x3=0x12; ( D) x4=1+2=3; 21 有如下程序: #include stdio h main() int x=23; do Printf(“%d“, x-); while(! x); 该程序的执行结果是 ( )。 ( A) 321 ( B) 23 ( C)不输出任何内容 ( D)陷入死循环 22 执行语句 for(i=1; i+ 4; );后变量 i的值是 ( )。 ( A) 3 ( B) 4 ( C) 5 ( D)不定 23 有一堆零件 (个数在 100到 200之间 ),如果分成 4个零件一组,则多 2个零件;若分成 7个零件一组,则多 3个零件;若分成 9个
9、零件一组,则多 5个零件。下面的程序是求这堆零件的总数,请选择填空。 #include stdio h main() int i; for(i=100; i 200; i+) if(i-2)%4=0) if(! (i-3)%7) if(_) printf(“%d“, i); ( A) i%9=5 ( B) i%9!=5 ( C) (i-5)%9!=0 ( D) (i-5)%9= =0 24 已有定义 int a=-2;和输出语句 printf(“%81x“, a);以下正确的叙述是 ( )。 ( A)整型变量的输出形式只有 %d一种 ( B) %x是格式符的一种,它可以适用于任何一种类型的数据
10、 ( C) %x是格式符的一种,其变量的值按十六进制输出,但 %81x是错误的 ( D) %81x不是错误的格式符,其中数字 8规定了输出字段的宽度 25 若变量 c为 char类型,能正确判断出 c为小写字母的表达式是 ( )。 ( A) a =c =z ( B) (c =a)|(c =z) ( C) (a =c)and(z =c) ( D) (c =a) 34 若有以下语句,则对数组 a元素的引用不正确的是 (0i9)( )。 int a10=0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *p=a; ( A) ap-a ( B) *( j=i; k=+i; p=f(j, k)
11、; printf(“%d“, p); int f(int a, int b) int c; if(a b)c=1; else if(a= =b) c=0; else c=-1; return(c); ( A) -1 ( B) 1 ( C) 2 ( D)编译出错,无法运行 46 在位运 算中,操作数左移一位,其结果相当于 ( )。 ( A)操作数乘以 2 ( B)操作数除以 2 ( C)操作数除以 4 ( D)操作数乘以 4 47 若调用 fputc函数输出字符成功,则其返回值是 ( )。 ( A) EOF ( B) 1 ( C) 0 ( D)输出的字符 48 已知函数的调用形式: fread(
12、buf, size, count, fp),参数 buf的含义是 ( )。 ( A)一个整型变量,代表要读入的数据项总数 ( B)一个文件指针,指向要读的文件 ( C)一个指针,指向要读入数据的存放地址 ( D)一个存储区,存放要读的数据项 49 有如下程序: #define N 2 #define M N+1 #define NUM 2*M+1 main() int i; for(i=1; i =NUM; i+)printf(“%dn“, i); 该程序中的 for循环执行的次数是 ( )。 ( A) 5 ( B) 6 ( C) 7 ( D) 8 50 在 int (*prt)3;定义中,标
13、识符 prt( )。 ( A)定义不合法 ( B)是一个指针数组名,每个元素都是一个指向整型变量的指针 ( C)是一个指针,它指向一个具有三个元素的一维数组 ( D)是一个指向整型变量的指针 51 数据的逻辑结构有线性结构和【 】两大类。 52 顺序存储方法是把逻辑上相邻的结点存储在物理位置【 】的存储单元中。 53 一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【 】。 54 软件工程研究的内容主要包括:【 】技术和软件工程管理。 55 关系操作的特点是【 】操作。 56 以下程序段的 输出结果是 _。 inc i=9; printf(“%on“, i); 57
14、有以下语句段 int nl=10, n2=20; printf(“_“, n1, n2); 要求按以下格式输出 n1和 n2的值,每个输出行从第一列开始,请填空。 n1=10 n2=20 58 若有以下程序 main() int p, a=5; if(p=a!=0) printf(“%dn“ p); else printf(“%dn“, p+2); 执行后输出结果是 _。 59 以下程序输出的结果是 _。 mazn() int a=5, b=4, c=3, d; d=(a b C) ; printf(“%dn“, D) ; 60 以下定义的结构体类型拟包含两个成员,其中成员变量 info用来存
15、入整形数据;成员变量 link是指向自身结构体的指针,请将定义补充完整。 struct node int info; _link; 61 以下程序的输出结果是 _。 main() int s, i; for(s=0, i=1; i 3; i+, s+=i); printf(“%dn“ s); 62 以下程序中, fun函数的功能是求 3行 4列二维数组每行元素的最大值。请填空。 void fun(int, int, int (*)4, int *); main() int a34=12, 41, 36, 28, 19, 33, 15, 27), 3, 27, 19, 1, b3,i; fun(
16、3, 4, a, B) ; for(i=0; i 3; i+)printf(“%4d“, bi); printf(“n“); void fun(int m, int n, int ar4, int *br) int i, j, x; for(i=0; i m; i+) x=ari0; for(i=0; j n; j+) if(x arij) x=arij; _=X; 63 以下程序的输出结果是 _。 main() char s=“abcdef“; s3=0; printf(“%sn“, s); 64 以下程序运行后的输出结果是 _。 #inClude strinq.h char *ss(cha
17、r *s) char *p; t; p=S+1; t=*s; while(*p)*(p-1)=*p; p+; *(p-1)=t; return s; main() char *p, str10=“abcdefgh“; p=ss(str); printf(“%sn“, p); 65 以下程序运行后的输出结果是 _。 int a=5; fun (int B) static int a=10; a+=b+; printf(“%d“, A) ; main() int c=20; fun(C) , a+=C+; printf(“%dn“, A) ; 66 请在以下程序第一行的下划线处填写适当内容,使程序
18、能正确运行。 _(double, double); main() double x, y; scanf(“%lf%lf“, &x &y); printf(“%lfn , max(x, y); double max(double a, double B) return(a b ? a=B) ; 67 mysulen函数的功能是计算 str所指字符串的长度,并作为函数值返回。请填空。 int mystrlen(Char *str) int i; fori=0; !=0; i+); return(_); 68 以下程序的功能是输出如下形式的方阵: 13 14 15 16 9 10 11 12 5 6
19、 7 8 1 2 3 4 请填空。 main() int i, i, x; for(j=4; j_; j-) for(i=1; i 4; i+) x=(j-1)*4+_; printf(“%4d“, x); printf(“n“); 国家二级( C语言)笔试模拟试卷 2答案与解析 1 【正确答案】 C 【试题解析】 在 E-R图中,矩形表示实体集,椭圆形表示属性,菱形表示实体之间的联系。 2 【正确答案】 C 【试题解析】 对象是由数据和容许的操作组成的封装体,与客观实体有直接的对应关系。对象之间通过传递消息互相 联系,以模拟现实世界中不同事物彼此之间的联系。面向对象技术的三个重要特性是封装性
20、、继承性和多态性。 3 【正确答案】 A 【试题解析】 根据数据结构中各数据元素之间关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。 4 【正确答案】 D 【试题解析】 在关系数据库中,用二维表来表示实体之间的联系。 5 【正确答案】 B 【试题解析】 根据二叉树的性质:二叉树第 i(i1)层上至多有 2i-1个结点。第 5层的结点数最多是 25-1=16。 6 【正确答案】 C 【试题解析】 数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数
21、据之间的相互关系和数据运算。故正确答案为选项 C)。 7 【正确答案】 B 【试题解析】 程序调试由两部分组成,其一是根据错误的迹象确定程序中错误的确切性质、原因和位置。其二,对程序进行修改,排除错误。所以程序调试的目的就是诊断和改正程序中的错误。 8 【正确答案】 B 【试题解析】 程序流 程图 (PFD)是一种传统的、应用广泛的软件过程设计表示工具,通常也称为程序框图,其箭头代表的是控制流。 9 【正确答案】 C 【试题解析】 作为一个算法,一般应具有的基本特征有:可行性、确定性、有穷性、拥有足够的情报。 10 【正确答案】 C 【试题解析】 需求分析将创建所需的数据模型、功能模型和控制模
22、型,但不会进行功能分解;有了需求分析的报告,开始进行总体设计,其间将软件的功能分解,确定模块之间的接口;有了每个模块功能的分解,则每个模块进入详细设计阶段;接下来是编写代码,调试程序等。 11 【正确答案】 A 【试题解析】 本题是先比较 a, b,如果 a b成立则执行 (b c? 1:0),如果 b c成立则结果为 1,否则为 0。也就是说只有 a b与 b c同时成立时 k值才能为1。选项 A)正确。选项 B)是 a b与 b c之一成立时 k=1;选项 C)是 b =c时k=1;选项 D)与 B)类似。所以 B)、 C)、 D)均不对。 12 【正确答案】 B 13 【正确答案】 C
23、【试题解析】 实数在 C语言中又称浮点数,它有两种表示形式: 十进制数形式。它由数字和小数点组成 (注意必须有小 数点 )。 0.123, .123,123.0, 123., 0.0都是十进制数形式。 指数形式。如 123e3或 123E3都代表 123*103。要注意字母 e(或 E)之前必须有数字,且 e后面的指数必须为整数,如 e3, 2.1e3.5, .e3, e等都不是合法的指数形式。 14 【正确答案】 A 【试题解析】 C语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。 D)中的 -max不合法, -既不是字母、数字,也不是下划线; C)中的
24、 3COM第一个字符为数字,不合法; D)中 的 int和 C语言的关键字重名,不合法。 15 【正确答案】 B 【试题解析】 算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。算法具有五个重要特性: 有穷性:一个算法必须总是在执行有限步之后结束,且每一步都可在有限时间内完成。 确定性:算法中每一步骤都必须有明确的定义,不允许有模棱两可的解释,也不允许有多义性,对于相同的输入只能得出相同的输出。 可行性:算法中描述的操作可以通过已经实现的基本运算执行有限次来实现。 输入:一个 算法有零个或多个的输入。 输出:一个算法有一个或多个输出,这些输出是同输入有着
25、某些特定关系的量。 16 【正确答案】 B 【试题解析】 两个整数相除结果为舍去小数部分的整数,如 5/3的结果为 1。如果参加运算的两个数中有一个数为实数,则结果是 double型,因为所有实数都按double型进行运算。根据运算符优先级,先计算括号内的,故选项 B)中 (1/2)=0,整个表达式的值为 0。 17 【正确答案】 C 【试题解析】 sort函数的功能实际上是对数组中奇数位置上的数进行从大到小排序 。排序后的结果应该为 9, 2, 7, 4, 5, 6, 3, 8, 1, 10。 18 【正确答案】 A 【试题解析】 函数的 “定义 ”和 “说明 ”不是一回事。 “定义 ”是指
26、对函数功能的确立,包括指定函数名,函数值类型、形参及其类型、函数体等,是一个完整的、独立的函数单位。而 “说明 ”则是对已定义的函数的返回值进行类型说明 (或称 “声明 ”),它只包括函数名、函数类型以及一对括弧,不包括函数体。选项 A)中的函数参数列表中,不可以用一个类型声明多个变量,即变量 b没有被声明,所以错误。 19 【正确答案】 D 【试题解析 】 在 if后面只能有一条语句,或一条复合语句,即用花括号将多条语句括起来。选项 D)中没有将两条语句括起来,不能看成一条语句。 20 【正确答案】 C 【试题解析】 正确的赋值语句的左值不能为常量或表达式。选项 A)中右值的表达式错;选项
27、B)的左值为表达式,错误;选项 D)的表达式 x4=1+2=3,是先执行赋值表达式 1+2=3,这本身就是错误的, 1+2不是变量,不能赋值。 21 【正确答案】 B 【试题解析】 do-while语句的执行过程中要先执行一次循环体语句,本题中执行x-后判断 while中的表达式,表达式的值 !x为假,程序结束循环。 22 【正确答案】 C 【试题解析】 for语句的循环体语句为空语句,循环结束时 i值为 5。 23 【正确答案】 D 【试题解析】 本题中需要填空的是第三个条件,即 “若分成 9个零件一组,则多5个零件 ”,当总零件数减去 5后,并与 9取余为 0即可满足本题的条件。 24 【
28、正确答案】 D 【试题解析】 整型变量的输出形式有: %d, %o, %x, %u等, %x是以十六进制无符号形式输出整数。十六进制数同样也可以像 %md一样按 %mlx输出指 定宽度的长整型数。 25 【正确答案】 D 【试题解析】 字符型数据在计算机内部是以 ASCII码存储的,英文大写字母和小写字母在 ASCII码表中都是连续的,大写字母 A到 Z是从 65到 90,小写字母a到 z是 97到 122,所以只要变量 c大于 a并且小于 z就能保证其为小写字母。 26 【正确答案】 B 【试题解析】 用户调用标准库函数前不必重新定义,而只需使用预编译命令将该函数所在文件包括到用户源文件中即
29、可。而且,系统允许用户重新定义标准库函数,但此时该函数将失去原有含义。因此,正确答案为选项 B) 。 27 【正确答案】 A 【试题解析】 函数的形式参数之间以逗号 “, ”隔开,且每个变量均需说明其数据类型,圆括号后面不能有分号。只有选项 A) 符合要求。 28 【正确答案】 C 【试题解析】 本段程序的作用是输出字符串 “lanuage“中字母 u之前的字符,并将其转化为大写字母。 29 【正确答案】 B 【试题解析】 本题考查指向字符串的指针变量。指针变量 p指向的应该是该字符串中的首地址, p+3指向的是字符串结束标志 “0“的地址,因而 *(p+3)的值为 0。 30 【正 确答案】
30、 C 【试题解析】 EOF是文本文件的文件结束标志, NULL是打开文件错误的返回值。 foef(fp)用来判断文件位置指针是否在文件末尾,文本文件和二进制文件均可以使用此函数。如果遇到文件结束就返回 1,否则返回 0。 31 【正确答案】 D 【试题解析】 在 C语言中,将一个字符常量放到一个字符变量中,实际并不是把该字符本身放到内存单元中,而是将与该字符相对应的 ASCII码放到存储单元中。 32 【正确答案】 B 【试题解析】 本题考查二维数组的定义方式。第一维的大小由以下方法判 断: 当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小; 当初值的个数不能被第二维的常
31、量表达式的值除尽时,则第一维的大小:所得的商数 +1。 33 【正确答案】 B 【试题解析】 在一维数组中要注意的是下标常量表达式的值必须是大于等于零,并且小于自身元素的个数,选项 B) 的下标不是整数,所以错误。 34 【正确答案】 D 【试题解析】 本题考查数组指针的应用。选项 D) 第一层括号中为数组 a中第 i项元素的值,外面再加指针运算符没有意义。 35 【正 确答案】 A 【试题解析】 结构体变量所占内存长度是各成员所占内存长度之和,每个成员分别占有自己的内存单元,而共用体变量所占的内存长度等于最长的成员的长度。 36 【正确答案】 B 【试题解析】 本题考查函数形参与实参的传递规
32、则,当形参与实参都是简单的数据类型时,形参值的改变不能影响实参值,即本题中 c的值未改变,仍然是 6。 37 【正确答案】 D 【试题解析】 本题首先通过第一个 while循环计算字符串 a的长度,再通过第二个循环,将字符串 b连接到字符 a的后面,最后返回连接后的总长度 。 38 【正确答案】 D 【试题解析】 带参数的宏定义如下: #define宏名 (参数 )字符串。本题中,宏定义的作用是指定用标识符 PI来代替 “3.1415926”这个字符串,但宏定义不是 C语句,行末不加分号。 39 【正确答案】 A 【试题解析】 gets函数和 puts函数是库函数,必须包含的头文件是 stdi
33、o.h。 40 【正确答案】 D 【试题解析】 用 fseek函数可以改变文件的位置指针,从而实现对文件的顺序读写和随机读写。 41 【正确答案】 C 【试题解析】 指针变量 p指向数组 a的首地址,并把指针变量 p的地址赋给指向指针的指针变量 k。第一个 printf函数输出 2,第二个 printf函数输出 4。 42 【正确答案】 D 【试题解析】 此题考查结构体的定义和引用。选项 A) 的错误是通过结构体名引用结构体成员;选项 B) 的错误是将结构体名作为类型名使用;选项 C) 的错误是将关键字 struct作为类型名使用;选项 D) 是定义变量 v2并对其初始化的语句,初始值只有前一
34、部分,这是允许的。 43 【正确答案】 C 【试题解析】 p+=3使指针 p指向字符 “d“,函数 strcpy的功能是把后面的字符串复制到 p指针指向的空间; strlen函数的功能是求字符串的长度,并返回字符个数,不计最后的 “0“。本题结果为 4,即字符串 “ABCD”的长度。 44 【正确答案】 C 【试题解析】 选项 A) char * a; *a=“china“应改为 char*a; a=“china“;选项 B) 应该将 str5改为 str6;选项 D) 表述方法错误, c, d两个数组定义时不能连续赋值。 45 【正确答案】 A 【试题解析】 函数调用相当于 f(2, 3),
35、程序 运算结果为 -1。 46 【正确答案】 A 【试题解析】 左移运算符 “ ”是双目运算符,其功能是把 “ ”左边运算数的二进制位全部左移若干位,移动的位数由 “ ”右边数指定,高位丢弃,低位补0。例如: a=00000011(十进制数 3),左移 4位后为 00110000(十进制数 48)。 47 【正确答案】 D 【试题解析】 fputc函数的一般调用形式为 fputc(ch, fp),其中 ch是要输出的字符,它可以是一个字符常量,也可以是一个字符变量; fp是文件指针变量。函数fputc的作用是将字 符 (ch的值 )输出到 fp所指向的文件中去。 fputc函数也带回一个值:如
36、果输出成功,则返回值就是输出的字符;如果输出失败,则返回 EOF(-1)。 48 【正确答案】 C 【试题解析】 buf是一个指针。对函数 fread来说,它是读入数据的存放地址 (指起始地址 )。对 fwrite来说,是要输出数据的地址。 49 【正确答案】 B 【试题解析】 该题关键要注意在不带参数的宏中对 2*M+1进行宏替换时,要将宏名 M原封不动地代进去,得到 NUM的形式为 2*N+1+1(千万不要随意给 N+1加上括号, 使 NUM变为 2*(N+1)+1,这就是宏名和变量名之间的区别 ),再将 N代进去,得到 NUM的值为 6。 50 【正确答案】 C 【试题解析】 此题的关键
37、是要分清指针数组与指向一维数组指针之间的不同,题中的说明语句定义了一个指针变量 prt,它指向包含三个整数元素的一维数组。要注意: *prt两侧的圆括号不能缺少,如果写成 *ptr3,则 ptr与 3先结合,是数组,然后再与前面的。号结合,则 *ptr3将是一个指针数组。 51 【正确答案】 非线性结构 【试题解析】 数据的逻辑结构有线性结 构和非线性结构两大类。 52 【正确答案】 相邻 【试题解析】 常用的存储表示方法有四种:顺序存储、链式存储、索引存储、散列存储,其中,顺序存储方法是把逻辑上相邻的结点存储在物理位置也相邻的存储单元中。 53 【正确答案】 可重用性 【试题解析】 本题考查
38、了继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。 54 【正确答案】 软件开发 【试题解析】 基于软件工程的目标,软件工程的理论和技术性研究的内容主要包括软件开发技术和软件工 程管理。软件开发技术包括软件开发方法学、开发过程、开发工具和软件工程环境,其主体内容是软件开发方法学;软件工程管理包括软件管理学、软件工程经济学以及软件心理学等内容。 55 【正确答案】 集合 【试题解析】 在关系操作中,所有操作对象与操作结果都是关系。而关系定义为元数相同的元组的集合。因此,关系操作的特点是集合操作。 56 【正确答案】 11 【试题解析】 本题考核的
39、知识点是 printf()函数的输出格式本题中定义了一个整型变量 i并赋初值为 9,然后要求以八进制输出 i的值,因为 9的八进 制的表示为 11,所以最后输出的值为 11。 57 【正确答案】 n1=%dnn2=%dn或 n1=%dnn2=%d或 n1=%2dnn2=%2dn或 n1=%2dnn2=%2d 【试题解析】 printf函数有两种参数:格式控制参数和输出项参数,其中格式控制参数由两种成分组成;格式说明和普通字符,普通字符将被简单地复制显示,格式说明项将引起一个输出参数项的转换与显示,它是由 “%” 引出并以一个类型描述符结束的字符串。本题中, n1=和 n2=就是普通字符,可以直
40、接显示,又因为n1, n2为整数, 所以格式说明项为 %d,也可以在 %与 d之间加上域宽,另外还要在每行输出结束时加转义字符 n进行换行。所以,应填写 n1=%dnn2=%dn,n或 n1=%dnn2=%d或 n1=%2dnn2=%2dn或 n1=%2dnn2=%2d。 58 【正确答案】 1 【试题解析】 首先计算 if语句后面的表达式,根据运算符的优先级可知,先算“a!=0”,该值为 1,再把 1赋值给 p,结果为 1(真 ),执行其后的 printf语句,输出的值为 1。 59 【正确答案】 0 【试题解析】 关系运算符 “ ”的结合 方式是从左向右的,所以在本题中的表达式 a b c
41、;从左向右开始计算, a b的结果为 “1”,接着 1和 c比较假,该空格处应该填 0。 60 【正确答案】 stract node* 【试题解析】 本题考核的知识点是指向结构体自身的指针。 link是指向结构体自身的指针,因此 link是指针,指向 struct node类型的数据,可定义成 “struct node*link”。 61 【正确答案】 5 【试题解析】 此程序中, for循环语句后面直接跟了一个 “; ”,表明循环体为空输出语句不在 for循环 体内,所以在循环执行完毕后才输出 s的值 s、 i的初值分别为 0和 1,判断循环条件,表达式 “13”成立,执行 “i+, s+=
42、i”后, i和 s的值分别为 2和 1,继续判断循环条件,表达式 “23”成立,执行 “i+, s+=i”后, i和 s的值分别为 3,再次判断循环条件,表达式 “33”不成立,循环结束。 62 【正确答案】 bri或 *(br+i) 【试题解析】 求最大值算法要求输入的一般是一系列数,例如一个数组,而输出只有一个值。计算时通常的做法是,首先将这一系列数的笫 1个值保存到结果变量中,然后用一个 指针或循环变量从头 (或从第 2个值 )至尾遍历这一系列数,每次比较结果变量和被遍历的值,如果该值比结果大,则将该值保存到结果中。本题中, 3行 4列二维数组 a显然是算法的输入值,而传给函数 fun(
43、)的 3和 4在函数中起到限制循环次数的作用,所以它们代表输入数据的行列数而传递给函数的一维数组 b即没有初始化,最后又要输出它,所以数组 b肯定是用来保存每行的最大值。在函数中是一个二重循环,外循环首先将 ari0赋给 x,然后内循环中比较 x和 aril刚,若 x比较小就让 x=arij,这就说明 x是保存结果的临时变量最后应该将 x的值输出到数组 b中,也就是形参 br的相应位置。故在空格处应该填的内容为 bri或者写成指针方式 *(br+i)。 63 【正确答案】 abc 【试题解析】 字符串的结束标记 0,当输出一个存放在字符数组中的字符串时,只需输出到 0为止,而不管其后有什么数据
44、。本题给字符数组 s的元素 s3赋值为 0,故只能输出 3个字符 “abc”。 64 【正确答案】 bcdefgha 【试题解析】 在本题定义的 ss()函数中首先定义了一个指针 p和一个字符变量t,然后让 p指向 参数指针 s的下一个位置 s+1,并让 t保存 s位置的字符然后使用一个 while循环将 p指向的内容赋给它前面一个位置,即将参数 s所指的字符串从第 2个字符开始整体往前移动一位。循环结束时, p指向原 s串的结束标志处,所以让 *(p-1)=t;即是将原 s串的第 1个字符复制到 s串的最后一个位置。整个函数实现的是让一个字符串循环左移一位。故主函数中最后输出的字符串是“bcdefgha“。 65 【正确答案】 30 25 【试题解析】 本题考核的知识点是变量的存储属性和算术运算的应用。本题涉及了自动变量、静态变量 和外部变量。外部变量是定义在所有函数之外的变量,本题中 int a=5定义了一个外部变量 a,它是一个全局变量,即作用域是从定义的位