C++测试
1.如果在一个函数中的复合语句中定义了一个变量,则该变量( )。
A 只在该复合语句中有效
B 在本程序范围内有效
C 在该函数中有效
D 为非法变量
2.当函数的参数是普通变量时,关于函数的形参和形参,以下说法正确的是( )。\
A 实参和与其对应的形参共占用一个存储单元
B 只有当实参和与其对应的形参同名时才共占用相同的存储单元
C 实参和与其对应的形参各占用独立的存储单元
D 形参是虚拟的,不占用存储单元
3.在以下各组标识符中,合法的标识符是( )。
A B01 table_1 0_t k%
B sj snt _xy w_y23
C xy_ longdouble *p CHAR
DFast void pbl <book>
4.观察以下代码,关于对象成员访问的描述正确的是( )。
class Point {
public:
int x, y;
void print() { cout << x << "," << y; }
};
int main() {
Point p1;
Point p2;
p1.x = 10;
p1.y = 20;
p2 = p1;
p2.x = 30;
p1.print();
p2.print();
}
A p1.print()和p2.print()调用的是同一个函数代码
B p1.x的值现在为30
C p2 = p1调用了复制构造函数
D p1和p2指向同一个内存地址
5.以下数组声明中正确的是( )。
A int y[5]={0,1,3,5,7,9} ;
B double x[5]={2.0,4.0,6.0,8.0,10.0};
C double [3] []={1,2,3,4,5,6};
D char s[5]=”abcde”;
6.已有定义int k=2,ptr1,ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是( )。
A k=*ptr1*(*ptr2)
B ptr1=ptr2
C ptr2=k
D k=*ptr1+*ptr2
7.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是( ) 。
A (x>=1) && (x<=10) | | (x>=200) && (x<=210)
B (x>=1) && (x<=10) && (x>=200) && (x<=210)
C (x>=1) | | (x<=10) && (x>=200) | | (x<=210)
D (x>=1) | | (x<=10) | | (x>=200) | | (x<=210)
8.若有定义:`int a[10],则对数组a元素的正确引用是( )。
A a(5)
B a[10]
C a{3}
D a[10-10]
9.下列关于类和对象的描述中,正确的是( )。
A 类的私有数据成员只能被类的成员函数访问
B 类是对一组具有相同属性和行为的对象的抽象
C 对象是类的模板,类通过对象来创建
D 一个类的不同对象拥有不同的成员函数实现
10.关于构造函数,以下说法错误的是( )。
A 构造函数名与类名相同
B 构造函数在创建对象时自动调用
C 构造函数可以重载
D 构造函数可以有返回值
11.该程序的功能是输出100-1000之间的所有素数以及素数的个数,请补全程序。
#include<iostream>
using namespace std;
int main()
{int i,s=0,j;
for(i=100;i<=1000;i++)
{ for(j=2;__4__;j++)
if(i%j==0)
___5____
if(__6____)
{cout<<i<<" ";
s++;}
}
cout<<endl;
cout<<s;
return 0;
}
12.子函数factors(int x,int k)的功能是返回整数x中包含因子k的个数,如果没有该因子,则返回0,请补全程序。
#include<iostream>
using namespace std;
int factors(int x,int k)
{ int i=0;
if(_1_) return 0;
while(_2__)
{
i++;
___3____ }
return i;
}
int main()
{
int x,k;
cin>>x>>k;
cout <<factors(x,k);
return 0;
}
13.声明一个时间类(Time),用于记录警务活动的时间,包含私有数据成员:小时(hour)、分钟(minute)。设计以下函数:
(1)用于将数据成员初始化的成员函数;
(2)用于输出时间的成员函数;
(3)重载加法运算符“+”,实现两个时间对象的相加(例如,1小时20分钟+2小时30分钟=3小时50分钟)。注意分钟超过60要进位。
编写主函数测试以上函数。
14.已知分数序列:1/2,2/3,3/5,5/8,8/13,…,编写程序完成:
(1)该序列的累加和首次大于7.0时停止计算;
(2)以逗号分隔输出从首项到该满足条件项的所有项;
(3)输出该满足条件项的位置序号和该项的数值;
(4)输出上述所有项的累加和
15.某市某区公安分局下辖6个派出所,每个派出所每季度处理治安案件数量不同,编写程序输入该分局每个派出所各季度的案件数量(4个季度),并计算每个派出所全年案件总量,将案件总量添加到二维数组的最后一列,输出完整的二维数组。
16.在一次警务技能比武中,有12名选手参加了射击比赛,成绩即射击环数(比如10.2环,9.8环),编写函数将成绩按降序排序,主函数用户输入环数,调用函数,输出排序后的成绩。要求自己实现排序算法,不能直接调用系统函数。
17.某市公安局为表彰先进,需要从各警种中找出累计立功次数最多的警员。每个警员有姓名、警号、年龄、从警年限、所属警种(刑侦、治安、交警等)和立功次数等信息。
要求:
(1)设计PoliceOfficer类,包含上述私有数据成员;
(2)实现带参数构造函数、复制构造函数、析构函数(输出“信息已销毁”);
(3)实现显示警员完整信息的成员函数;
(4)编写普通函数:int findMostMeritorious(PoliceOfficer arr[],int n),参数n为数组元素个数,查找立功次数最多的警员并返回该对象的序号(需要访问对象的私有成员,可使用友元函数);
(5)主函数中创建5个警员对象数组,调用函数找出立功最多者并输出其信息,并测试以上所有函数。
输入示例:
张伟,1001,35,10,刑侦,5
李娜,1002,28,5,治安,3
王刚,1003,42,18,交警,7
刘静,1004,38,12,经侦,7
陈明,1005,45,20,刑侦,9
18.编写程序对字符串完成以下操作:
(1)编写子函数,统计a字符串中字母字符的个数。
函数原型:int mystrlen(const char a[]);
如a字符串"aB56cd8_7",则函数返回值为4。
(2)编写子函数,将a字符串中的数字字符拷贝到字符串b中。
函数原型:void extract_digits(const char a[], char b)
如a字符串"aB56cd8_7",则b串为:“5687”。
(3)编写子函数,将a字符串加密,存到字符串c中,加密规则为:如果是字母字符,则大小写转换,如果是数字字符,将数字乘以2,超出9则只保留个位,其他字符不变。
函数原型: void myEncipher(const char a[], char c[]);
如a字符串为: "aB56cd8_7",加密后的结果为:"Ab02CD6_4"。
编写主函数测试以上函数。

浙公网安备 33010602011771号