1、全国计算机等级考试二级 C+真题 2007年 9月及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.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.下列叙述中正确的是(分数:2.00)A.数据的逻辑结构与存储结构必定是一一对应的B.由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构C.程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构D.以上三种说法都不对7.冒泡排序在最坏情况下的比较次数是(分数:2.00)A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/28.一棵
3、二叉树中共有 70个叶子结点与 80个度为 1的结点,则该二叉树中的总结点数为(分数:2.00)A.219B.221C.229D.2319.下列叙述中正确的是(分数:2.00)A.数据库系统是一个独立的系统,不需要操作系统的支持B.数据库技术的根本目标是要解决数据的共享问题C.数据库管理系统就是数据库系统D.以上三种说法都不对10.下列叙述中正确的是(分数:2.00)A.为了建立一个关系,首先要构造数据的逻辑关系B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项C.一个关系的属性名表称为关系模式D.一个关系可以包括多个二维表11.在函数中,可以用 auto、extern、regist
4、er 和 static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是(分数:2.00)A.autoB.externC.registerD.static12.对于一个类定义,下列叙述中错误的是(分数:2.00)A.如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数。B.如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数。C.如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数。D.如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数。13.如果派生类以 protected方式继承基类,则原基类的 protected成
5、员和 public成员在派生类中的访问属性分别是(分数:2.00)A.public和 publicB.public和 protectedC.protected和 publicD.protected和 protected14.下列运算符函数中肯定不属于类 FunNumber的成员函数的是(分数:2.00)A.int operator-(FunNumbe;B.FunNumber operator-();C.FunNumber operator-(in;D.int operator-(FunNumber,FunNumbe;15.C+中的模板包括(分数:2.00)A.对象模板和函数模板B.对象模板和类
6、模板C.函数模板和类模板D.变量模板和对象模板16.如果利用 C+流进行输入输出,下面的叙述中正确的是(分数:2.00)A.只能借助于流对象进行输入输出。B.只能进行格式化输入输出。C.只能借助于 cin和 cout进行输入输出。D.只能使用运算符和进行输入输出。17.下列符号中不属于 C+关键字的是(分数:2.00)A.friendB.namespaceC.continueD.byte18.下列各组类型声明符中,含义相同的一组是(分数:2.00)A.unsigned long int和 longB.signed short int和 shortC.unsigned short和 shortD
7、.short int和 int19.必须用一对大括号括起来的程序段是(分数:2.00)A.switch语句中的 case标号语句。B.if语句的分支。C.循环语句的循环体。D.函数的函数体。20.语句 int*p= class MyClass public: MyClass() +count; MyClass() -count; static int getCount() return count; private: static int count; ; int MyClass:count=0; int main() MyClass obj; coutobj.getCount(); MyCl
8、ass *ptr=new MyClass; coutMyClass:getCount(); delete ptr; coutMyClass:getCount(); return 0; 程序的输出结果是(分数:2.00)A.121B.232C.221D.12228.有如下程序: #include iostream using namespace std; class MyClass public: MyClass(int x):val(x) void Print() const cout“const:val=“val/t; void Print() cout“val=“val/t; privat
9、e: int val; ; int main() const MyClass obj1 (10); MyClass obj2(20); obj1.Print(); obj2,Print(); return 0; 程序的输出结果是(分数:2.00)A.val=10 const:val=20B.const:val=10 const:val=20C.const:val=10 val=20D.val=10 val=2029.有如下程序: #include iostream using namespace std; class Part public: Part(int x=0):val(x) cout
10、val; Part() coutval; private: int val; ; class Whole public: Whole(int x, int y, int z=0):p2(x),p1 (y),val(z) coutval; whole() coutval; private: Part p1,p2; int val; ; int main() Whole obj (1,2,3); return 0; 程序的输出结果是(分数:2.00)A.123321B.213312C.213D.12312330.有如下程序: #include iostream using namespace st
11、d; class Base public: Base(int x=0) coutx; class Derived: public Base public: Derived(int x=0) coutx; private: Base val; ; int main() Derived d(1); return 0; 程序的输出结果是(分数:2.00)A.0B.1C.01D.00131.若有如下类定义: class B void fun1() protected: double var1; public: void fun2() , class D: public B protected: voi
12、d fun3() ;已知 obj是类 D的对象,下列语句中不违反类成员访问控制权限的是(分数:2.00)A.obfun1();B.obvarl;C.obfun2();D.obfun3();32.有如下程序: #include iostream using namespace std; class Base public: void output() cout1; virtual void Print() coutB; ; class Derived: public Base public: void output() cout2; void Print() coutD; ; int main(
13、) Base *ptr=new Derived; ptr-output(); ptr-Print(); delete ptr; return (); 程序的输出结果是(分数:2.00)A.1BB.1DC.2BD.2D33.下列是重载乘法运算符的函数原型声明,其中错误的是(分数:2.00)A.MyClass operator * (double, doubl;B.MyClass operator * (double, MyClas;C.MyClass operator * (MyClass, doubl;D.MyClass operator * (MyClass, MyClas;34.如下函数的
14、作用是以双倍行距输出文件: void double_space(ifstream while (_) _; if (c = /n)t.put(c); 画线处缺失的部分是(分数:2.00)A.get(与 put(B.put(与 get(C.get(与 put(D.put(与 get(35.有如下程序: #include iostream using namespace std; class B public: virtual void show() cout“B“; ; class D: public B public: void show() cout“D“; ; void fun1(B *p
15、tr) ptr-show(); void fun2(B void fun3(B b) b.show(); int main() B b,*p=new D; D d; fun1(p); fun2(b); fun3(d); return 0; 程序的输出结果是(分数:2.00)A.BBBB.BBDC.DBBD.DBD二、B填空题/B(总题数:15,分数:30.00)36.软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要的是U 【1】 /U。(分数:2.00)填空项 1:_37.在两种基本测试方法中,U 【2】 /U测试的原则之一是保证所测模块中每一个独立路径至
16、少要执行一次。(分数:2.00)填空项 1:_38.线性表的存储结构主要分为顺序存储结构和链式存储结构。队列是一种特殊的线性表,循环队列是队列的U 【3】 /U存储结构。(分数:2.00)填空项 1:_39.对下列二叉树进行中序遍历的结果为U 【4】 /U。 (分数:2.00)填空项 1:_40.在 E-R图中,矩形表示U 【5】 /U。(分数:2.00)填空项 1:_41.若有定义语句:int a=3,b=2,c=1;,则表达式 ab?a:b 的值是U 【6】 /U。(分数:2.00)填空项 1:_42.执行下列语句后,变量 sum的值是U 【7】 /U。 int sum=0; for(in
17、t i=1;i=3;i+) for(int j=1;j=i;j+) sum+;(分数:2.00)填空项 1:_43.已知有函数 f的定义如下: int f() static int s=0; s+=2; return s; 则在某程序中第 2次执行函数调用语句 f();时,函数 f的返回值是U 【8】 /U。(分数:2.00)填空项 1:_44.已知如下程序的输出结果是 23,请将画线处缺失的部分补充完整。 #include iostream using namespace std; class MyClass public: void Print() const cout 23; ; int
18、 main() MyClass* p = new MyClass(); U 【9】 /U.Print(); return 0; (分数:2.00)填空项 1:_45.有如下程序: #include iostream using namespace std; class A public: A() cout “A“; A() cout “A“; ; class B A a; public: B() cout “B“; B() cout “B“; ; int main() B b; return 0; 程序的输出结果是U 【10】 /U。(分数:2.00)填空项 1:_46.请在如下程序中的空格处
19、填写正确的语句: #include iostream using namespace std; class Base public: void fun() cout“Base fun“endl; ; class Derived: public Base public: void fun() U 【11】 /U; /调用基类的函数 fun() cout“Derived fun “endl; ;(分数:2.00)填空项 1:_47.已知类 sample是一个抽象类,其成员函数 display是无形参、无返回类型的纯虚函数,请完成其声明:class sample public: sample() ;
20、 U 【12】 /U ;(分数:2.00)填空项 1:_48.有如下复数类的声明,请补充完整。 class complex double real; /实部 double imag; /虚部 public: complex(double x,double y) real=x; imag=y; complex operator +(complex c) /重载加法运算符“+“ return complex(U 【13】 /U); ;(分数:2.00)填空项 1:_49.请将如下程序补充完整,使得输出结果为:bbaa #include iostream using namespace std; c
21、lass A public: U 【14】 /Ucout “aa“; ; class B: public A public: B() cout “bb“; ; int main () B *p= new B; delete p; return 0; (分数:2.00)填空项 1:_50.请将下列栈类 Stack补充完整 class Stack private: int pList100; /int 数组,用于存放栈的元素 int top; /栈顶元素(数组下标) public: Stack():top(0) void Push(const int class MyClass public: M
22、yClass() +count; MyClass() -count; static int getCount() return count; private: static int count; ; int MyClass:count=0; int main() MyClass obj; coutobj.getCount(); MyClass *ptr=new MyClass; coutMyClass:getCount(); delete ptr; coutMyClass:getCount(); return 0; 程序的输出结果是(分数:2.00)A.121 B.232C.221D.122解
23、析:解析 本题考查的知识点是:静态成员。对于类中的非静态数据成员,每一个类对象都拥有一个拷贝(副本),即每个对象的同名数据成员可以分别存储不同的数值,这是保证每个对象拥有区别于其他对象的特征的需要。而类中的静态成员则是解决同一个类的不同对象之间的数据和函数共享问题的。静态成员的特性是不管这个类创建了多少个对象,它的静态成员都只有一个拷贝(副本),这个副本被所有属于这个类的对象共享。这种共享与全局变量或全局函数相比,既没有破坏数据隐藏的原则,又保证了安全性。题目中,首先定义了一个 obj对象,其构造函数使 MyClass的静态数据成员 count增 1,所以第一条输出语句输出的结果是 1。然后通
24、过指针动态创建了一个 MyClass类的对象,构造函数再次被调用,count 变为 2,所以第 2次输出结果是 2。接下来是用 delete删除了刚才动态创建的 MyClass对象,析构函数被调用,count 减 1变为 1,第 3次输出 1。故本题的输出为 121,选项 A正确。28.有如下程序: #include iostream using namespace std; class MyClass public: MyClass(int x):val(x) void Print() const cout“const:val=“val/t; void Print() cout“val=“v
25、al/t; private: int val; ; int main() const MyClass obj1 (10); MyClass obj2(20); obj1.Print(); obj2,Print(); return 0; 程序的输出结果是(分数:2.00)A.val=10 const:val=20B.const:val=10 const:val=20C.const:val=10 val=20 D.val=10 val=20解析:解析 本题考查的知识点是:常成员函数的重载。使用 const关键字说明的成员函数称为常成员函数。const 关键字可以用于参与对重载函数的区分。重载的原则
26、是:常对象调用常成员函数,一般对象调用一般成员函数。题目中的 Print()就是通过 const重载的两个成员函数,主函数中声明的 obj1是常对象,而 obj2是一般对象。故输出结果为 const:val=10 val=20,应该选择 C。29.有如下程序: #include iostream using namespace std; class Part public: Part(int x=0):val(x) coutval; Part() coutval; private: int val; ; class Whole public: Whole(int x, int y, int z
27、=0):p2(x),p1 (y),val(z) coutval; whole() coutval; private: Part p1,p2; int val; ; int main() Whole obj (1,2,3); return 0; 程序的输出结果是(分数:2.00)A.123321B.213312 C.213D.123123解析:解析 本题考查的知识点是:类的构造与析构。建立一个类的对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右); 执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序(自上而下:(如果一行声明了多个
28、对象,则还要遵循自左向右) 执行自身的构造函数。 析构顺序与之相反。本题的 Whole类没有基类,但有两个 Part类的成员 p1和 p2。根据它们定义的顺序,应该先构造 p1再构造 p2,而不是按 Whole的构造函数中初始化列表的顺序那样构造。所以,第 1个被构造的是 p1(y),输出一个 2;第 2个被构造的是 p2(x),输出一个 1;最后调用自身构造函数,输出 val的值 3。析构函数严格与之相反。故输出结果为 213312,本题应该选择 B。30.有如下程序: #include iostream using namespace std; class Base public: Bas
29、e(int x=0) coutx; class Derived: public Base public: Derived(int x=0) coutx; private: Base val; ; int main() Derived d(1); return 0; 程序的输出结果是(分数:2.00)A.0B.1C.01D.001 解析:解析 本题考查的知识点是:类的构造。建立一个类的对象时,构造函数的执行顺序如下: 执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右); 执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序(自上而下):(如果一行声明了多个对象,则
30、还要遵循自左向右) 执行自身的构造函数。 本题 Derived类继承于 Base类,所以首先会构造基类 Base,但Derived类的构造函数没有初始化列表,所以将调用 Base类的默认构造函数,输出一个 0。接下来由于它的成员中还定义了一个 Base类的对象,而构造函数也没有显示初始化这个对象,所以再次调用 Base类的默认构造函数输出一个 0。最后构造自身,因为主函数中传入了构造参数 1,所以构造自身时输出了一个1。故最终输出结果为 001,应该选择 D。31.若有如下类定义: class B void fun1() protected: double var1; public: void
31、 fun2() , class D: public B protected: void fun3() ;已知 obj是类 D的对象,下列语句中不违反类成员访问控制权限的是(分数:2.00)A.obfun1();B.obvarl;C.obfun2(); D.obfun3();解析:解析 本题考查的知识点是:基类成员在派生类中的访问属性。基类中公有成员和保护成员在派生类中的访问属性将随着继承方式而改变:派生类从基类公有继承时,基类的公有成员和保护成员在派生类中仍然是公有成员和保护成员:派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都改变为私有成员;派生类从基类保护继承时,基类的公有成员
32、在派生类中改变为保护成员,基类的保护成员在派生类中仍为保护成员。本题中,D 类从 B类公有继承,B 类中 fun1()为私有、fun2()为公有、varl 为保护,公有继承到 D类后 fun1()不可访问、fun2()仍为公有、varl 仍为保护。D 类自身的 fun3()是保护属性。所以综上所述,只有从 B类继承的 fun2()为公有属性,故本题应该选择 C。32.有如下程序: #include iostream using namespace std; class Base public: void output() cout1; virtual void Print() coutB; ;
33、 class Derived: public Base public: void output() cout2; void Print() coutD; ; int main() Base *ptr=new Derived; ptr-output(); ptr-Print(); delete ptr; return (); 程序的输出结果是(分数:2.00)A.1BB.1D C.2BD.2D解析:解析 本题考查的知识点是:虚函数与多态性。在成员函数声明的前面加上 virtual修饰,即把该函数声明为虚函数。在 C+中,一个基类指针(或引用)可以用于指向它的派生类对象,而且通过这样的指针(或引用
34、)调用虚函数时,被调用的是该指针(或引用)实际所指向的对象类的那个重定义版本。本题中,就是通过基类 Base的指针 ptr指向 new出来的派生类 Derived对象,从基类的定义中可以看出,output()函数是普通成员函数,而 Print()函数是虚函数。所以,通过 ptr指针调用的 output()是基类中的 output(),而通过它调用的 Print()则是派生类中的 Print()。故本题的输出结果是 1D,应该选择 B。33.下列是重载乘法运算符的函数原型声明,其中错误的是(分数:2.00)A.MyClass operator * (double, doubl; B.MyClas
35、s operator * (double, MyClas;C.MyClass operator * (MyClass, doubl;D.MyClass operator * (MyClass, MyClas;解析:解析 本题考查的知识点是:运算符重载。C+把重载的运算符视为特殊的函数,称为运算符函数。运算符重载就是函数重载的一种特殊情况。像对待一般重载函数一样,编译系统能够依据使用运算符的不同环境,即参数(操作数)的数量或类型的差异,区分同一运算符的不同含义。本题中的选项 A重载运算符“*”使用的形参是两个 double,而系统中的“*”运算原本就能计算两个 double,所以这违反了重载函数
36、的原则,当执行 a*b(a、b 的类型均为 double)这样的表达式时,系统不知道该执行默认的“乘法”还是用户自定义的运算符重载函数。故答案为选项 A。34.如下函数的作用是以双倍行距输出文件: void double_space(ifstream while (_) _; if (c = /n)t.put(c); 画线处缺失的部分是(分数:2.00)A.get(与 put( B.put(与 get(C.get(与 put(D.put(与 get(解析:解析 本题考查的知识点是:文件流。get()函数的作用是读入一个字符,所以调用它的应该是输入文件流 ifstream对象 f;put()函数
37、的作用是输出一个字符,所以调用它的应该是输出文件流 ofstream对象 t。故选项 B和 C可以排除。读入和输出的动作应该是有顺序的,首先读入然后才能输出。所以前一空应该填 f.get(c),后一空填 t.put(c)。故本题应该选择 A。35.有如下程序: #include iostream using namespace std; class B public: virtual void show() cout“B“; ; class D: public B public: void show() cout“D“; ; void fun1(B *ptr) ptr-show(); void
38、 fun2(B void fun3(B b) b.show(); int main() B b,*p=new D; D d; fun1(p); fun2(b); fun3(d); return 0; 程序的输出结果是(分数:2.00)A.BBBB.BBDC.DBB D.DBD解析:解析 本题考查的知识点是:虚函数与多态性。在成员函数声明的前面加上 virtual修饰,即把该函数声明为虚函数。在 C+中,一个基类指针(或引用)可以用于指向它的派生类对象,而且通过这样的指针(或引用)调用虚函数时,被调用的是该指针(或引用)实际所指向的对象类的那个重定义版本。题目中,fun1()和 fun2()的形
39、参分别是基类的指针和引用,如果传入的实参是指向派生类对象的指针或派生类对象,则函数中调用的 show()为派生类中的 show(),否则为基类中的 show()。给 fun1()传入的实参是指向派生类对象的指针 p,而给 fun2()传入的实参是基类对象。所以 fun1()调用派生类 D中的 show()输出一个D字符,fun2()调用基类 B中的 show()输出一个B字符。fun3()由于形参为基类对象,所以无论传入的是基类对象还是派生类对象,函数中调用的 show()始终为基类的版本,输出一个B字符。故最终输出结果为 DBB,应该选择 C。二、B填空题/B(总题数:15,分数:30.00
40、)36.软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要的是U 【1】 /U。(分数:2.00)填空项 1:_ (正确答案:正确性)解析:解析 本题考查软件工程中需求规格说明书的评审。衡量需求规格说明书好坏的标准按重要性次序排列为:正确性、无歧义性、完全性、可验证性、一致性、可理解性、可修改性和可追踪性。因此,划线处应填入“正确性”。37.在两种基本测试方法中,U 【2】 /U测试的原则之一是保证所测模块中每一个独立路径至少要执行一次。(分数:2.00)填空项 1:_ (正确答案:白盒或白箱或白盒子或 White Box)解析:解析 本题考查软件工程的测试
41、。测试一般有两种方法:黑盒测试和白盒测试。黑盒测试不考虑程序的内部逻辑结构和处理过程,只着眼于程序的外部特性。用黑盒测试来发现程序中的错误,必须用所有可能的输入数据来检查程序能否都能产生正确的输出。白盒测试是在了解程序内部结构和处理过程的基础上,对程序的所有路径进行测试,检查路径是否都能按预定要求正确工作。因此,划线处应填入“白盒 (箱)”或“White Box”。38.线性表的存储结构主要分为顺序存储结构和链式存储结构。队列是一种特殊的线性表,循环队列是队列的U 【3】 /U存储结构。(分数:2.00)填空项 1:_ (正确答案:顺序)解析:解析 本题考查数据结构的队列。队列是一种特殊的线性
42、表,即限定在表的一端进行删除,在表的另一端进行插入操作的线性表。允许删除的一端叫做队头,允许插入的一端叫做队尾。线性表的存储结构主要分为顺序存储结构和链式存储结构。当队列用链式存储结构实现时,就称为链队列;当队列用顺序存储结构实现时,就称为循环表。因此,本题划线处应填入“顺序”。39.对下列二叉树进行中序遍历的结果为U 【4】 /U。 (分数:2.00)填空项 1:_ (正确答案:ACBDFEHGP)解析:解析 本题考查数据结构中二叉树的遍历。根据对二叉树根的访问先后顺序不同,分别称为前序遍历、中序遍历和后序遍历。这三种遍历都是递归定义的,即在其子树中也按照同样的规律进行遍历。下面就是中序遍历
43、方法的递归定义。 当二叉树的根不为空时,依次执行如下 3个操作: (1)按中序遍历左子树 (2)访问根结点 (3)按中序遍历右子树 根据如上前序遍历规则,来遍历本题中的二叉树。首先遍历F的左子树,同样按中序遍历。先遍历 C的左子树,即结点 A,然后访问 C,接着访问 C的右子树,同样按中序遍历 C的右子树,先访问结点 B,然后访问结点 D,因为结点 D没有右子树,因此遍历完 C的右子树,以上就遍历完根结点 F的左子树。然后访问根结点 F,接下来遍历 F的右子树,同样按中序遍历。首先访问 E的左子树,E 的左子树为空,则访问结点 E,然后访问结点 E的右子树,同样按中序遍历。首先访问 G的左子树
44、,即 H,然后访问结点 G,最后访问 G的右子树 P。以上就把整个二叉树遍历一遍,中序遍历的结果为 ACBDFEHGP。因此,划线处应填入“ACBDFEHGP”。40.在 E-R图中,矩形表示U 【5】 /U。(分数:2.00)填空项 1:_ (正确答案:实体 或 实体集 或 Entity)解析:解析 本题考查数据库的 E-R图。E-R 模型中,有三个基本的抽象概念:实体、联系和属性。E-R图是 E-R模型的图形表示法,在 E-R图中,用矩形框表示实体,菱形框表示联系,椭圆形框表示属性。因此,划线处应填入“实体”或“实体集”或“Entity”。41.若有定义语句:int a=3,b=2,c=1
45、;,则表达式 ab?a:b 的值是U 【6】 /U。(分数:2.00)填空项 1:_ (正确答案:2)解析:解析 本题考查的知识点是:条件运算符。条件运算是 C+中唯一的三目运算,与其对应的运算符?:称为条件运算符。条件运算符的使用格式为: 表达式 1?表达式 2:表达式 3 当计算有条件运算符构成的表达式时,首先计算表达式 1,若其值非 0,则计算出 表达式 2的值,并用这个值作为整个表达式的值;若表达式 1的值为 0,则计算出表达式 3的值,并用这个值作为整个表达式的值。题目中,ab 的结果为假(即 0),所以整个表达式的值为 b的值 2。42.执行下列语句后,变量 sum的值是U 【7】 /U。 int sum=0; for(int i=1;i=3;i+) for(int j=1;j=i;j+) sum+;(分数:2.00)填空项 1:_ (正确答案:6)解析:解析 本题考查的知识点是:for 循环的嵌套。题目中外循环会循环 3次,每次循环变量 i的值分别为 1、2、3。而内循环会循环 i次,故 3次执行内循环,循环的次数分别为 1、2、3 次。那么,sum总共被增 1了 6次。故最终 sum的值为 6。43.已知有函数 f的定义如下: int f() static int s=0; s+=2; return s; 则在某程序中第 2次执行函数调用语