1、二级 C+-236 及答案解析(总分:66.00,做题时间:90 分钟)一、选择题(总题数:36,分数:66.00)1.下列关于纯虚函数与抽象类的描述中,错误的是_。(分数:1.00)A.纯虚函数是一种特殊的虚函数,它没有具体的实现B.抽象类是指具有纯虚函数的类C.一个基类声明了纯虚函数,该基类的派生类一定不是抽象类D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出2.如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。有如下程序,没有使用多态机制。 #includeiostream using namespace std; class Base
2、 int a,b; public: Base(int x,int y)a=x;b=y; void show()couta“,“bendl; ; class Derived:public Base int c,d; public: Derived(int x,int y,int z,int m):Base(x,y)c=z;d=w; void show()coutc“,“dendl; ; int main() Base B1(50,50),*pb; Derived D1(10,20,30,40); pb= class Point int x,y; public: Point (int x1=0,i
3、nt y1=0):x(x1),y(y1) int get()return x+y; ; class Circle Point center; int radius; public: Circle(int cx,int cy,int r):center(cx,cy),radius(r) int get()return center.get()+radius; ; int main() Circle c(3,4,5); coutc.get()endl; return 0; 运行时的输出结果是_。(分数:2.50)A.5B.7C.9D.124.若目前 D 盘根目录下并不存在 test.txt 文件,
4、则下列打开文件方式不会自动创建 test.txt 文件的是_。(分数:2.50)A.ifstream fin; fin.open(“d:/test.txt“,los_base:in);B.fstream fio; fio.open(“d:/test.txt“,los_base:out);C.ofstream four; fout.open(“d:/test.txt“,ios_base:out);D.ofstream fout; four.open(“d:/test.txt“,los_base:app);5.若要对 Data 类中重载的加法运算符成员函数进行声明,下列选项中正确的是_。(分数:2
5、.50)A.Data+(Data);B.Data operator+(Data);C.Data+operator(Data);D.opcrator+(Data, Data);6.语句序列“char*p=“teacher“; p+=2; coutp+2“/t“*(p+2);”的输出结果是_。(分数:2.00)A.acher aB.cher cC.her hD.h her7.有如下程序: #includeiostream using namespace std; class Base public: Base()cout“B“; Base()cout“b“; ; class Derived:pub
6、lic Base public: Derived()cout“D“; Derived()cout“d“; ; int main() Derived obj; return 0; 运行这个程序的输出是_。(分数:2.50)A.BDbdB.BDdbC.DBbdD.DBdb8.有如下程序: #includeiostream using namespace std; class Base int x; public: Base(int n=0): x(n) coutn; int getX()const return x; ; class Derived: public Base int y; publ
7、ic: Derived(int m, int n): y(m), Base(n) coutm; Derived(int m): y(m) coutm; ; int main() Derived d1(3), d2(5, 7); return 0; 执行这个程序的输出结果是_。(分数:1.00)A.375B.357C.0375D.03579.计算斐波那契数列第 n 项的函数定义如下: int fib(int n) if (n=0)return 1; else if(n=1) return 2; else return fib(n=1)+fib(n=2); 若执行函数调用表达式 fib(2),函数
8、 fib 被调用的次数是 _ 。(分数:2.00)A.1B.2C.3D.410.有如下程序: #include iostream using namespace std; class BASE public: BASE()cout“BASE“; ; class DERIVED: public BASE public: DERIVED() cout“DERIVED“; int main() DERIVED x; return 0; 执行后的输出结果是 _ 。(分数:2.00)A.BASEB.DERIVEDC.BASEDERIVEDD.DERIVEDBASE11.有如下程序: #includeio
9、stream #includestring using namespace std; class MyString public: char str80; MyString(const char*s)strepy(str s); MyString return*this; ; ostream int main() MyString x(“abc“), y(“cde“); cout(x+=y)endl; return 0; 运行这个程序的输出结果是_。(分数:2.50)A.abcB.cdeC.abcdeD.abccde12.下列关于模板的说法正确的是_。(分数:1.00)A.模板的实参在任何时候
10、都可以省略B.类模板与模板类所指的是同一概念C.类模板的参数必须是虚拟类型的D.类模板中的成员函数全部都是模板函数13.下列语句分别是不同程序中的第一个输入/输出语句,若去掉其中的“left”,输出效果将发生变化的是_。(分数:2.50)A.coutleftsetfill(“*“)357;B.coutleftsetw(5)357;C.coutleftsetw(5)“ABCDE“;D.coutleft“ABCDE“;14.以下程序的输出结果是 _ 。 min() int i=0,a=0; while(i20) for(;) if(i%10)=0)break; else i-; i+=11;a+=
11、i; coutaendl; (分数:2.00)A.21B.32C.33D.1115.下列函数模板的定义中,合法的是_。(分数:1.00)A.template typename T T abs(T x) return x0? -x:x;B.template class T T abs(T x) return x0? -x:x;C.template T class T abs(T x)return x0? -x:x;D.template T abs(T x)return x0? -x:x;16.下列关于 C+函数的说明中,正确的是_。(分数:1.00)A.内联函数就是定义在另一个函数体内部的函数B
12、.函数体的最后一条语句必须是 return 语句C.标准 C+要求在调用一个函数之前,必须先声明其原型D.编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式17.下列数据结构中,能够按照“先进后出”原则存取数据的是_。(分数:1.00)A.循环队列B栈C.队列D.二叉树18.下列有关构造函数的描述错误的是 _ 。(分数:2.00)A.构造函数在说明类变量时自动执行B.构造函数可以重载C.构造函数可以设置默认参数D.构造函数可以对静态数据成员进行初始化19.下列关于运算符重载的叙述中,错误的是_。(分数:1.00)A.有的运算符可以作为非成员函数重载B.所有的运算符都可以通过重载而被赋
13、予新的含义C.不得为重载的运算符函数的参数设置默认值D.有的运算符只能作为成员函数重载20.将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是 _ 。(分数:2.00)A.不合法的运算符B.一元运算符C.无操作数的运算符D.二元运算符21.下列关于运算符重载的叙述中,正确的是_。(分数:2.50)A.通过运算符重载机制可以为 C+语言扩充新的运算符B.运算符重载的作用是使已有的运算符作用于类的对象C.重载运算符的操作数类型可以全部为基本类型D.所有运算符都可以重载22.要利用 C+流实现输入输出的各种格式控制,必须在程序中包含的头文件是_。(分数:2.00)A.fstreamB.i
14、streamC.cstdlibD.iomanip23.下面程序的输出结果是 _ 。 #includeiostream #includestring using namespace std; void main() charp110,p210; strcpy(p1,“abc“); strcpy(p2,“ABC“); charstr50=“xyz“; strcpy(str+2,strcat(p1,p2); coutstr; (分数:2.00)A.xyabcABCB.yzabcABCC.xyzabcABCD.zabcABC24.有如下程序: #includeiostream using namesp
15、ace std; class Point public: static int number; public: Point() number+; Point() number -; ; int Point:number=0; int main() Point *ptr; Point A, B; Point *ptr_point=new Point3; ptr=ptr_point; Point C; coutPoint:numberendl; deleteptr; return 0; 执行这个程序的输出结果是_。(分数:1.00)A.3B.4C.6D.725.若要向一个文件的末尾添加数据,则需使
16、用的打开方式是(分数:2.50)A.ios_base:inB.ios_base:outC.ios_base:appD.ios_base:trunc26.在下列程序的横线处填上适当的内容,使程序执行后的输出结果为 ABCD_。 #includeiostream using namespace std; class A public:A()cout“A“; ; class B:_ public:B()cout“B“; ; classC: virtua1 pubtic A public:C()cout“C“; ; class D:public B,public D public:D()cout“D“
17、; ; void main() D obj;(分数:1.00)A.public AB.private AC.protected AD.virtual public A27.有以下程序: #includeiostream. h void fun(int a, int b, int c) a=456, b=567, c=678; void main() int x=10, y=20, z=30; fun(x, y, z); coutx“,“y“,“zendl; 输出结果是_。(分数:1.00)A.30,20,10B.10,20,30C.456,567,678D.678,567,45628.下面关于
18、运算符重载的描述错误的是_。(分数:2.50)A.运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构B.不是所有的运算符都可以进行重载C.运算符函数的调用必须使用关键字 operatorD.在 C+语言中不可通过运算符重载创造出新的运算符29.通常的拷贝初始化构造函数的参数是 _ 。(分数:1.00)A.某个对象名B.某个对象的成员名C.某个对象的引用名D.某个对象的指针名30.在软件开发中,需求分析阶段可以使用的工具是_。(分数:2.50)A.N-S 图B.DFD 图C.PAD 图D.程序流程图31.对于 switch(c) 中的变量 c 不能定义为的类型是 _
19、 。(分数:1.00)A.unsignedB.intC.charD.float32.下列关于 C+流的描述中,错误的是 _ ,(分数:2.50)A.cout“A“表达式中输出字符 AB.eof 函数可以检测是否到达文件尾C.对磁盘文件进行流操作时,必须包含头文件 fstreamD.以 ios_base:out 模式打开的文件不存在时,将自动建立一个新文件33.数据库管理系统是_。(分数:2.50)A.操作系统的一部分B.系统软件C.一种编译系统D.一种通信软件系统34.有下列程序: #include stdio.h void f(int*p,int*q); void main() int m=
20、1,n=2,*r=m; f(r,n);printf(“%d,%d“,m,n); void f(int*p,int*q) p=p+1;*q=*q+1;) 程序运行后的输出结果是_。(分数:2.50)A.1,3B.2,3C.1,4D.1,235.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是_。(分数:1.00)A.12345ABCDEB.EDCBA54321C.ABCDE12345D.54321EDCBA36.下列关于文件流的描述中,正确的是_。(分数:2.50)A.文件流只能完成针对磁盘文件的输入/输出B.建立一个文件流对象
21、时,必须同时打开一个文件C.若输入流要打开的文件不存在,将建立一个新文件D.若输出流要打开的文件不存在,将建立一个新文件二级 C+-236 答案解析(总分:66.00,做题时间:90 分钟)一、选择题(总题数:36,分数:66.00)1.下列关于纯虚函数与抽象类的描述中,错误的是_。(分数:1.00)A.纯虚函数是一种特殊的虚函数,它没有具体的实现B.抽象类是指具有纯虚函数的类C.一个基类声明了纯虚函数,该基类的派生类一定不是抽象类 D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出解析:解析 纯虚函数是在声明虚函数时被“初始化”为 0 的虚函数。不定义对象而只作为一种基本类型作为继承
22、的类,称为抽象类。凡是包含纯虚函数的类都是抽象类。抽象类的作用是作为一个类族的共同基类。2.如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。有如下程序,没有使用多态机制。 #includeiostream using namespace std; class Base int a,b; public: Base(int x,int y)a=x;b=y; void show()couta“,“bendl; ; class Derived:public Base int c,d; public: Derived(int x,int y,int z,int
23、 m):Base(x,y)c=z;d=w; void show()coutc“,“dendl; ; int main() Base B1(50,50),*pb; Derived D1(10,20,30,40); pb= class Point int x,y; public: Point (int x1=0,int y1=0):x(x1),y(y1) int get()return x+y; ; class Circle Point center; int radius; public: Circle(int cx,int cy,int r):center(cx,cy),radius(r) i
24、nt get()return center.get()+radius; ; int main() Circle c(3,4,5); coutc.get()endl; return 0; 运行时的输出结果是_。(分数:2.50)A.5B.7C.9D.12 解析:解析 简单类之间继承关系的调用,按照通常做法便可以得到答案。center.get()函数调用后,3 和 4 的和被返回,接着再调用 Circle 类的 radius 成员变量 5 相加后得到 12。4.若目前 D 盘根目录下并不存在 test.txt 文件,则下列打开文件方式不会自动创建 test.txt 文件的是_。(分数:2.50)A
25、.ifstream fin; fin.open(“d:/test.txt“,los_base:in); B.fstream fio; fio.open(“d:/test.txt“,los_base:out);C.ofstream four; fout.open(“d:/test.txt“,ios_base:out);D.ofstream fout; four.open(“d:/test.txt“,los_base:app);解析:5.若要对 Data 类中重载的加法运算符成员函数进行声明,下列选项中正确的是_。(分数:2.50)A.Data+(Data); B.Data operator+(D
26、ata);C.Data+operator(Data);D.opcrator+(Data, Data);解析:解析 本题考查的知识点是重载运算符。加法运算符“+”是一个二元运算符,当作为成员函数重载时参数表中只有 1 个参数,对应于第二个操作数,而第一个操作数是对象本身,以 this 指针的形式隐藏在参数表中。6.语句序列“char*p=“teacher“; p+=2; coutp+2“/t“*(p+2);”的输出结果是_。(分数:2.00)A.acher aB.cher cC.her h D.h her解析:7.有如下程序: #includeiostream using namespace s
27、td; class Base public: Base()cout“B“; Base()cout“b“; ; class Derived:public Base public: Derived()cout“D“; Derived()cout“d“; ; int main() Derived obj; return 0; 运行这个程序的输出是_。(分数:2.50)A.BDbdB.BDdb C.DBbdD.DBdb解析:8.有如下程序: #includeiostream using namespace std; class Base int x; public: Base(int n=0): x(
28、n) coutn; int getX()const return x; ; class Derived: public Base int y; public: Derived(int m, int n): y(m), Base(n) coutm; Derived(int m): y(m) coutm; ; int main() Derived d1(3), d2(5, 7); return 0; 执行这个程序的输出结果是_。(分数:1.00)A.375B.357C.0375 D.0357解析:解析 本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派
29、生类的构造函数,对象释放时,先执行派生类的析构函数,再执行基类的析构函数。本题中定义了一个对象 d1,先执行基类的构造函数输出 0,再执行派生类的构造函数输出 3,然后定义了一个对象 d2(5, 7),其中需要调用基类的构造函数输出 7,最后输出 5,所以答案为 C。9.计算斐波那契数列第 n 项的函数定义如下: int fib(int n) if (n=0)return 1; else if(n=1) return 2; else return fib(n=1)+fib(n=2); 若执行函数调用表达式 fib(2),函数 fib 被调用的次数是 _ 。(分数:2.00)A.1B.2C.3
30、D.4解析:解析 针对递归调用的含义。当 n 为 2 时有 fib(0),fib(1),fib(2)被调用,且 fib(0),fib(1)时调用结束,即共 3 次。10.有如下程序: #include iostream using namespace std; class BASE public: BASE()cout“BASE“; ; class DERIVED: public BASE public: DERIVED() cout“DERIVED“; int main() DERIVED x; return 0; 执行后的输出结果是 _ 。(分数:2.00)A.BASEB.DERIVEDC
31、.BASEDERIVEDD.DERIVEDBASE 解析:11.有如下程序: #includeiostream #includestring using namespace std; class MyString public: char str80; MyString(const char*s)strepy(str s); MyString return*this; ; ostream int main() MyString x(“abc“), y(“cde“); cout(x+=y)endl; return 0; 运行这个程序的输出结果是_。(分数:2.50)A.abcB.cdeC.abc
32、deD.abccde 解析:解析 本题考查的是字符串的运算。12.下列关于模板的说法正确的是_。(分数:1.00)A.模板的实参在任何时候都可以省略B.类模板与模板类所指的是同一概念C.类模板的参数必须是虚拟类型的D.类模板中的成员函数全部都是模板函数 解析:解析 在 C+中规定如果一个类被声明为类模板,那么其中的所有成员函数就都成为了模板函数。13.下列语句分别是不同程序中的第一个输入/输出语句,若去掉其中的“left”,输出效果将发生变化的是_。(分数:2.50)A.coutleftsetfill(“*“)357;B.coutleftsetw(5)357; C.coutleftsetw(5
33、)“ABCDE“;D.coutleft“ABCDE“;解析:解析 设置对齐方式一般在设置输出宽度的情况下才会生效,所以 A、D 项中的 left 有无都无所谓。C 项输出字符长度与设置宽度相同,对齐方式也无作用。14.以下程序的输出结果是 _ 。 min() int i=0,a=0; while(i20) for(;) if(i%10)=0)break; else i-; i+=11;a+=i; coutaendl; (分数:2.00)A.21B.32 C.33D.11解析:解析 本题是两个循环语句和一个判断语句的嵌套。For 循环的作用是在 i 等于 10 的时候跳出循环,故本题的答案为 B
34、。15.下列函数模板的定义中,合法的是_。(分数:1.00)A.template typename T T abs(T x) return x0? -x:x; B.template class T T abs(T x) return x0? -x:x;C.template T class T abs(T x)return x0? -x:x;D.template T abs(T x)return x0? -x:x;解析:解析 本题考查模板函数的基本概念,根据模板函数的定义,所以答案为 A。16.下列关于 C+函数的说明中,正确的是_。(分数:1.00)A.内联函数就是定义在另一个函数体内部的函数
35、B.函数体的最后一条语句必须是 return 语句C.标准 C+要求在调用一个函数之前,必须先声明其原型 D.编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式解析:解析 一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,而不是在定义在另一个函数体内,所以 A 选项错误。函数可以没有返回值,所以就不需要 return 了,如果被调函数在调用函数之前已经定义,那么就不需要声明,所以 C 选项错误,正确选项为 D。17.下列数据结构中,能够按照“先进后出”原则存取数据的是_。(分数:1.00)A.循环队列
36、B栈 C.队列D.二叉树解析:解析 栈是按先进后出的原则组织数据的。队列是先进先出的原则组织数据。18.下列有关构造函数的描述错误的是 _ 。(分数:2.00)A.构造函数在说明类变量时自动执行B.构造函数可以重载C.构造函数可以设置默认参数D.构造函数可以对静态数据成员进行初始化 解析:解析 选项 A、选项 B 和选项 C 都是构造函数的特征,类中的静态数据成员是类的所有对象共享的,所以它必须有单独的初始化,不能由类的构造函数进行初始化。19.下列关于运算符重载的叙述中,错误的是_。(分数:1.00)A.有的运算符可以作为非成员函数重载B.所有的运算符都可以通过重载而被赋予新的含义 C.不得
37、为重载的运算符函数的参数设置默认值D.有的运算符只能作为成员函数重载解析:解析 重载运算符的规则如下:C+不允许用户自己定义新的运算符,只能对已有的 C+运算符进行重载;C+不能重载的运算符只有 5 个;重载不能改变运算符运算对象的个数;重载不能改变运算符的优先级和结合性;重载运算符的函数不能有默认的参数;重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是 C+的标准类型。所以答案为B。20.将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是 _ 。(分数:2.00)A.不合法的运算符B.一元运算符 C.无操作数的运算符D.二元运算符解析
38、:解析 一元或二元运算符函数作为成员函数时,第一操作数就是对象本身,并不出现在参数表中,即第一操作数仅以 this 指针的形式隐含于参数表中,因此对于一元运算符参数表是空的;而对于二元运算符参数表中只有一个参数,它代表第二操作数。21.下列关于运算符重载的叙述中,正确的是_。(分数:2.50)A.通过运算符重载机制可以为 C+语言扩充新的运算符B.运算符重载的作用是使已有的运算符作用于类的对象 C.重载运算符的操作数类型可以全部为基本类型D.所有运算符都可以重载解析:解析 运算符重载的主要目的是为了扩充运算符的应用范围,使对象直接参与表达式的运算。但并不能改变运算符的优先级、目数和结合性等基本
39、性质。只能对已有的运算符进行重载,用户不能重载一个并不存在的运算符。不是所有运算符都能重载,如以下运算符都不可以重载:成员运算符“.”、指针操作运算符“*”、作用域运算符“:”、三目运算符“?:”、求字节数运算符“sizeof()”。22.要利用 C+流实现输入输出的各种格式控制,必须在程序中包含的头文件是_。(分数:2.00)A.fstreamB.istreamC.cstdlibD.iomanip 解析:23.下面程序的输出结果是 _ 。 #includeiostream #includestring using namespace std; void main() charp110,p21
40、0; strcpy(p1,“abc“); strcpy(p2,“ABC“); charstr50=“xyz“; strcpy(str+2,strcat(p1,p2); coutstr; (分数:2.00)A.xyabcABC B.yzabcABCC.xyzabcABCD.zabcABC解析:解析 本题考查字符串操作函数和指针的使用。strcat(p1,p2)将字符串 p1 和 p2 连接,接着调用 strcpy 函数,从数组 str 的第 3 个位置开始复制连接后的字符串,因此本题答案为 xyabcABC。24.有如下程序: #includeiostream using namespace s
41、td; class Point public: static int number; public: Point() number+; Point() number -; ; int Point:number=0; int main() Point *ptr; Point A, B; Point *ptr_point=new Point3; ptr=ptr_point; Point C; coutPoint:numberendl; deleteptr; return 0; 执行这个程序的输出结果是_。(分数:1.00)A.3B.4C.6 D.7解析:解析 本题考查默认构造函数,题目中定义一个对
42、象 A、B 以及对象数组 Point3,又定义了对象 C,共执行 6 次构造函数,number 变为了 6,所以本题答案为 C。25.若要向一个文件的末尾添加数据,则需使用的打开方式是(分数:2.50)A.ios_base:inB.ios_base:outC.ios_base:app D.ios_base:trunc解析:26.在下列程序的横线处填上适当的内容,使程序执行后的输出结果为 ABCD_。 #includeiostream using namespace std; class A public:A()cout“A“; ; class B:_ public:B()cout“B“; ;
43、classC: virtua1 pubtic A public:C()cout“C“; ; class D:public B,public D public:D()cout“D“; ; void main() D obj;(分数:1.00)A.public AB.private AC.protected AD.virtual public A 解析:解析 由主函数 main 入手,定义了类 D 对象 obj。其中 D 为类 B 和 C 的公有继承,A 是 C 的虚基类。题目中要求的输出结果为 ABCD,依次为类 A、类 B、类 C、类 D 中构造函数的输出语句。为了保证基类通过多条路径被派生类
44、继承,即保证 A 只被继承一次,输出一个 A,所以需要声明 A 为 C 的虚基类,同样也要声明 A 为 B 的虚基类。27.有以下程序: #includeiostream. h void fun(int a, int b, int c) a=456, b=567, c=678; void main() int x=10, y=20, z=30; fun(x, y, z); coutx“,“y“,“zendl; 输出结果是_。(分数:1.00)A.30,20,10B.10,20,30 C.456,567,678D.678,567,456解析:解析 本题考查函数中变量的作用范围,在主函数中给变量
45、x、y、z 赋值,然后将其作为实参传递给了函数 fun(),虽然在函数 fun()中改变了这 3 个变量的值,但只是同名的局部变量,不影响函数中变量的值,所以在调用函数 fun()结束后,主函数 3 个变量的值未改变。28.下面关于运算符重载的描述错误的是_。(分数:2.50)A.运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构B.不是所有的运算符都可以进行重载C.运算符函数的调用必须使用关键字 operator D.在 C+语言中不可通过运算符重载创造出新的运算符解析:解析 例如“:”运算符就不能被重载;通过重载可以创造新的运算方式,但是不能臆造新的运算符;定
46、义的时候必须使用关键字 operator,而调用时可直接使用运算符。29.通常的拷贝初始化构造函数的参数是 _ 。(分数:1.00)A.某个对象名B.某个对象的成员名C.某个对象的引用名 D.某个对象的指针名解析:30.在软件开发中,需求分析阶段可以使用的工具是_。(分数:2.50)A.N-S 图B.DFD 图 C.PAD 图D.程序流程图解析:解析 结构化解析方法是常见的需求分析方法之一,是结构化程序设计理论在软件需求解析阶段的运用,DFD(数据流图)是结构化解析常用工具之一。数据字典、判定树和判定表是常用的结构化分析工具。程序流程图、N-S 图、PAD 图是详细设计过程中常用的图形工具。31.对于 switch(c) 中的变量 c 不能定义为的类型是 _ 。(分数:1.00)A.unsignedB.intC.charD.float 解析:解析 选择语句 switch(c)中的 c 必须属于整型、字符型或枚举型。所以答案为 D。32.下列关于 C+流的描述中,错误的是