1、二级 C+模拟 487 及答案解析(总分:178.00,做题时间:90 分钟)一、选择题(总题数:40,分数:68.00)1.有下列程序: #include stdio.h #include“string.h“ void fun(char*s,int n) char*t;int i,j for(i=0;in-1;i+) for(i=0;in-1;i+) if(strlen(sistrlen(sj)t=si;si=s j;sj=t; void main() char*ss=“bcc“,“bbcc“,“xy“,“aaaacc“,“aab- fun(ss,5);printf(“%s,%s/n“,ss
2、0,ss4); (分数:2.50)A.xy,aaaaccB.aaaacc,xyC.bcc,aabccD.aabcc,bcc2.不能作为重载函数的调用的依据是(分数:2.00)A.参数个数B.参数类型C.函数类型D.函数名称3.对于常成员函数,下面描述正确的是_。(分数:2.50)A.常成员函数只能修改常数据成员B.常成员函数只能修改一般数据成员C.常成员函数不能修改任何数据成员D.常成员函数只能通过常对象调用4.下列程序的运行结果为_。 #includeiostream.h templateclass TT class FF TT a1,a2,a3; public: FF(TT b1,TT b
3、2,TT b3)a1=b1;a2=b2;a3=b3; TT Sum()return a1+a2+a3; void main() FFintx(int(1.1),2,3),y(int(4.2),5,6);coutx.Sum()“y.Sum()endl;)(分数:1.00)A.6.1 15.2B.6 15C.6 15.2D.6.1 155.在一个函数体中,定义一个变量的默认存储类型是_。(分数:1.00)A.externB.registerC.autoD.static6.有如下函数模板定义: templatetypename T1,typename T2 T1 FUN(T2 n)return n*
4、5,0; 若要求以 int 型数据 9 作为函数实参调用该模板,并返回一个 double 型数据,则该调用应表示为_。(分数:2.50)A.FUN(9)B.FUN9C.FUNdouble(9)D.FUN9(double)7.以下关键字不能用来声明类的访问权限的是_。(分数:1.00)A.publicB.staticC.protectedD.private8.已知函数 f 的原型是 void f(int*a,longlong v2; 下列调用语句中正确的是_。(分数:1.00)A.f(v1,B.f(v1,v2);C.f(D.f(9.定义如下枚举类型 enumMonday,Tuesday,Wedn
5、esday,Thrusday,Friday=2);则下列选项正确的是( )。(分数:2.00)A.表达式 wednesday=Friday 的值是 trueB.Day day;day=3;C.Day day;day=Monday+3;D.Day day;day=Tuesday+10;10.有如下程序: #include iostream using namespace std; class Base public: void output() cout1; virtual void Print() cout“B“; ; class Derived:public Base public: voi
6、d output() cout2; void Print() cout“D“; ; int main() Base *ptr=new Derived; ptr-output(); ptr-Print(); delete ptr; return(); 程序的输出结果是(分数:2.00)A.1BB.1DC.2BD.2D11.软件生命周期是指 _ 。(分数:1.00)A.软件产品从提出、实现、使用维护到停止使用退役的过程B.软件产品从提出、实现到使用维护的过程C.软件产品从提出到实现的过程D.软件产品从提出、实现到使用的过程12.语句 ofstream f(“SALARY.DAT“,ios_base
7、:app);的功能是建立流对象 f,并试图打开文件SALARY.DAT 与 f 关联,而且_。(分数:2.00)A.若文件存在,将其置为空文件;若文件不存在,打开失败B.若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件C.若文件存在,将文件指针定位于文件首;若文件不存在,打开失败D.若文件存在,打开失败;若文件不存在,建立一个新文件13.有下列程序: #include stdio.h void main() int i=5; do if(i%3=1) if(i%5=2) printf(“*%d“,i);break; i+; while(i! =0); printf(“/n“);
8、 程序的运行结果是_。(分数:2.50)A.*7B.*3*5C.*5D.*2*614.在数据库系统的组织结构中,下列_映射把用户数据库与概念数据库联系了起来。(分数:2.50)A.外模式/模式B.内模式/外模式C.模式/内模式D.内模式/模式15.有如下程序段: int i=1;int j=4; int main() int j=i,i=8; Coutijendl; 运行时的输出结果是_。(分数:2.00)A.14B.81C.88D.1816.下列程序段中包含 4 个函数,其中具有隐含 this 指针的是 _ 。 int funl(); class Test public: int fun2(
9、); friend int fun3(); static int fun4(); ;(分数:2.00)A.fun1B.fun2C.fun3D.fun417.结构化分析方法是面向 _ 的自顶向下、逐步求精进行需求分析的方法。(分数:2.00)A.对象B.数据结构C.数据流D.目标18.将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是_。(分数:2.00)A.不合法的运算符B.一元运算符C.无操作数的运算符D.二元运算符19.下列有关继承和派生的叙述中,正确的是_。(分数:3.00)A.如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员B.派生类的成员函数可以访问基类
10、的所有成员C.基类对象可以赋值给派生类对象D.如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类20.已知函数 FA 调用 FB,若要把这两个函数定义在同一个文件中,则_。(分数:2.00)A.FA 必须定义在 FB 之前B.FB 必须定义在 FA 之前C.若 FA 定义在 FB 之后,则 FA 的原型必须出现在 FB 的定义之前D.若 FB 定义在 FA 之后,则 FB 的原型必须出现在 FA 的定义之前21.有如下程序: #includeiostream using namespace std; class VAC public: int f()constreturn 3; in
11、t f()return 5; ; int main() VAC v1; const VAC v2; coutv1.f()v2.f(); return 0; 执行这个程序的输出结果是_。(分数:1.00)A.53B.35C.55D.3322.C+中设置虚基类的目的是_。(分数:1.00)A.简化程序B.消除二义性C.提高运行效率D.实现数据的隐藏性23.下列叙述中正确的是_。(分数:2.50)A.栈是一种先进先出的线性表B.队列是一种后进先出的线性表C.栈与队列都是非线性结构D.以上三种说法都不对24.下列工具中为需求分析常用工具的是 _ 。(分数:2.00)A.PADB.PFDC.NSD.DF
12、D25.有如下程序: #includeiostream using namespace std; void fl(intx=y;y=z void f2(int x,int y) int z=x;x=y;y=z int main() int x=10,y=26 f1(x,y); f2(x,y); coutyendl; return 0; 运行时的输出结果是_。(分数:1.00)A.10B.16C.26D.3626.有如下函数模板声明: templatetypename,T T Max(T a,T b)return(ab)?a:b; 下列对函数模板 Max()的调用中错误的是_。(分数:1.00)
13、A.Max(3.5,4.5)B.Max(3.5,4)C.Maxdouble(3.5,4.5)D.Maxdouble(3.5,4)27.从工程管理角度,软件设计一般分为两步完成,它们是 _ 。(分数:2.00)A.概要设计与详细设计B.数据设计与接口设计C.软件结构设计与数据设计D.过程设计与数据设计28.在一棵二叉树上第 5 层的结点数最多是 _ 。(分数:2.00)A.8B.16C.32D.1529.下列控制格式输入输出的操作符中,能够设置浮点数精度的是 _ 。(分数:2.00)A.setprecisionB.setwC.setfillD.showpoint30.在数据库系统中,是数据库中全
14、体数据的逻辑结构和特征的描述的数据模式为 _ 。(分数:2.00)A.概念模式B.外模式C.内模式D.物理模式31.在对函数进行原型声明时,下列语法成分中不需要的是_。(分数:1.00)A.函数返回类型B.函数参数列表C.函数名D.函数体32.使用 ifstream 流类定义流对象并打开磁盘文件时,文件的隐含打开方式为_。(分数:1.00)A.ios:inB.ios:outC.ios:inlios:outD.没有默认33.有如下程序 #include iostream #include iomanip using namespace std; int main( ) coutsetprecis
15、ion(3)fixedsetfill(“*“)setw(8); cout12.345_34.567; return 0; 若程序的输出是: *12.345*34.567 则程序中下划线处遗漏的操作符是 _ 。(分数:2.00)A.setprecision(3)B.fixedC.setfill(“*“)D.setw(8)34.以下 for 语句中不是死循环的是 _ 。(分数:2.00)A.for(int i=0;i1;+i);B.for(int i=0;+i);C.for(int i=1;i0;+i);D.for(;);35.若有以下程序: void g(int *q) (*q) +; (*q)
16、 +; void main() int line 5; int *p=line; for (i=0; i5; i+) *p=i; g( for (i=0; i5; i+) coutlinei; coutend1; 该程序运行后的输出结果为( )。(分数:1.00)A.12345B.01234C.11111D.5555536.下列叙述中正确的是_。(分数:1.00)A.在模块化程序设计中,一个模块应该尽量多地包括与其他模块联系的信息B.在自顶向下、逐步细化的设计过程中,首先应设计解决问题的第一个细节C.在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则D.在程序设计过程中,不能同时采用
17、结构化程序设计方法与模块化程序设计方法37.继承具有 _ ,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。(分数:1.00)A.规律性B.传递性C.重复性D.多样性38.下列关于运算符重载的描述中,正确的是(分数:2.00)A.运算符重载可以改变操作数的个数B.运算符重载可以改变运算符的优先级C.运算符重载可以改变运算符的结合性D.运算符重载可以使运算符实现特殊功能39.派生类的成员函数不能访问基类的_。(分数:1.00)A.公有成员和保护成员B.公有成员C.私有成员D.保护成员40.下面有关重载函数的说法中,正确的是 _ 。(分数:1.00)A.重载函数必须具有
18、不同的返回值类型B.重载函数形参个数必须不同C.重载函数必须有不同的形参列表D.重载函数名可以不同二、基本操作题(总题数:1,分数:40.00)41.请使用 VC6 或使用答题菜单打开考生文件夹 proj3 下的工程 proj3,其中定义了 MyString 类,一个用于表示字符串的类。成员函数 reverse 的功能是将字符串进行“反转”。例如,将字符串 ABCDEF“反转”后,得到字符串 FEDCBA;将字符串 ABCDEFG“反转”后,得到字符串 GFEDCBA。请编写成员函数reverse。在 main 函数中给出了一组测试数据,此时程序运行中应显示: 读取输入文件. -反转前- ST
19、R1=ABCDEF STR2=ABCDEFG -反转后- STR1=FEDCBA STR2=GFEDCBA 要求: 补充编制的内容写在“/*333*”与“/*666*”之间,不得修改程序的其他部分。 注意:程序最后将结果输出到文件 out.dat 中,输出函数 WriteToFile 已经编译为 obj 文件,并且在本程序中调用。 /mgsering.h #includeiostream #includecstring using namespace std; class MyString public: MyString(const char*s) str=new charstrlen(s)
20、+1; strcpy(str, s); MyString() delete str; void reverse(); friend ostream return os; private; char*str; ; void writeToFile(char*, const MyString /main.cpp #include“mystring.h“ #includefstream void MyString:reverse() /*333* /*666* int main() char inname128, pathname80; strcpy(pathname, “); sprintf(in
21、name, “in.dat“, pathname); cout“读取输入文件./n/n“; ifstream infile (inname); if(infile.fail() cerr“打开输入文件失败!“; exit(1); char buf4096; infile.getline(buf, 4096); MyString str1(“ABCDEF“), str2(“ABCDEFG“), str3(buf); cout“-反转前-/n“; cout“STR1=“str1endl; cout“STR2=“str2endlendl; str1.reverse(); str2.reverse()
22、; str3.reverse(); cout“-反转后-/n“; cout“STR1=“str1endl; cout“STR2=“str2endlendl; writeToFile(pathname, str3); return 0; (分数:40.00)_三、简单应用题(总题数:1,分数:30.00)42.请使用 VC6 或使用【答题】菜单打开 proj2 下的工程 proj2,此工程包含有一个源程序文件proj2.cpp。其中定义了 Base1 类、Base2 类和 Derived 类。 Base1 是一个抽象类,其类体中声明了纯虚函数 Show。Base2 类的构造函数负责动态分配一个字
23、符数组,并将形参指向的字符串复制到该数组中,复制功能要求通过调用 strcpy 函数来实现。Derived 类以公有继承方式继承 Base1 类,以私有继承方式继承 Base2 类。在 Derived 类的构造函数的成员初始化列表中调用 Base 类的构造函数。 请在程序中的横线处填写适当的代码,然后删除横线,以完成 Base1、Base2 和 Derived 类的功能。此程序的正确输出结果应为: I“m a derived class. 注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“/ *found*”。 / proj2.cpp #include iostrea
24、m #include cstring using namespace std; class Base1 public: / *found* 下列语句需要声明纯虚函数 Show _; ; class Base2 protected: char * _p; Base2 (const char * s) _p = new charstrlen (s) +i; / *found* 下列语句将形参指向的字符串常量复制到该类的字符数组中 Base2() delete _p; ; / *found* Derived 类公有继承 Base1,私有继承 Base2 类 class Derived:_ publi
25、c: / *found* 以下构造函数调用 Base2 类构造函数 Derived (const char * s):_ void Show() cout _p endl; ; int main() Base1 * pb = new Derived(“I“m a derived class.“); pb - Show(); delete pb; return 0; (分数:30.00)_四、综合应用题(总题数:1,分数:40.00)43.请使用 VC6 或使用【答题】菜单打开 proj3 下的工程 proj3,其中包含了类 Integers 和主函数 main的定义。一个 Integers 对
26、象就是一个整数的集合,其中包含 0 个或多个可重复的整数。成员函数 add 的作用是将一个元素添加到集合中,成员函数 remove 的作用是从集合中删除指定的元素(如果集合中存在该元素),成员函数 sort 的作用是将集合中的整数按升序进行排序。请编写这个 sort 函数。此程序的正确输出结果应为: 5 28 2 4 5 3 2 75 27 66 31 5 28 2 4 5 3 2 75 27 66 31 6 5 28 2 4 5 3 2 75 27 66 31 6 19 5 28 4 5 3 2 75 27 66 31 6 19 5 28 4 5 3 2 75 27 66 31 6 19 4
27、 2 3 4 4 5 5 6 19 27 28 31 66 75 要求: 补充编制的内容写在“/ *333*”与“/ *666*”之间。不得修改程序的其他部分。 注意:相关文件包括:main.cpp、Integers.h。 程序最后调用 writeToFile 函数,使用另一组不同的测试数据,将不同的运行结果输出到文件 out.dat 中。输出函数 writeToFile 已经编译为 obj 文件。 /Integers.h #ifndef INTEGERS #define INTEGERS #include iostream using namespace std; const int MAX
28、ELEMENTS = 100; /集合最多可拥有的元素个数 class Integers int elem MAXELEMENTS; /用于存放集合元素的数组 int counter; /用于记录集合中元素个数的计数器 public: Integers(): counter(0) /创建一个空集合 Integers (int data, int size); /利用数组提的数据创建一个整数集合 void add (int element); /添加一个元素到集合中 void remove (int element); /删除集合中指定的元素 int getCount() const retur
29、n counter; /返回集合中元素的个数 int getElement (int i) const return elemi; /返回集合中指定的元素 void sort(); /将集合中的整数按由小到大的次序进行排序 void show() const; /显示集合中的全部元素 ; void writeToFile(const char * path); #endif /main.cpp #include “Integers.h“ #include iomanip Integers:Integers (int data, int size): counter(0) for (int i=
30、0; isize; i+) add(datai); void Integers:add (int element) if(counter MAXELEMENTS) elem counter + + = element; void Integers:remove(int element) int j; for(j = counter-1; j =0; j-) if(elemj = element) break; for(int i=j; icounter-1; i+) elemi = elemi+1; counter-; void Integers:sort() / *333* / *666*
31、void Integers:show() const for(int i=0; igetCount(); i+) cout setw (4) getElement(i); cout endl; int main() int d = 5,28,2,4,5,3,2,75,27,66,31; Integers s (d,11); s.show(); s.add(6); s.show(); s.add(19); s.show(); s.remove(2); s.show(); s.add(4); s.show(); s.sort(); s.show(); writeToFile(“ “); retur
32、n 0; (分数:40.00)_二级 C+模拟 487 答案解析(总分:178.00,做题时间:90 分钟)一、选择题(总题数:40,分数:68.00)1.有下列程序: #include stdio.h #include“string.h“ void fun(char*s,int n) char*t;int i,j for(i=0;in-1;i+) for(i=0;in-1;i+) if(strlen(sistrlen(sj)t=si;si=s j;sj=t; void main() char*ss=“bcc“,“bbcc“,“xy“,“aaaacc“,“aab- fun(ss,5);prin
33、tf(“%s,%s/n“,ss0,ss4); (分数:2.50)A.xy,aaaacc B.aaaacc,xyC.bcc,aabccD.aabcc,bcc解析:解析 在 maln 函数中,定义了一个指向字符串的指针数组,并赋初值,然后调用 fun 函数,其功能是比较数组中元素的长度,按长度从小到大排序,所以执行 fun(ss,5)函数后*ss=“xy“,“bcc“,“bbcc“,“aaaacc“,所以调用 prtntf 函数输出 ss0,ss4的值分别为 xy,aaaace。2.不能作为重载函数的调用的依据是(分数:2.00)A.参数个数B.参数类型C.函数类型D.函数名称 解析:解析 所谓重
34、载函数是指同一个函数名可以对应多个函数的实现,编译器会根据参数个数、参数类型和函数返回值类型不同而自动调用相应的函数。3.对于常成员函数,下面描述正确的是_。(分数:2.50)A.常成员函数只能修改常数据成员B.常成员函数只能修改一般数据成员C.常成员函数不能修改任何数据成员 D.常成员函数只能通过常对象调用解析:4.下列程序的运行结果为_。 #includeiostream.h templateclass TT class FF TT a1,a2,a3; public: FF(TT b1,TT b2,TT b3)a1=b1;a2=b2;a3=b3; TT Sum()return a1+a2+
35、a3; void main() FFintx(int(1.1),2,3),y(int(4.2),5,6);coutx.Sum()“y.Sum()endl;)(分数:1.00)A.6.1 15.2B.6 15 C.6 15.2D.6.1 15解析:解析 本题考查模板函数的应用,表达式 int(1.1)和 int(4.2)用于将 1.1 和 4.2 强制转换为整型。5.在一个函数体中,定义一个变量的默认存储类型是_。(分数:1.00)A.externB.registerC.auto D.static解析:解析 extern 用来说明定义的变量具有外部链接,这样的变量可以在外部文件中引用,选项 A
36、错误;使用 register 说明符定义的变量属于寄存器变量,选项 B 错误;static 用来声明一个静态变量,该种类型的变量具有静态存储时期,程序运行过程中只初始化一次,选项 D 错误;C+中默认情况下,在代码块或函数中定义的任意变量都属于自动存储类,相当于显式的使用关键字 auto 声明定义变量;选项 C正确。答案为 C 选项。6.有如下函数模板定义: templatetypename T1,typename T2 T1 FUN(T2 n)return n*5,0; 若要求以 int 型数据 9 作为函数实参调用该模板,并返回一个 double 型数据,则该调用应表示为_。(分数:2.5
37、0)A.FUN(9)B.FUN9C.FUNdouble(9) D.FUN9(double)解析:解析 函数返回类型是 double 型,则 T1 为 double 型,T2 为 int 型才符合函数模板的定义。7.以下关键字不能用来声明类的访问权限的是_。(分数:1.00)A.publicB.static C.protectedD.private解析:解析 类的成员访问权限有 3 种:public(公用)、protected(保护)、private(私有)。8.已知函数 f 的原型是 void f(int*a,longlong v2; 下列调用语句中正确的是_。(分数:1.00)A.f(v1,
38、B.f(v1,v2);C.f(D.f( 解析:解析 函数参数的 3 种传递方式:将变量名作为形参和实参,即传值方式;传递变量指针;引用形参。本题中函数 f 的第一个形参为指针,那么调用 f 函数时,第一个参数必须是地址,所以必须是 class Base public: void output() cout1; virtual void Print() cout“B“; ; class Derived:public Base public: void output() cout2; void Print() cout“D“; ; int main() Base *ptr=new Derived;
39、 ptr-output(); ptr-Print(); delete ptr; return(); 程序的输出结果是(分数:2.00)A.1BB.1D C.2BD.2D解析:11.软件生命周期是指 _ 。(分数:1.00)A.软件产品从提出、实现、使用维护到停止使用退役的过程 B.软件产品从提出、实现到使用维护的过程C.软件产品从提出到实现的过程D.软件产品从提出、实现到使用的过程解析:解析 软件生命周期是一个重要概念,考生应很好掌握。它是指软件产品从提出、实现、使用维护到停止使用退役的整个过程。一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。12.语句 ofstrea
40、m f(“SALARY.DAT“,ios_base:app);的功能是建立流对象 f,并试图打开文件SALARY.DAT 与 f 关联,而且_。(分数:2.00)A.若文件存在,将其置为空文件;若文件不存在,打开失败B.若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件 C.若文件存在,将文件指针定位于文件首;若文件不存在,打开失败D.若文件存在,打开失败;若文件不存在,建立一个新文件解析:解析 此题考查的是文件打开模式。文件打开模式 iso_base:app 是为添加数据而打开(总是在尾部写),故只有选项 B 说法正确。13.有下列程序: #include stdio.h vo
41、id main() int i=5; do if(i%3=1) if(i%5=2) printf(“*%d“,i);break; i+; while(i! =0); printf(“/n“); 程序的运行结果是_。(分数:2.50)A.*7 B.*3*5C.*5D.*2*6解析:解析 本题考查 do.while 循环,先执行循环体,再判断条件是否成立,函数实现的功能是找出满足一个数,它除 3 时余 1,除 5 时余 2,然后打印“*”和这个数从 5 开始,等于 7 时恰好符合条件,输出,最后循环结束。14.在数据库系统的组织结构中,下列_映射把用户数据库与概念数据库联系了起来。(分数:2.50
42、)A.外模式/模式 B.内模式/外模式C.模式/内模式D.内模式/模式解析:解析 数据库有两层映像,即外模式/模式和模式/内模式映像。模式/内模式映像定义数据库全局逻辑结构与存储结构之间的对应关系。15.有如下程序段: int i=1;int j=4; int main() int j=i,i=8; Coutijendl; 运行时的输出结果是_。(分数:2.00)A.14B.81 C.88D.18解析:16.下列程序段中包含 4 个函数,其中具有隐含 this 指针的是 _ 。 int funl(); class Test public: int fun2(); friend int fun3
43、(); static int fun4(); ;(分数:2.00)A.fun1B.fun2 C.fun3D.fun4解析:解析 this 指针是成员函数所属对象的指针,是指向类对象的地址,是一个隐含的指针,隐含于每个类的非静态成员函数中。tun1()是外部函数,tun3()是友元函数,fun4()是静态成员函数,故选 B。17.结构化分析方法是面向 _ 的自顶向下、逐步求精进行需求分析的方法。(分数:2.00)A.对象B.数据结构C.数据流 D.目标解析:解析 结构化分析方法是面向数据流进行需求分析的方法,采用自顶向下、逐步求精,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻
44、辑模型。18.将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是_。(分数:2.00)A.不合法的运算符B.一元运算符 C.无操作数的运算符D.二元运算符解析:解析 对于一元或二元运算符函数作为成员函数重载时,第一操作数就是对象本身,并不显式地出现在参数表中。即第一操作数仅以 this 指针的形式隐含存在于参数表中。因此,对于一元运算符参数表是空的;对于二元运算符参数表中只有一个参数,它代表第二操作数。19.下列有关继承和派生的叙述中,正确的是_。(分数:3.00)A.如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员B.派生类的成员函数可以访问基类的所有成员C.基
45、类对象可以赋值给派生类对象D.如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类 解析:解析 此题考查的是继承和派生。无论是哪种继承方式,派生类都能够访问基类的公有和保护成员,而不能访问基类的私有成员,故选项 A 和 B 错误;公有继承时,基类的对象不可作为派生类的对象处理,即基类对象不可赋值给派生类对象,所以选项 C 错误。20.已知函数 FA 调用 FB,若要把这两个函数定义在同一个文件中,则_。(分数:2.00)A.FA 必须定义在 FB 之前B.FB 必须定义在 FA 之前C.若 FA 定义在 FB 之后,则 FA 的原型必须出现在 FB 的定义之前D.若 FB 定义在 FA 之后,则 FB 的原型必须出现在 FA 的定义之前 解析:解析 在 C+中,在调用任何函数之前,必须确保它已有原型说明。函数原型说明通常放在程序文件的头部,以使得该文件中所有函数都能调用它们。在本题中,当函数 FA 调用 FB 时,函数 FB 可以定义在 FA 的后面,但是 FB 的原型