C++的题目请教
- 提问者网友:轮囘Li巡影
- 2021-02-02 07:54
A静态函数 B虚函数 C构造函数 D 析构函数
2、下列各类函数中,___不是类的成员函数。
A 构造函数 B析构函数 C友元函数 D拷贝构造函数
3、友元函数的作用___。
A提高程序的运行效率 B加强类的封装性
C实现数据的稳定性 D增加成员函数的种类
4、下列函数中,____不能重载。
A成员函数 B非成员函数 C析构函数 D构造函数
5、____是一个在基类中说明的虚函数,它在该基类中没有定义(无函数体),但要求任何派生类都必须定义自己的版本。
A虚析构函数 B虚构造函数 C纯虚函数 D静态成员函数
6、一个____允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返回值能取任意类型。
A函数模板 B模板函数 C类模板 D模板类
7、如果一个类至少有一个纯虚函数,那么就称该类为____。
A抽象类 B虚基类 C派生类 D以上都不对
8、____提供了类对外部的接口,而____不允许外界访问,但允许派生类的成员访问。
A公有成员 B私有成员 C私有成员函数 D保护成员
9、____不是构造函数的特征。
A构造函数的函数名与类名相同 B构造函数可以重载
C构造函数可以设置缺省参数 D构造函数必须指定类型说明
10、关于成员函数特征的下列描述中,___是错误的。
A成员函数一定是内联函数 B成员函数可以重载
C成员函数可以设置缺省函数参数值 D成员函数可以是静态的
11、关于new运算符的下列描述中,___是错误的。
A它可以用来动态创建对象和对象数组
B使用它创建的对象或对象数组可以使用运算符delete删除
C使用它创建对象时要调用构造函数
D使用它创建对象数组时必须指定初始值
12、 const int *p说明不能修改____。
A p指针 B p指针指向的变量
C p指针指向的数据类型 D上述ABC三者
13、下列描述中,正确的是__。
A虚函数是一个static类型的成员函数
B虚函数是一个非成员函数
C抽象类是指具有纯虚函数的类
D抽象类可以说明其对象
14、运算符重载的作用是__d__。
A提高程序的运行效率 B加强类的继承性
C增加数据的安全性 D增加程序的可读性
15、在C++中,关于下列函数参数的描述中,__b__是正确的。
A C++语言中,实参是按照自左至右的顺序求值的
B若一个参数设置了默认值,则其右边的所有参数都具有默认值
C函数参数的默认值不允许是表达式
D设置参数默认值时,应该全部参数都设置
16、在__c__情况下适宜采用inline定义内联函数。
A函数体会有循环语句 B函数体会有递归语句
C函数代码小,频繁调用 D函数代码多,不常调用
17、定义析构函数时,应该注意—C—。
A其函数名与类名完全相同 B函数返回类型是vold类型
C无形参,也不可重载 D函数中必须有delete语句
18、 int * const p说明不能修改__a__
A p指针 B p指针指向的变量
C p指针指向的数据类型 D上述ABC三者
19、关于堆运算符(new ,delete)的下列描述中,__C__是错误的。
A使用堆运算符可以动态建立或删除对象
B new运算符创建对象时要调用构造函数
C可以在使用new[]创建数组时,为每个数组元素指定初始值
D delete运算符可以作用于空指针
20、下列描述中,_d___是抽象类的特性
A可以说明虚函数 B可以进行构造函数重载
C可以定义友元函数D不能说明其对象
- 五星知识达人网友:孤独入客枕
- 2021-02-02 09:28
- 1楼网友:廢物販賣機
- 2021-02-02 09:57
#include "stdio.h" #include "iostream"
//从大到小排序 void sortfrombigtosmall(int numbers[],int output[],int count) { bool flag;
for (int i=1;i<=count-1;++i) { flag = true; //默认每次都是排好了序列
for (int j=0;j<count-1;++j) { if(numbers[j]<numbers[j+1]) { int temp = numbers[j]; numbers[j]=numbers[j+1]; numbers[j+1]=temp; flag=false; //又排序了,可见没有排好 } }
if(flag) //如果排好了,拷贝数组并且退出 { for (int i=0;i<count;++i) { output[i]=numbers[i]; } break; } }
}
//原数组查找,返回-1下标没有找到 int findnumberbyorigin(int numbers[],int count,int number) { for (int i=0;i<count;++i) { if (numbers[i]==number) { return i; } } return -1; }
//折半查找 int binaryfindnumber(int numbers[],int count,int number) { int top = 0; int bottom = count-1; int middle = (top+bottom)/2;
while(numbers[middle]!=number && bottom>=top) { if(numbers[middle]>number) //比查找的数值小 { top = middle+1; } else if (numbers[middle]<number) { bottom = middle -1; } middle = (top+bottom)/2; }
if(numbers[middle]==number) { return middle; } return -1;
}
//打印输出 void printout(int numbers[], int count) { printf("排序后的数组:\n"); for (int i=0;i<count;++i) { printf("%d ",numbers[i]); } }
void main() { int numbers[]={1,0,9,2,5,3,0,3,0,2,3,3}; int output[12]; int number = 0;
//排序归类并打印 sortfrombigtosmall(numbers,output,12); printout(output,12);
printf("\n\n输入一个要查找的数字:"); scanf("%d",&number);
//一般方法查找 int result = findnumberbyorigin(numbers,12,number); printf("按照顺序查找法结果:\n"); printf(result==-1?"没有找到!\n\n":"该数在原数组的下标是:%d \n\n",result);
printf("按照折半查找法结果:\n"); result = binaryfindnumber(output,12,number); printf(result==-1?"没有找到!":"该数在原数组的下标是:%d ",result); //system("pause");
}
【说明:使用vc++写,根据实际情况可以修改】
运行情况:
1)没找到:
2)找到了: