1、国家二级 C语言机试(选择题)模拟试卷 90及答案与解析 一、选择题 1 算法的空间复杂度是指 ( )。 ( A)算法程序的长度 ( B)算法程序中的指令条数 ( C)算法程序所占的存储空间 ( D)算法执行过程中所需要的存储空间 2 下列叙述中正确的是 ( )。 ( A)一个逻辑数据结构只能有一种存储结构 ( B)逻辑结构属于线性结构,存储结构属于非线性结构 ( C)一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率 ( D)一个逻辑数据结构可以有多种存储结构,且各种存储 结构影响数据处理的效率 3 下列关于类、对象、属性和方法的叙述中,错误的是 ( )。 ( A)类是对
2、一类具有相同的属性和方法对象的描述 ( B)属性用于描述对象的状态 ( C)方法用于表示对象的行为 ( D)基于同一个类产生的两个对象不可以分别设置自己的属性值 4 在软件开发中,需求分析阶段产生的主要文档是 ( )。 ( A)数据字典 ( B)详细设计说明书 ( C)数据流图说明书 ( D)软件需求规格说明书 5 数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和 ( )。 ( A) 编码设计 ( B)测试阶段 ( C)运行阶段 ( D)物理设计 6 在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是 ( )。 ( A)并 ( B)交 ( C)投影 ( D)除 7 下列叙述中
3、,正确的是 ( )。 ( A)软件交付使用后还需要进行维护 ( B)软件一旦交付使用就不需要再进行维护 ( C)软件交付使用后其生命周期就结束 ( D)软件维护是指修复程序中被破坏的指令 8 设一棵满二叉树共有 15个结点,则在该满二叉树中的叶子结点数为 ( )。 ( A) 7 ( B) 8 ( C) 9 ( D) 10 9 设 R是一个 2元关系,有 3个元组, S是一个 3元关系,有 3个元组。如T=RS,则 T的元组的个数为 ( )。 ( A) 6 ( B) 8 ( C) 9 ( D) 12 10 下列选项中,不属于数据库管理的是 ( )。 ( A)数据库的建立 ( B)数据库的调整 (
4、 C)数据库的监控 ( D)数据库的校对 11 对于一个正常运行的 C程序,下列叙述中正确的是 ( )。 ( A)程序的执行总是从 main函数开始,在 main函数结束 ( B)程序的执行总是从程序的第一个函 数开始,在 main函数结束 ( C)程序的执行总是从 main函数开始,在程序的最后一个函数中结束 ( D)程序的执行总是从程序中的第一个函数开始,在程序的最后一个函数中结束 12 以下选项中与 if(a=1)a+; else a=b;语句功能不同的语句是 ( )。 ( A) switch(a) case 0: a=b; break; default: a+; ( B) switch
5、(a=1) case 0: a+; default: a=b; ( C) switch(a) default: a=b; break; case 1: a+; ( D) a=(a=1)?(a+): b 13 以下不合法的用户标识符是 ( )。 ( A) 804zhang ( B) )hh ( C) yy614 ( D) If 14 已知 char a; int b; float c; double d;则表达式 a-b+c-d结果为 ( )型。 ( A) double ( B) float ( C) int ( D) char 15 假设有语句 sizeof(double),则它是 ( )。
6、( A)一个整型表达式 ( B)一个双精度浮点型表达式 ( C)一种函数调用 ( D)一种函数定义 16 若变量都已正确说明,则以下程序段输出结果为 ( )。 #include stdio h main() (char a=a; intb=2; printf(a b?”*a= d: #bb= d, a, b); ( A) *a=3 ( B) #b=3 ( C) *a=3#b=5 ( D)全部错误 17 若有以下定义 (设 int类型变量古 2个字节 ) int i=8,j=9; 则以下语句: printf(i= d, j= d n, i,j); 输出的结果是 ( )。 ( A) i=8,j=9
7、 ( B) i= d,j= 8 ( C) i= d,j= d ( D) 8,9 18 设 a和 b均为 int型变量,且 a=6, b=11,则能使值为 3的表达式是 ( )。 ( A) b (a 4) ( B) b (a-a 5) ( C) b a-a 5 ( D) (b a)-(a 4) 19 有关 return语句说法不正确的是 ( )。 ( A)系统默认的返回值类型为整型,故当函数的返回值为 int型时,在函数定义时,返回值的类型说明可以省略。 ( B)当函数有返回值时,凡是允许表达式出现的地方,都可以调用该函数。 ( C)当函数没有返回值时,函数的返回值类型可以说明为 void型,它
8、表示 “无类型 ”或 “空类型 ”。 ( D)函数的返回值类型必须与 return语句中的表达式值的类型一致,但 C语言也允许不同;这时,系统以函数定义时的返回值类型说明为准,并自动地将 return语句中表达式的值转换为函数的返回值类型。 20 有以下程序: #include stdio h main() int i=0, a=0; while(i 20) for(; ) if(i 5)=0)break; else i-; i+=13, a+=i; printf( d n, a); 程序的输出结果是 ( )。 ( A) 62 ( B) 63 ( C) 23 ( D) 36 21 在下列选项中
9、,没有构成死循环的程序段是 ( )。 ( A) int i=100; for(; ) i=i 10+1; if(i 10)break; ( B) while(1); ( C) int k=0; do+k; while(k =10); ( D) int s=12; while(s); -s; 22 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是 ( )。 ( A)函数调用可以作为独立的语句存在 ( B)函数调用可以作为一个函数的实参 ( C)函数调用可以出现在表达式中 ( D)函数调用可以作为一个函数的形参 23 以下程序的输出结果是 ( )。 #include stdio h m
10、ain() int a=1, b=3; if(+a 0) &!(b- =0) printf( d, d n“,a, b); else printf( d, d n, b, a); ( A) 2, 2 ( B) 1, 3 ( C) 3, 2 ( D) 3, 1 24 有以下程序: #include stdio h main() int x; scanf( d, &x); if(x =0); else if(x!=5)printf( d n, x); 程序运行时,输入的值在哪个范围才会有输出结果 ( )。 ( A)不等于 5的整数 ( B)大于 0且不等 5的整数 ( C)大于 0或等于 5的整数
11、 ( D)小于 5的整数 25 若执行下述程序时,若从键盘输入 6和 8,结果为 ( )。 main() int a, b, s; scanf( d d, &a, &b); S=a: if(s=b)s*=s: printf( d, s); ( A) 36 ( B) 64 ( C) 48 ( D)以上都不对 26 若运行时给变量 x输入 12,则以下程序的运行结果是 ( )。 main() intx, y; scanf( d, &x); y=x 127x+10: x-12; printf( d n, y); ( A) 0 ( B) 22 ( C) 12 ( D) 10 27 运行下面程序时,从键
12、盘输入字母 A,则输出结果是 ( )。 #include stdio h main() char ch; ch=getchar(); switch(ch) caseA: printf(AAAA n); caseB: printf(BBBB n); default: printf(CCCC n); ( A) AAAA ( B) AAAA BBBB ( C) AAAA BBBB CCCC ( D) AAAA CCCC 28 以下叙述正确的是 ( )。 ( A)只能在循环体内和 switch语句体内使用 break语句 ( B) contiune语句的作用是结束整个循环的执行 ( C)在循环体内使用
13、 break语句或 continue语句的作用相同 ( D)从多层循环嵌套中退出时,只能使用 goto语句 29 下列叙述中错误的是 ( )。 ( A)在 C语言中,对二进制文件的访问速度比文本文件快 ( B)在 C语言中,随机文件以二进制代码形式存储数据 ( C)语句 FILE fp;定义了一个名为 fp的文件指针 ( D) C语言中的文本文件以 ASCII码形式存储数据 30 若输入 “abcdef”、 “abdef”,以下程序的输出结果为 ( )。 #include stdio h #include string h main() int n; char s120, s220, *p1,
14、 *p2; scanf( s, s1); scanf( s, s2); p1=s1; p2=s2; n=strcmp(p1, p2); printf( d n, n); ( A) -1 ( B) 0 ( C) abcdef ( D) abdef 31 以下语句定义正确的是 ( )。 ( A) int a14=1, 2, 3, 4, 5; ( B) float a3=1, 2, 3; ( C) long a23=1, 1, 2, 1, 2, 3, 0, 0; ( D) double a3=0; 32 下述程序的输出结果是 ( )。 #include stdio h void main() int
15、 a5=1, 2, 3, 4, 5; int *p=a, *q=&p; printf( d, *(p+); printf( d, *q); ( A) 22 ( B) 11 ( C) 34 ( D) 12 33 字符串 ABCDEF 的长度是 ( )。 ( A) 11 ( B) 10 ( C) 5 ( D) 3 34 若二维数组 a有 m列,则在 aij前的元素个数为 ( )。 ( A) j*m+i ( B) i*m+j ( C) j*m+i+1 ( D) i*m+j+1 35 下列程序的运行结果是 ( )。 #include stdio h void fun(int *s, int*p) st
16、atic int t=3; *P=st; t-; voidmain() int a=2, 3, 4, 5, k, x; for(k=0; k 4; k+) fun(a, x); printf( d, , x); ( A) 5, 4, 3, 2, ( B) 2, 3, 4, 5, ( C) 2, 2, 2, 2, ( D) 5, 5, 5, 5, 36 以下有关宏替换的叙述不正确的是 ( )。 ( A)双引号中出现的宏名不替换 ( B)使用宏定义可以嵌套 ( C)宏定义仅仅是符号替换 ( D)宏名必须用大写字母表示 37 设有定义: char *c;,以下选项中能够使字符型指针 c正确指向一个字
17、符串的是 ( )。 ( A) char str=string; c=str; ( B) scanf( s, c); ( C) c=getchar(); ( D) char str=string; strcpy(c, str) 38 有以下程序: #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)
18、; void f(structA *t) t- a=1002; strcpy(t- b, ChangRong); t- c=1202 0; 程序运行后的输出结果是 ( )。 ( A) 1001, zhangDa, 1098 0 ( B) 1002, ChangRong, 1202 0 ( C) 1001, ChangRong, 1098 0 ( D) 1002, zhangDa, 1202 0 39 下述程序的输出结果是 ( )。 #include stdio h voidmain() char a=1, b=2; char c=a b 2; pfintf( n d, c); ( A) 9 (
19、 B) 10 ( C) 12 ( D) 2 40 已知一个文件中存放若干工人档案记录,其数据结构如下: struct a charnumber 100; int age; float p6; ; 定义一个数组: struct a b10; 假定文件已正确打开,不能正确地从文件中读入 10名工人数据到数组 b中的是( )。 ( A) fread(b, sizeof(struct a), 10, fp); ( B) for(i=0; i 10; i+) fread (bi, sizeof(struct a), 1, fp); ( C) for(i=0; i 10; i+) fread(b+i, s
20、izeof(struct a), 1, fp); ( D) for(i=0; i 5; i+=2) fread(b+i, sezeof(struct a), 2, fp); 国家二级 C语言机试(选择题)模拟试卷 90答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 算法的空间复杂度是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包,括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行中所需要的额外空间。其中,额外空间包括算法程序执行过程中的工作单元以及某种数据 结构所需要的附加存储空间。如果额外空间量相对于问题规模来说是常数,则称该算法是原地工作的。在许多实际问
21、题中,为了减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减少不必要的额外空间。 2 【正确答案】 D 【试题解析】 数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据逻辑结构可以根据需要采用不同的存储结构,常用的存储结构有顺序和链式结构。比如逻辑结构中简单的线性结构,可以用数组 (顺序存储 )或单向链表 (链接存储 )来实现。采用不同的存储结构,其处理的效率是不同的。 3 【正确答案】 D 【试题解析】 类是对一类具有相同的属性和方法对象的描述,属性用于描述对象的状态,方法用于表示对象的行为,基于同一个类产生的两个对象是可以分别设置自己的属性值。 4 【正确答案】
22、D 【试题解析】 需求分析的最终结果是生成软件需求规格说明书,可以为用户、分析人员和设计人员之间的交流提供方便。 5 【正确答案】 D 【试题解析】 数据库设计目前一般采用生命周期法,即将整个数据库应用系统的开分解成目标独立的若干阶段,它们是:需求分析阶段、概念设计阶段、逻辑设计阶段、物理 设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。在数据库设计中采用上面几个阶段中的前四个阶段,并且重点以数据结构和模型设计为主线。 6 【正确答案】 B 【试题解析】 关系 R与 S经交运算后所得到的关系是由那些既在 R内又在 S内的有序组所组成,记为 RS,交运算不改变关系表中的属性个数但能减少元
23、组个数。 7 【正确答案】 A 【试题解析】 软件的运行和维护是指将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。而软件生命周期是指软件产品从提 出、实现、使用维护到停止使用退役的过程。 8 【正确答案】 B 【试题解析】 在具有 n个结点的满二叉树,其非叶子结点数为 int(n 2),而叶子结点数等于总结点数减去非叶子结点数。本题 n=15,故非叶子结点数等于int(15 2)=7,叶子结点数等于 15-7=8。 9 【正确答案】 C 【试题解析】 R为 n元关系,有 p个元组 S为 m元关系,有 q个元组。两个关系笛卡儿积是一个 n+m元的关
24、系,元组个数是 qp。所以 T的元组的个数为 9个。 10 【正确答案】 D 【试题解析】 数据库管 理一般包括:数据库的建立、数据库的调整、数据库的重组、数据库的安全性控制与完整性控制、数据库的故障恢复和数据库的监控。 11 【正确答案】 A 【试题解析】 一个 C语言源程序无论包括了多少函数,总是从 main函数开始执行,从 main函数结束。 12 【正确答案】 B 【试题解析】 if else语句的含义是,如果变量 a的值等于 1,变量 a的值加 1,否则,则把变量 b的值赋给变量 a。在本题的 4个选项中,与其含义不同的是选项B,因为当 a=l的时候,会直接执行 default后面的
25、语句,并不会执行 case后现在语句,最终结果是将 b的值赋给 a。 13 【正确答案】 A 【试题解析】 C语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或下划线。 14 【正确答案】 A 【试题解析】 C语言中允许进行不同数据类型的混合运算,但在实际运算时,要先将不同类型的数据转化成同一类型再进行运算。类型转换的一般规则是: 运算中将所有 char型转换成 int型, float型转换成 double型: 低级类型服从高级类型,并进行相应的转换,数据类型由低到高的顺序为: char- int- unsigned- long- float- double; 赋值运算
26、中最终结果的类型,以赋值运算符左边变量的类型为准,即赋值运算符右端值的类型向左边变量的类型看齐,并进行相应转换。 15 【正确答案】 A 【试题解析】 sizeof(double)是 C语言内部规定的一个计算参数 (double)在计算机的内存中所占用的字节数量的函数,它返回一个整数值。 16 【正确答案】 D 【试题解析】 本题考查 printf函数的格式和三目运算符 “?: ”的使用。 printf函数中格式说明符之前插 入的任何字符都原样输出。本题中 “a b”为真,所以返回“*a=97”。 17 【正确答案】 B 【试题解析】 本题考查 printf函数的格式。 printf函数中格式
27、说明符之前插入的任何字符都按原样输出。对于 printf函数,有两个说明,第一个后面的内容要按原样输出。 18 【正确答案】 D 【试题解析】 表达式 “a b”表示的是求 a除以 b的余数。因此,选项 A: (64)=2, 11 2=1;选项 B: (6-6 5)=5, 11 5=1;选项 C: 11 6-6 5=4;选项D: (11 6)-(6 4)=3。 19 【正确答案】 D 【试题解析】 函数的返回值类型一般与 return语句中的表达式值的类型一致,但 C语言也允许不同;这时,系统以函数定义时的返回值类型说明为准,并自动地将 return语句中表达式的值转换为函数的返回值类型。 2
28、0 【正确答案】 D 【试题解析】 本题考查 while循环。当 i 20时,进入 while循环体,循环体内的 for循环实现的功能是,当 i值是 0或 5的倍数时,执行 “i+=13; a+-i; ”这两条语句;若 i值不是 5的倍数则一直执行 for循环。 当 i=0时,执行 “i+=13;a+=i; i=13, a=13”; 判断 “i=13 20”,进入 while循环体, i=10时,跳出 for循环,执行 “i+=13; a+i; i=23, a=36”; 判断 “i=23 20”,循环结束。 21 【正确答案】 C 【试题解析】 本题考查死循环的知识。选项 A中, for循环没
29、有任何控制语句就会一直执行下去,所以不可能通过控制表达式的值,结束循环。循环体内, “i=i10+1”这个表达式的值,永远不会大于 10,所以永远不会跳出循环,是死循环;选项 B中, while中表达式永远 是非 0,不会结束循环;选项 C中,当 k 10时,结束循环;选项 D中, “while(s); ”后面没有任何表达式而是直接加了一个分号,会一直执行,形成死循环。 22 【正确答案】 D 【试题解析】 本题考查函数调用的有关知识点。函数调用 可以出现在表达式中; 可以作为独立的语句存在; 可以作为一个函数的实参。 23 【正确答案】 C 【试题解析】 解答本题的关键在于 if语句条件中的
30、表达式。初始时 “a=l, b=3”,所以 “+a=2 0”,因此 “+a 0”为假:因为是进行逻辑与 ( &)运算,在 &的一个运算对象为假的前提下不用判断第二个运算对象的真假。就可以直接得出整个表达式的值为逻辑 0,所以执行 else语句。 24 【正确答案】 B 【试题解析】 题目中,虽然 else和第二个 if不在同一行上,但等价于在同一行上,因此,程序的意思是当 x大于 0且不等于 5时将其打印出来。 25 【正确答案】 B 【试题解析】 首先通过 scanf函数把从键盘读入的数据赋给变量 a和 b, if语句判断如果 a和 b不等,执行 s=s*s=64。 26 【正确答案】 A
31、【试题解析】 本题考查三目条件 运算符 “?: ”。表达式 “x 127x+10: x-12”即,如果 x 12成立,则 x+10的值即为此表达式的值,否则 x-12即为此表达式的值。因为 x=12,所以 x 12不成立,所以执行 “y=x-12=0”。 27 【正确答案】 C 【试题解析】 本题考查 “switch”语句。因为 “ch=A”,所以第一个 switch语句,执行 “case A”后面的语句,输出 AAAA,没有遇到 break语句,所以接着再执行“caseB”和 default,分别输出 BBBB和 CCCC。 28 【正确答案】 A 【试题解析】 本题考查循环的 4个知识点:
32、 break语句可以出现在循环体内及switch语句体内,不能用于其他的语句; continue语句的作用是结束本次循环,即跳过循环体中下面尚未执行的语句,而接着转去判定循环条件是否成立,从而确定下一次循环是否继续执行,也就是说执行 contiune语句不会使整个循环终止; 在循环体内使用 break语句会使循环提前终止; 从多层循环嵌套中退出时,可以使用 goto语句或者 break语句。 29 【正确答案】 C 【试题解析】 在 C语言中,文件指针实际上是指向 一个结构体类型的指针,一般称这个结构体类型名为 FILE,可以用此类型名来定义文件指针。定义文件类型指针变量的一般形式为: FIL
33、E *指针变量名;选项 C中少了 “*”,所以选项 C错误。 30 【正确答案】 A 【试题解析】 本题考查两个知识点: 字符串比较函数 strcmp(s1, s2),若 s1s2,则返回 1;若 s1=s2,则返回 0;若 s1 s2,则返回 -1。 字符串依次比较的是它们相同位置上字符的 ASCII码值。 31 【正确答案】 D 【试题解析】 本题考查的是如何对二维数组进行赋值。 选项 A中数组第二维的大小是 4,但却给赋了 5个元素;选项 B中 C语言规定,对于二维数组,只可以省略第一个方括号中的常量表达式而不可以省略第二个方括号中的常量表达式;选项 C中数组第一维的大小是 2,但是赋值
34、却超过了 2;选项 D中在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取 0。 32 【正确答案】 D 【试题解析】 。程序首先定义了一个指向一维数组 a的指针 p,一个指向指针变量 p的指针变量 q,输出 *(p+)是先输出 *p即 a0的值,再将指针 p指向数组的下一个元素 a1,输出 *q是 输出指针 p所指向单元的内容,即 a1的值。 33 【正确答案】 B 【试题解析】 本题涉及字符串的两个最基本的概念。 字符串的长度是指字符串中字符的个数,但不包含字符串结束符; 以反斜线 “ ”开头的特殊字符序列,意思是把反斜线后面的字符序列转换成特定的含义,而不是原来的含义
35、,不包含在字符串长度之内, “ ”连同后面的字符为一个长度。 34 【正确答案】 B 【试题解析】 二维数组的元素可以看成是按矩阵形式存放的,总是先存放第一行的元素,再存放第二行的元素。 数组第一维的下标是 i, 说明它前面还有 i行,有 i*m个元素,数组第二维的下标是 i,说明它前面还有 j列,有 j个元素,所以共有 i*m+j个元素。 35 【正确答案】 A 【试题解析】 分析 fun函数程序段,可知 fun函数要实现的功能是将 s中第 (i+1)个元素以前的元素 “逆置 ”赋给数组 p。由于 fun函数定义了静态变量 t=3,因此,在主函数中调用函数 fun(a, X)时,就是要将数组
36、 a中前 4个元素逆置赋给数组x,最后输出 x数组。 36 【正确答案】 D 【试题解析】 本题考查宏替换的规则。宏替换分为简单的字符替换和带参 数的宏替换两类。使用宏时应注意以下几点: 宏定义仅仅是符号替换,不是赋值语句,因此不做语法检查; 为了区别程序中其他的标识符,宏名的定义通常用大写字母,但不是必须用大写; 双引号中出现的宏名不替换; 使用宏定义可以嵌套,即后定义的宏中可以使用先定义的宏。 37 【正确答案】 A 【试题解析】 在题目的题干中定义了字符指针变量 c,在选项 A中,首先定义字符数组 s仃,然后再把字符数组 str的首地址赋给字符指针变量 c。所以选项 A是正确的。在选项
37、B中,指针 c没有正确初始化,指向的地址是为空的,因此不能在 scanf函数中使用;在选项 C中, getchar函数的返回值是用户输入的第一个字符的 ASCII码,如出错返回 -1,且将用户输入的字符回显到屏幕,如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续 getchar调用读取,即 c只能指向一个字符而不能指向字符串;在选项 D中, strcgy函数用于字符串拷贝,函数有两个参数,因此 strcpy(“c,str“)书写错误,所以选项 D是错误的。 38 【正确答案】 B 【试题解析】 本题主要考查是的函数调用时参数之间的传递问题。在 C语言中参数 之间的传
38、递是传值,也就是把实参的值复制一份传递给形参,而实参的值不发生变化。但对于指针调用来说,函数直接对实参的地址操作,因此在这种情况下实参变化。 39 【正确答案】 A 【试题解析】 本题主要考查 C语言最基本的算术运算 “左移 ( )”和 “异或( )”。 “左移 ”或 “右移 ”运算表达式的一般形式为: x n或 x n。 “左移 ( )”运算的规则是将 x的二进制位全部向左移动 n位,将左边移动的高位舍弃,右边空出的位补 0; “右移 ( )”运算的规则是将 x的二进制位全部向右移动 n位,将右边移出的低 位舍弃,左边高位空出要根据原来符号位的情况进行补充,对无符号数则补 0,对有符号数,若
39、为正数则补 0,若为负数则补 1。 “异或 ”运算是当两个运算量的相应位相同时结果为 0,不相同时结果为 1。 b=2的二进制为 (00000010)b 2后为 00001000, a=1的二进制为 00000001,所以c=a b 2为 00001001,转化为十进制后为 9。 40 【正确答案】 B 【试题解析】 数据块输入输出函数的调用格式为:fread(buffer,size,count,fp),其中, “buffer”是一个指针,对于 fread来说,它是读入数据的存放地址。 “size”是要读写的字节数; “count”是要进行读写多少个 size字节的数据项; “fp”是指文件型指针。选项 B中 bi是一个数组,不是指针,需改为 &bi。