长沙理工大学C++题库附答案 下载本文

int get_r( ) { return r; } };

13、编写程序求5!+4!+3!+2!+1!的和,其中求阶乘要求用函数实现。 14、编程打印如下图形: 1 22 333 4444 55555

15、编写一个简单程序,要求:

1)用while循环实现从键盘上输入20个整数并放入数组 2)求出数组元素的最大值及数组的平均值并输出。

16、定义一个处理日期的类TDate,它有3个私有数据成员:Month,Day,Year和若干个公有成员函数,并实现如下要求:①构造函数重载;②成员函数设置缺省参数;③定义一个友元函数来打印日期(3分);④可使用不同的构造函数来创建不同的对象。

17.一个10个整数的数组(34,91,83,56,29,93,56,12,88,72),找出最小数和其下标,并在主函数中打印最小数和下标。

18.编写程序,为主函数调用isprime()函数的形式,确定一个数是否为素数。 19、完成下面的函数,对有n个元素的数组a,使数组元素按逆序排列。 void inverse(int *a, int n) { }

20、下面的函数统计子字符串substr在字符串str中出现的次数,如果substr在str中不出现,则返回值0。请完成该函数。

int str_count(char *substr, char *str) { }

21、编写程序,输出0~100之间所有不能被3整除的数。

22、勾股数是满足x2+y2=z2的自然数,请编程完成打印50以内的勾股数。

23、定义个datetime类,使其对象可以显示当前系统时间和日期 。

编写一个程序,该程序的输入有三个整数,找出其中最大的两个整数并输出这两个整数的和

24、设计程序给职工加工资,若其工资大于3500,则加300元,若在3000~3500之间,则加600元,若3000元以下,则加800元

17

25、用C++语言的类编写一个程序,该程序从键盘读入两个整数,判断这两个整数是否相等,并输出整数的值,要求先输出整数的值。 四、判断下列描述的正确性:

1、C++中标识符内的大小写字母是没有区别的。 ( ) 2、C++是一种以编译方式实现的高级语言。 ( ) 3、在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。 ( ) 4、在私有继承中,基类中所有成员对派生类都是不可见的。 ( ) 5、返回值类型、参数个数和类型都相同的函数也可以重载。 ( )

6、使用关键字class定义的类中缺省的访问权限是私有(private)的。 ( )

7、类的私有成员只能被类中的成员函数访问,任何类以外的函数对它们的访问都是非法的。(8、C++中使用了新的注释符(//),C语言中注释符(/*…*/)不能在C++中使用。 ( )9、While循环语句的循环体至少执行一次。 ( )

10、引用就是某个变量的别名,对引用的操作,实质上就是对被引用的变量的操作。( ) 11、类封装了数据和操作。 ( )

12、在类的定义中,必须包含private、public、protected三种存取方式对应的部分。( ) 13、类中的数据成员不能为指针类型。 ( ) 14、析构函数可以有形参。 ( ) 15、派生类至少有一个基类。 ( )

16、在公有和保护继承方式下,派生类的对象可以对基类的保护成员进行访问。( ) 17、全局函数和静态成员函数也能声明为虚函数。 ( ) 18、在一个类的对象空间里不包含静态成员的空间。 ( ) 19、友元本身就是类的成员。 ( ) 20、运算符重载后,原运算符的优先级和结合特性会改变。 ( ) 21、一个类只能有一个对象。 ( )

22、在类中不能对所定义的数据成员进行初始化。 ( ) 23、类的公有成员函数是类与外界的接口。 ( ) 24、构造函数没有函数类型。 ( )

25、在派生类的构造函数的初始化表中不能对包含基类的子对象初始化。( )

26、在公有和保护继承方式下,派生类的成员可以对基类的保护成员进行访问。 ( ) 27、只有类的成员函数才能声明为虚函数。 ( )

28、在一个类的对象空间里已经包含了静态成员的空间。 ( )

18

) 29、C++不允许将构造函数、析构函数和虚函数声明为友元函数。( ) 30、运算符重载后,原运算符的优先级和结合特性不会改变。 ( )

31. C++中使用了新的注释符(//),C语言中注释符(/*…*/)不能在C++中使用。 ( ) 32. 数组赋初值时,初始值表中的数据项的数目可以大于或等于数组元素的个数。 ( ) 33. 隐含的类型转换都是保值映射,显式的类型转换都是非保值映射。 ( ) 34. 宏定义命令是以分号结束的。 ( )

35. While循环语句的循环体至少执行一次。 ( )

36. 返回值类型、参数个数和类型都相同的函数也可以重载。( ) 37. 函数形参的作用域是该函数的函数体。 ( ) 38. 静态类标识符在它的作用域之外是不存在的。 ( )

39. 对象成员的表示与结构变量成员表示相同,使用运算符.或->。 ( ) 40. 某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。 ( ) 41. 对象数组的元素可以是不同类的对象。 ( ) 42. const char *p说明了p是指向字符串的常量指针。 ( )

43、引用就是某个变量的别名,对引用的操作,实质上就是对被引用的变量的操作。( ) 44、无论是私有继承还是保护继承中,基类中所有成员对派生类对象都是不可见的。( )

45、当break语句用在双重循环的内循环中时,它只能退出内循环到外循环中去,而不能直接退出整个双重循环。 ( )

46、For循环是只有可以确定的循环次数时才可使用,否则不能用for循环。 ( ) 47、返回值类型、参数个数和参数类型都相同的函数也可以重载。 ( )

48、通常的拷贝初始化函数的参数是某个对象的成员名或对象的引用名。 ( ) 49、友元函数是类的成员函数,所以可以存取或修改该类中的私有成员。( )

50、已知:类A中一个成员函数说明如下:void Set(A&a);其中A &a的含意是将a的地址值赋给变量Set。 ( )

51、在语句const char *ptr中, ptr是指向字符串的常量指针。 ( )

52、多继承情况下,派生类的构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序,而与派生类构造函数中所定义的成员初始化列表的各项顺序无关。( )

53、在说明语句 int a(15),&b=a,*p=&a;中,b的值的*P的是不相等的。( ) 54、已知:int a(5),b(10); 表达式++a+b++有二义性。( )

55、在不同类型操作数组成的表达式中,其表达式的类型一定是最高类型double型。( ) 56、break语句也可以用于if体内,它可退出if语句。( )

57、在一个被调用函数中,一个return语句可返回多个值给调用函数。( )

19

58、在传值调用中,要求实参和形参的类型完全一致并且个数相等。( ) 59、for循环中,循环变量的作用域是该循环的循环体内。( )

60、所谓私有成员是指只有类中所提供的成员函数才能直接访问它们,任何类以外的函数对它们的访问都是非法的。( )

61、const char *p说明了p是指向字符串的常量指针。( )

62、私有继承中,基类中所有成员对派生类的对象都是不可见的。( )

五、程序填空: 1、 class A { int * a; int n; public :

A(int nn=0):n(nn) {

if (n==0) a=0;

else a=_________ ; // 分配长度为n的动态数组 }

void Seta(int * aa) {

for (int i=0; i

__________________// 定义析构造函数,释放动态数组空间 };

2、程序输出结果为 a转换为A b转换为B

请将程序补充完整

#include class Sample

{

char c1,c2; public:

Sample (1) void disp() {

cout<

void main() {

(2) a.disp(); b.disp(); }

3、下列程序的输出结果为:The result is :5,请将程序补充完整 #include #include void main() { float a=3,b=4; cout<< (3) (4) }

4、程序输出结果为8 8 请将程序补充完整 #include class c { (5) int x; 20