(单选题, 2.0 分)
复制构造函数的形参是( )。
A某个对象的引用名
B某个对象的指针名
C某个对象的成员名
D某个对象名
(单选题, 2.0 分)
以下数组定义中,不正确的是( )。
Aint a[10 ]={1,2,3,4,5,6};
Bchar a=”hello”;
Cint a[ ][2]={1,2,3,4,5,6};
Dstring s=”abvfgg@54”;
(单选题, 2.0 分)
给出以下定义:
char x[ ]=”abcdefg”;
char y[ ]={‘a’,‘b’,’c’, ‘d’ ,’e’ ,’f’ ,’g’};
则正确的叙述为( )。
A数组Y需要的存储空间大于数组X的存储空间
B数组x和数组Y需要同样大的存储空间
C数组X需要的存储空间大于数组Y的存储空间
D数组X和数组Y等价
用sizeof()函数
(单选题, 2.0 分)
下列关于C++函数的叙述中,正确的是( )。
A每个函数都必须返回一个值
B函数不能自己调用自己
C每个函数至少要具有一个参数
D函数可以嵌套调用,但不能嵌套定义
(单选题, 2.0 分)
在C++中关于类和对象,下列说法错误的是( )。
A类是对象的抽象,而对象则是类的特例
B类是具有相同特性和相同行为的对象的集合
C一个类只能有一个对象
D面向对象程序设计中,通过创建类(包含属性与方法)实现封装和数据隐藏
(单选题, 2.0 分)
下列语句中错误的是( )。
Aint n; cin>>n; int *p=new int[n];
Bdelete []p;
Cint *p=new int (10);
Dint p=new int[10];
(单选题, 2.0 分)下面的符号中可以用作 C++标识符的是( )。
Aelse
Bfcc@other
C3test
Dradius
(单选题, 2.0 分)
如果主调函数传递数组给被调函数,对函数形参的说明有错误的是( )。
A int a(float x,int n)
B int a(float x[10],int n)
C void a(float *x,int n)
D int a(float x[ ],int n)
(单选题, 2.0 分)
对于语句x*=y+2;还可以写成( )。
A x=x*y+2;
B x=2+y*x;
C x=x*(y+2);
D x=y+2*x;
- (单选题, 2.0 分)
下列不是构造函数的特征的是( )。
A构造函数可以设置默认参数
B构造函数可以重载
C构造函数必须指定返回值类型
D构造函数的函数名与类名相同
二、 程序填空题 (共 2题,12.0 分)
11. (程序填空题, 4.0 分)
函数 fun 的功能是判断一个3位整数的个位数和百位数之和是否等于其十位上的数字,是则返回“1”,否则返回“0”,请完善程序。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #include <iostream> using namespace std; bool fun(int n) {int g,s,b; g=n%10; (1) //获取十位数的值 b=n/100; (2) return 1; else return 0; }
int main()
{ int m; cin>>m; cout<<fun(m); return 0; }
|
(1)s=(n%100-g)/10;
(2)if(g+b==s)
- (程序填空题, 8.0 分)
该程序段实现运算符重载,完善程序。
按成员函数重载运算符“-”以实现两个复数的差运算,再以友元方式重载“*”运算符实现两个复数的积运算。
说明:设z1=a+bi,z2=c+di(a、b、c、d∈R)是任意两个复数,那么它们的积(a+bi)(c+di)=(ac-bd)+(bc+ad)i。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| #include<iostream>
using namespace std;
class Complex
{ float real; float imag; public: Complex( float r,float i ) { real=r; imag=i;} void display() { cout<<real<<"+"<<imag<<"i"<<endl; } ________(1)____________ //函数声明:运算符“-”重载为成员函数 _______(2)_____________ //函数声明:运算符“*”重载为友元员函数 };
__________(3)__________ // 函数类外实现:定义运算符“-”重载函数
__________(4)__________ // 函数类外实现:定义运算符“*”重载函数
|
myanswer:
1 2 3 4 5 6 7 8
| (1)Complex operator+ (Complex& comp2); (2)friend Complex operator*(Complex& comp1,Complex& comp2);
(3)Complex Complex::operator+ (Complex& comp2) {return Complex(real+comp2.real,imag+comp2.imag);}
(4)Complex operator*(Complex& comp1,Complex& comp2) {return Complex(comp1.real*comp2.real,comp1.imag*comp2.imag);}
|
编写程序输出200-300之间的所有素数以及素数的个数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #include<iostream> using namespace std; int main() { bool isprime; int num=0; for(int i=200;i<=300;i++) { isprime=false; for(int j=2;j<i;j++) { if(i%j==0){isprime=false;break;} else{isprime=true;} } if(isprime){ cout<<i<<endl; num++; } } cout<<num; return 0; }
|
编写程序计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。 例如, 从键盘输入n为20后, 输出为: s=0.583333。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #include<iostream> using namespace std; int main() { int n; double s; cin>>n; for(int i=1;i<=n;i++) { if(i%5==0 || i%9==0)s+=1.0/i; } cout<<"s="<<s; return 0; }
|
编写一个函数对某犯罪团伙(13人)一段时间内支付宝收入金额(float 类型)进行排序(降序),编写主函数测试该函数,13人支付宝收入金额在主函数中从键盘输入,并将排序后的结果在主函数中输出。(注:不能直接调用系统函数)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #include<iostream> using namespace std; void Sort(float* m) { int n=13; float temp; for(int j=0;j<n-1;j++) { for(int i=0;i<n-j-1;i++) { if(m[i]<m[i+1]) { temp=m[i]; m[i]=m[i+1]; m[i+1]=temp; } } } } int main() { float money[13]; for(int i=0;i<13;i++)cin>>money[i]; Sort(money); for(int i=0;i<13;i++)cout<<money[i]<<endl; return 0; }
|
编写程序将4*4的二维数组的值按照列的顺序存储到一维数组中,要求从键盘上输入二维数组,转换存储到一维数组中,输出一维数组。
如输入二维数组:
5 7 9 10
4 3 0 1
20 4 19 40
12 45 23 2
输出的一维数组是:
5 4 20 12 7 3 4 45 9 0 19 23 10 1 40 2.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #include<iostream> using namespace std; int main() { int a[4][4],b[16],num=0; for(int i=0;i<4;i++) { for(int j=0;j<4;j++) { cin>>a[i][j]; } } for(int i=0;i<4;i++) { for(int j=0;j<4;j++) { b[num]=a[j][i]; num++; } } for(int i=0;i<16;i++)cout<<b[i]<<' '; return 0; }
|
编写程序对字符串进行下列操作:
(1)编写一个子函数,统计字符串c中的非数字字符的个数。
函数原型:int MyStrlen(const char c[]);
如输入字符串”GQ8&6Kd4_07”,则函数返回值为6。
(2)编写一个子函数,将字符串a中所有的非“*”号字符拷贝到字符串b中。
函数原型:void MyCopy(const char a[],char b[]);
如a字符串"Fb*fk**cg_12***",则b字符串应为”Fbfkcg_12”。
(3)编写一个子函数,将一个字符串m加密后存放到字符串n中,加密的规则是:当内容是英文字母时则用该英文字母的后5个字母替换,同时字母变换大小写,如字母a时则替换为F,字母Z则替换为e;当内容是数字时,则把数字加5,如0替换为5,9替换为4。
函数原型: void myEncipher(const char *m, char *n);
写出主函数测试以上操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| #include<iostream> using namespace std; int MyStrlen(const char c[]) { int num=0; for(int i=0;c[i]!=0;i++) { if(c[i]<'0' || c[i]>'9')num++; } return num; } void MyCopy(const char a[],char b[]) { int num=0; for(int i=0;a[i]!=0;i++) { if(a[i]!='*') { b[num]=a[i]; num++; } } b[num+1]='\0'; } void myEncipher(const char *m, char *n) { int num=0; char ctemp; for(int i=0;m[i]!=0;i++) { if(m[i]>='a' && m[i]<'v'){ctemp=(m[i]+5)-'a'+'A';} else if(m[i]>='v' && m[i]<='z'){ctemp=m[i]-53;} else if(m[i]>='A' && m[i]<'V'){ctemp=(m[i]+5)-'A'+'a';} else if(m[i]>='v' && m[i]<='z'){ctemp=m[i]+11;} else if(m[i]>='0' && m[i]<='4'){ctemp=m[i]+5;} else if(m[i]>='5' && m[i]<='9'){ctemp=m[i]-5;} else{ctemp=m[i];} n[num]=ctemp; num++; } n[num+1]='\0'; } int main() { char c[]="GQ8&6Kd4_07"; cout<<MyStrlen(c)<<endl; char a[]="Fb*fk**cg_12***"; char b[20]; MyCopy(a,b); for(int i=0;b[i]!=0;i++)cout<<b[i]; cout<<endl; char m[]="Hello World12345"; char n[20]; myEncipher(m,n); for(int i=0;n[i]!=0;i++)cout<<n[i]; return 0; }
|
某市公安局A派出所统计当月辖区内电信网络诈骗案件相关数据信息,编写一个电诈类(telecom fraud,简写Tel_fraud), 其中包含案件类型,报案时间,受害人姓名,损失金额等数据成员(都为私有的)。
(1) 添加对数据成员初始化的无参构造函数、带参数构造函数,复制构造函数、析构函数以及显示电诈信息的成员函数(display),也可根据需要添加其他成员函数。
(2) 设计一个普通函数:void amount(Tel_fraud s[]),用于统计所有电诈案件损失金额的总和,并输出统计金额的信息;
(3) 首先在主函数中调用(1)的所有成员函数进行验证,再定义一个 Tel_fraud 的对象数组,可以存放以下电诈案件信息,将数组内容输出,调用 amount()输出损失金额信息。
刷单返利类 2024年12月8日09时00分 张三 12320
冒充电商客服 2024年12月15日11时00分 李四 7301.1
虚假贷款 2024年12月23日09时00分 王五 32253.5
杀猪盘类 2024年12月25日13时00分 小丽 12520
虚假投资理财 2024年12月29日19时00分 李华 53000
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| #include<iostream> #include<string> #include<iomanip> using namespace std; class Tel_fraud { public: Tel_fraud() {leixing=" ";Time=" ";name=" ";money=0.0;} Tel_fraud(string lx,string sj,string mz,double je){leixing=lx;Time=sj;name=mz;money=je;} Tel_fraud(Tel_fraud& tel){leixing=tel.leixing;Time=tel.Time;name=tel.name;money=tel.money;} ~Tel_fraud() {cout<<"调用了析构函数"<<endl;} void display() { cout<<"类型:"<<leixing<<endl<<"时间:"<<Time<<endl<<"姓名:"<<name<<endl<<"损失金额:"<<money<<endl<<endl; } friend void amount(Tel_fraud s[]); private: string leixing,Time,name; double money; }; void amount(Tel_fraud s[]) { double sum=0.0; for(int i=0;i<5;i++) { sum+=s[i].money*1.0; } cout<<"总损失金额:"<<setprecision(7)<<sum<<endl; } int main() { Tel_fraud tel; Tel_fraud(); tel=Tel_fraud("test","test","test",1.23); tel.display(); Tel_fraud tels[5]= { Tel_fraud("刷单返利类","2024年12月8日09时00分","张三",12320), Tel_fraud("冒充电商客服"," 2024年12月15日11时00分","李四",7301.1), Tel_fraud("虚假贷款","2024年12月23日09时00分","王五",32253.5), Tel_fraud("杀猪盘类","2024年12月25日13时00分","小丽",12520), Tel_fraud("虚假投资理财","2024年12月29日19时00分","李华",53000) }; for(int i=0;i<5;i++)tels[i].display(); amount(tels); return 0; }
|