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"。

编写主函数测试以上函数。

posted @ 2026-01-23 08:41  C1za_Star  阅读(14)  评论(0)    收藏  举报