1、国家二级(C+)机试模拟试卷 162 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.程序流程图中带有箭头的线段表示的是( )。(分数:2.00)A.图元关系B.数据流C.控制流D.调用关系2.结构化程序设计的基本原则不包括( )。(分数:2.00)A.多态性B.自顶向下C.模块化D.逐步求精3.软件设计中模块划分应遵循的准则是( )。(分数:2.00)A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合4.在软件开发中,需求分析阶段产生的主要文档是( )。(分数:2.00)A.可行性分析报告B.软件需求规格说明书C.概要设计说明
2、书D.集成测试计划5.算法的有穷性是指( )。(分数:2.00)A.算法程序的运行时间是有限的B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用6.对长度为 n 的线性表排序,在最坏情况下,比较次数不是 n(n-1)2 的排序方法是( )。(分数:2.00)A.快速排序B.冒泡排序C.直接插入排序D.堆排序7.下列关于栈的叙述正确的是( )。(分数:2.00)A.栈按“先进先出”组织数据B.栈按“先进后出”组织数据C.只能在栈底插入数据D.不能删除数据8.在数据库设计中,将 E-R 图转换成关系数据模型的过程属于( )。(分数:2.00)A.需求分析阶段B
3、.概念设计阶段C.逻辑设计阶段D.物理设计阶段9.有三个关系 R、S 和 T 如下: (分数:2.00)A.并B.自然连接C.笛卡尔积D.交10.设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份证号),课程 C(课号,课名),选课 SC(学号,课号,成绩),则表 SC 的关键字(键或码)为( )。(分数:2.00)A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩11.下列语句中,错误的是( )。(分数:2.00)A.const int buffer=256;B.const int temp;C.const double*point;D.const double*=
4、new double(55);12.有如下程序:int x=3:dox-=2:coutx;while(!(-x);执行这个程序的输出结果是( )。(分数:2.00)A.1B.3 0C.1-2D.死循环13.有如下程序:#includeiostreamusing namespace std;int main()int*p;*p=9;cout“The value at p:“*p;return0:编译运行程序将出现的情况是( )。(分数:2.00)A.编译时出现语法错误,不能生成可执行文件B.运行时一定输出:The value atp:9C.运行时一定输出:The value at p:*9D.运
5、行时有可能出错14.if 语句的语法格式可描述为:格式 1:if(条件)语句或格式 2:if(条件)语句1else语句 2关于上面的语法格式,下列表述中错误的是( )。(分数:2.00)A.条件部分可以是一个 if 语句,例如 if(if(a=0)B.语句部分可以是一个 if 语句,例如 if()if()C.如果在条件前加上逻辑非运算符!并交换语句 1和语句 2的位置,语句功能不变D.语句部分可以是一个循环语句,例如 if()while()15.下列符号中,正确的 C+标识符是( )。(分数:2.00)A.enumB.2bC.foo-9D._3216.下列关于 C+函数的说明中,正确的是( )
6、。(分数:2.00)A.内联函数就是定义在另一个函数体内部的函数B.函数体的最后一条语句必须是 return 语句C.标准 C+要求在调用一个函数之前,必须先声明其原型D.编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式17.运算符重载是对已有的运算符赋予多重含义,因此( )。(分数:2.00)A.可以对基本类型(如 int 类型)的数据,重新定义“+”运算符的含义B.可以改变一个已有运算符的优先级和操作数个数C.只能重载 C+中已经有的运算符,不能定义新运算符D.C+中已经有的所有运算符都可以重载18.下列有关内联函数的叙述中,正确的是( )。(分数:2.00)A.内联函数在调用
7、时发生控制转移B.内联函数必须通过关键字 inline 来定义C.内联函数是通过编译器来实现的D.内联函数函数体的最后一条语句必须是 return 语句19.下列运算符不能重载为友元函数的是( )。(分数:2.00)A.=()( ) -B.+ - + -C. = =D.+= -= *= =20.有如下程序:#includeiostreamusing namespace std;int main()void function(double val);double val;function(val);coutval:return0;void function(double val)val=3;编译
8、运行这个程序将出现的情况是( )。(分数:2.00)A.编译出错,无法运行B.输出:3C.输出:30D.输出一个不确定的数21.下面是重载为非成员函数的运算符的函数原型,其中错误的是( )。(分数:2.00)A.Fraction operator+(Fraction,Fraction);B.Fraction operator-(Fraction);C.Fraction& operator=(Fraction&,Fraction);D.Fraction& operator+=(Fraction&,Fraction);22.有如下类定义:clas MyClasspublic:_private:in
9、 tdata;若要为 MyClass 类重载流输入运算符“”,使得程序中可以“cinobj;”的形式改变 MyClass 类的对象 obj 中数据成员 data 的值,则横线处的声明语句应为( )。(分数:2.00)A.friend istream& operator(istream& is,MyClass& a);B.friend istream& operator(istream& is,MyClass a);C.istream& operator(istream& is,MyClass& a);D.istream& operator(istream& is,MyClass a);23.由
10、于常对象不能被更新,因此( )。(分数:2.00)A.通过常对象只能调用它的常成员函数B.通过常对象只能调用静态成员函数C.常对象的成员都是常成员D.通过常对象可以调用任何不改变对象值的成员函数24.有如下类定义:class AAint a;public:int getRef()constreturn &a;int getValue()constreturn a;void set(int n)consta=n;friend void show(AA aa)constcouta;其中四个函数的定义中正确的是( )。(分数:2.00)A.B.C.D.25.下列关于 this 指针的描述中,正确的是
11、( )。(分数:2.00)A.类的成员函数都有 this 指针B.类的友元函数都有 this 指针C.任何与类相关的函数都有 this 指针D.类的非静态成员函数都有 this 指针26.下列关于虚函数的说明中,正确的是( )。(分数:2.00)A.从虚基类继承的函数都是虚函数B.虚函数不得是静态成员函数C.只能通过指针或引用调用虚函数D.抽象类中的成员函数都是虚函数27.下列关于基类和派生类关系的叙述中,正确的是( )。(分数:2.00)A.每个类最多只能有一个直接基类B.派生类中的成员可以访问基类中的任何成员C.基类的构造函数必须在派生类的构造函数体中调用D.派生类除了继承基类的成员,还可
12、以定义新的成员28.有如下类定义:class Bpublic:void fun1()private:void fun2()protected:void fun3();class D:public Bprotected:void fun4();若 obj 是类 D 的对象,则下列语句中不违反访问控制权限的是( )。(分数:2.00)A.objfun1();B.objfun2();C.objfun3();D.objfun4();29.有如下类定义:class Foopublic:Foo(int v):value(v)Foo()private:Foo()int value=0;其中存在语法错误的行是
13、( )。(分数:2.00)A.B.C.D.30.有如下类定义:class Pointint XX,YY;public:Point():xx(0),yy(0)Point(int x,int y=0):xx(x),yy(y);若执行语句 Point a(2),b3,*c4;则 Point 类的构造函数被调用的次数是( )。(分数:2.00)A.2 次B.3 次C.4 次D.5 次31.有如下类定义:class Testpublic:Test()a=0;c=0;int f(int a)constthis-a=a;static int g()return a;void h(int b)Test:b=b
14、;private:int a;static int b;const int c;int Test:b=0:在标注号码的行中,能被正确编译的是( )。(分数:2.00)A.B.C.D.32.有如下类声明:class SAMPLEint n;public:SAMPLE(int i=0):n(i)void setValue(int n0);下列关于 getValue 成员函数的定义中,正确的是( )。(分数:2.00)A.SAMPLE:setValue(int n0)n=n0;B.void SAMPLE:setValue(int n0)n:n0;C.void setValue(int n0)n=n0
15、;D.setValue(int n0)n=n0;33.有如下程序:#includeiostreamusing namespace std;class Apublic:A()cout“A“;A()cout“A“:;class B:public AA*p;public:B()cout“B“;P=new A();B()cout“B“;delete p;int main()B obj;return0;执行这个程序的输出结果是( )。(分数:2.00)A.BAAABAB.ABABAAC.BAABAAD.ABAABA34.有如下程序:#includeiostreamusing namespace std;
16、class Baseprivate:void fun1()constcout“fun1“;protected:void fun2()constcout“fun2“;public:void fun3()constcout“fun3“;class Derived:protected Basepublic:void fun4()constcout“fun4“;int main()Derived obj;objfun1();objfun2();objfun3();objfun4();return0;其中有语法错误的语句是( )。(分数:2.00)A.B.C.D.35.有如下程序:#includeios
17、treamusing namespace std;class Base1public:Basel(int d)coutd;Basel();class Base2public:Base2(int d)coutd;Base2();class Derived:public Base1,Base2public:Derived(int a,int b,int c,int d):Base1(b),Base2(a),b1(d),b2(c)private:int b1;int b2;int main()Derived d(1,2,3,4);return0;执行这个程序的输出结果是( )。(分数:2.00)A.
18、1234B.2134C.12D.2136.有如下程序:#includeiostreamusing namespace std;class Basepublic:void fun1()cout“Basen“;virtual void fun2()cout“Basen“;class Derived:public Basepublic:void fun1()cout“Derivedn“;void fun2()cout“Derivedn“;void f(Base& b)bfun1();bfun2();int main()Derived obj;f(obj);return0;执行这个程序的输出结果是(
19、)。(分数:2.00)A.Base BaseB.Base DerivedC.Derived BaseD.Derived Derived37.模板对类型的参数化提供了很好的支持,因此( )。(分数:2.00)A.类模板的主要作用是生成抽象类B.类模板实例化时,编译器将根据给出的模板实参生成一个类C.在类模板中的数据成员都具有同样类型D.类模板中的成员函数都没有返回值38.有如下函数模板:templatetypename T,typename UT cast(U u)return u;其功能是将 U 类型数据转换为 T 类型数据。已知 i 为 int 型变量,下列对模板函数 cast 的调用中正确
20、的是( )。(分数:2.00)A.east(i);B.east(i);C.eastchar*,int(i);D.castdouble,int(i);39.要建立文件流并打开当前目录下的文件 filedat 用于输入,下列语句中错误的是( )。(分数:2.00)A.ifstream fin=ifstreamopen(“filedat“);B.ifstream*fin=new ifstream(“filedat“);C.ifstream fin;finopen(“filedat“);D.ifstream*fin=new ifstream();fin-open(“filedat“);40.当使用 i
21、fstream 流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为( )。(分数:2.00)A.ios_base:inB.ios_base:in|ios_base:outC.ios_base:outD.ios_base:in & ios_base:out二、基本操作题(总题数:1,分数:2.00)41.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj1 下的工程 proj1,此工程中包含一个源程序文件 maincpp,其中有类 Book(“书”)和主函数 main 的定义。程序中位于每个“ERROR*found*”下的语句行有错误,请加以改正。改正后程序的输出结果应该是:书
22、名:C+语句程序设计总页数:299 已把“C+语言程序设计”翻到第 50 页已把“C+语言程序设计”翻到第 51页已把“C+语言程序设计”翻到第 52 页已把“C+语言程序设计”翻到第 51 页已把书合上。当前页:0注意:只修改每个“ERROR*found*”下的那一行,不要改动程序中的其他内容。#includeiostreamusing namespace std;class Bookchar*title;int num_pages;页数 int cur_page;当前打开页面的页码,0 表示书未打开public:ERROR*found*Book(const char *theTitle,i
23、nt pages)num_pages(pages)title=new charstrlen(theTitle)+1;strcpy(title,theTitle);coutendl“书名:“title“总页数:“num_pages;Book()deletetitle;bool isClosed()constreturn cur_page=0;书合上时返回 true,否则返回 falsebool isOpen()constreturn! isClosed();书打开时返回 true,否则返回 falsemt numOfPages()constreturn num_pages;返回书的页数 int
24、currentPage()constreturn cur_page;返回打开页面的页码ERROR*found*void openAtPage(int page_no)const把书翻到指定页coutendl:if(page_no1|page_nonum_pages)cout“无法翻到第“cur_page“页。“;close();elsecur_page=page_no;cout”已把“title“”翻到第“cur_page“页“;void openAtPrevPage()openAtPage(cur_page-1);把书翻到上一页void openAtNextPage()openAtPage(
25、cur_page+1);把书翻到下一页 void close()把书合上coutendl:if(isClosed()cout“书是合上的。“;elseERROR*found*num_pages=0;cout“已把书合上。“;coutendl:;int main()Book book(“C+语言程序设计“,299);bookopenAtPage(50);bookopenAtNextPage();bookopenAtNextPage();bookopenAtPrevPage();bookclose();cout“当前页:“bookcurrentPage()endl;return0;(分数:2.00
26、)_三、简单应用题(总题数:1,分数:2.00)42.使用 VC6 打开考生文件夹 proj2 下的工程 proj2,其中有元素类 Element 和队列类 Queue 的定义。请在程序中的横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的输出结果应为:3850507 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容。#includeiostream#includecmath#includecstdlitiusing nameespace std:#define MaxLength100class Element“元素”类 public:int n;Element(int
27、 i=0):n(i);class Queue“队列”类 Element*element;指向存储元素的数组的指针 int tail;队尾元素的下标 public:Queue():element(new Element100),tail(-1)Queue()deleteelement;void push(Element ele);在队列尾端添加一个元素 Element pop();在队列首端删除一个元素,返回被删元素 Element front()constreturn element0;返回队首元素,但不从队列中删除该元素*found*int size()constreturn(_);返回元素
28、个数 void show()const;显示集合中所有元素;void Queue:push(Element ele)if(tail=MaxLength-1)return;空间满,不做任何处理*found*_;Element Queue:pop()if(size()=0)exit(1);队列空,不做任何处理 Element tmp=element0;for(int i=0;itail;i+)elementi=elementi+1;*found*_;return tmp;void Queue:show()const*found*for(_)coutelementin ;coutendl:int m
29、ain()Queue q;qpush(3);qpush(8);qpush(5);qpush(0);qshow();qpop();qpoP();qpush(7);qshow();return0;(分数:2.00)_四、综合应用题(总题数:1,分数:2.00)43.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj3 下的工程 proj3,其中包含了类 IntegerSet 和主函数 main 的定义。一个 IntegerSet 对象就是一个整数的集合,其中包含 0 个或多个无重复的整数;为了便于进行集合操作,这些整数按升序存放在成员数组 elem 的前若干单元中。成员函数 add 的作用
30、是将一个元素添加到集合中(如果集合中不存在该元素),成员函数 remove 从集合中删除指定的元素(如果集合中存在该元素)。请编写成员函数 remove。在 main 函数中给出了一组测试数据,此时程序的正确输出结果应为:2 3 4 5 27 28 31 66 752 3 4 5 6 27 28 31 66 752 3 4 5 6 19 27 28 31 66 753 4 5 6 19 27 28 31 66 753 4 5 6 19 27 28 31 66 75 要求:补充编制的内容写在“*333*”与“*666*”之间,不得修改程序的其他部分。注意:程序最后将结果输出到文件 outdat
31、中。输出函数 WriteToFile 已经编译为 obj 文件,并且在本程序中调用。IntegorSeth#ifndef INTEGERSET#define INTEGERSET#includeiostreamusing namespace std;const int MAXELEMENTS=100;集合最多可拥有的元素个数 class IntegerSetint elemMAXELEMENTS;用于存放集合元素的数组 int counter;用于记录集合中元素个数的计数器 public:IntegerSet():counter(0)创建一个空集合 IntegerSet(int data,in
32、t size);利用数组提供的数据创建一个整数集合 void add(int element);添加一个元素到集合中 void remove(int element);删除集合中指定的元素 int getCount()constreturn counter;返回集合中元素的个数 int getElement(int i)constreturn elemi;返回集合中指定的元素 void show()const;void WriteToFile(char*);#endifmaincpp#include“IntegerSeth“#includeiomanipIntegerSet:IntegerSe
33、t(int data,int size):counter(0)for(int i=0;isize;i+)add(datai);void IntegerSet:add(int element)int j;从后往前寻找第一个小于等于 element 的元素for(j=counter;j0;j-)if(element=elemj-1)break;如果找到的是等于 element 的元素,说明要添加的元素已经存在,直接返回 if(j0)if(element=elemj-1)return;如果找到的是小于 element 的元素,j 就是要添加的位置该元素及其后面的元素依次后移,腾出插入位置 for(i
34、nt k=counter;kj;k-)elemk=elemk-1;elemj=element;将 element 插入到该位置counter+;计数器加 1void IntegerSet:remove(int element)*333*666*void IntegerSet:show()constfor(int i=0;igetCount();i+)coutsetw(4)getElement(i);coutendl:int main()int d=5,28,2,4,5,3,2,75,27,66,31;IntegerSet s(d,11);sshow();sadd(6);sshow();sadd
35、(19);sshow();sremove(2);sshow();sadd(4);sshow();WriteTOFile(“ “);return0;(分数:2.00)_国家二级(C+)机试模拟试卷 162 答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.程序流程图中带有箭头的线段表示的是( )。(分数:2.00)A.图元关系B.数据流C.控制流 D.调用关系解析:解析:在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。所以选择 C。2.结构化程序设计的基本原则不包括( )。(分数:2.00)A.多态性 B.自顶
36、向下C.模块化D.逐步求精解析:解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用 goto 语句,所以选择 A。3.软件设计中模块划分应遵循的准则是( )。(分数:2.00)A.低内聚低耦合B.高内聚低耦合 C.低内聚高耦合D.高内聚高耦合解析:解析:软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。4.在软件开发中,需求分析阶段产生的主要文档是( )。(分数:2.00)A.
37、可行性分析报告B.软件需求规格说明书 C.概要设计说明书D.集成测试计划解析:解析:A 错误,可行性分析阶段产生可行性分析报告。C 错误,概要设计说明书是总体设计阶段产生的文档。D 错误,集成测试计划是在概要设计阶段编写的文档。B 正确,软件需求规格说明书是后续工作如设计、编码等需要的重要参考文档。5.算法的有穷性是指( )。(分数:2.00)A.算法程序的运行时间是有限的 B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用解析:解析:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。6.对长度为 n
38、的线性表排序,在最坏情况下,比较次数不是 n(n-1)2 的排序方法是( )。(分数:2.00)A.快速排序B.冒泡排序C.直接插入排序D.堆排序 解析:解析:除了堆排序算法的比较次数是 O(nlog2n),其他的都是 n(n-1)2。7.下列关于栈的叙述正确的是( )。(分数:2.00)A.栈按“先进先出”组织数据B.栈按“先进后出”组织数据 C.只能在栈底插入数据D.不能删除数据解析:解析:栈是按“先进后出”的原则组织数据的,数据的插入和删除都在栈顶进行操作。8.在数据库设计中,将 E-R 图转换成关系数据模型的过程属于( )。(分数:2.00)A.需求分析阶段B.概念设计阶段C.逻辑设计
39、阶段 D.物理设计阶段解析:解析:ER 图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。9.有三个关系 R、S 和 T 如下: (分数:2.00)A.并B.自然连接C.笛卡尔积D.交 解析:解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以 B 错误。笛卡尔积是用 R 集合中元素为第一元素,S 集合中元素为第二元素构成的有序对,所以 C 错误。根据关系 T 可以很明显地看出是从关系 R 与关系 S 中取得相同的关系组所以取得是交运算,选择 D。10.设有表示学生选课的三张表,学
40、生 S(学号,姓名,性别,年龄,身份证号),课程 C(课号,课名),选课 SC(学号,课号,成绩),则表 SC 的关键字(键或码)为( )。(分数:2.00)A.课号,成绩B.学号,成绩C.学号,课号 D.学号,姓名,成绩解析:解析:学号是学生表 s 的主键,课号是课程表 C 的主键,所以选课表 SC 的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择 C。11.下列语句中,错误的是( )。(分数:2.00)A.const int buffer=256;B.const int temp; C.const double*point;D.const double*=new d
41、ouble(55);解析:解析:const 是一个 C+语言的关键字,它限定一个变量不允许被改变。使用 const 在一定程度上可以提高程序的安全性和可靠性。限定符声明变量只能被读,必须初始化。B 选项中没有初始化,C 选项为指向常量的指针,定义时初始化与否均可,如果是 const*double point 形式,则为常指针,必须在定义时进行初始化,A、C、D 都正确。12.有如下程序:int x=3:dox-=2:coutx;while(!(-x);执行这个程序的输出结果是( )。(分数:2.00)A.1B.3 0C.1-2 D.死循环解析:解析:本题考查 dowhile 语句,执行 dow
42、hile 语句时,先执行循环体内的语句,然后判断while 中表达式的值,表达式为非零时,返回重新执行循环体语句。在本题中,先执行循环体内的语句,输出 1,然后判断表达式,为非零,且此时 x 为 0;再次执行循环体时,输出-2,然后判断表达式为 0,不执行,退出,所以答案为 C。13.有如下程序:#includeiostreamusing namespace std;int main()int*p;*p=9;cout“The value at p:“*p;return0:编译运行程序将出现的情况是( )。(分数:2.00)A.编译时出现语法错误,不能生成可执行文件B.运行时一定输出:The v
43、alue atp:9C.运行时一定输出:The value at p:*9D.运行时有可能出错 解析:解析:先定义指针变量,然后给指针变量赋初值有三种情况: 用取地址运算符“&”将变量地址赋给指针变量,如 p=&a; 将一个指针变量中的地址赋给另一个指针变量,如 p=p1; 给指针变量赋空值 0,如 q=0,表示该指针变量不指向任何变量。而不能用一个常量给指针变量赋初值,所以本题选D。14.if 语句的语法格式可描述为:格式 1:if(条件)语句或格式 2:if(条件)语句1else语句 2关于上面的语法格式,下列表述中错误的是( )。(分数:2.00)A.条件部分可以是一个 if 语句,例如
44、 if(if(a=0) B.语句部分可以是一个 if 语句,例如 if()if()C.如果在条件前加上逻辑非运算符!并交换语句 1和语句 2的位置,语句功能不变D.语句部分可以是一个循环语句,例如 if()while()解析:解析:本题考查 if 语句,if 语句的条件部分不能嵌套 if 语句,所以 A 选项错误;B 选项就是 if语句嵌套;C 选项其实就是将判断条件颠倒,然后执行语句也颠倒,所以效果一样;D 选项也正确。15.下列符号中,正确的 C+标识符是( )。(分数:2.00)A.enumB.2bC.foo-9D._32 解析:解析:本题考查 C+标识符的命名规则,规定如下: 所有标识
45、符可以由字母、数字和下画线组成,且必须以字母或下画线开头; C+的关键字不能作为标识符; 大、小写字母表示不同意义,即代表不同的标识符,如 mun 和 Mun。A 选项是 C+的关键字,B 选项不能以数字开头,C 选项“一”不能用于组成标识符。16.下列关于 C+函数的说明中,正确的是( )。(分数:2.00)A.内联函数就是定义在另一个函数体内部的函数B.函数体的最后一条语句必须是 return 语句C.标准 C+要求在调用一个函数之前,必须先声明其原型 D.编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式解析:解析:一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,而不是在定义在另一个函数体内,所以 A 选项错误。函数可以没有返回值,所以就不需要 return