越努力,越幸运;越懒惰,越迷茫!
一、选择题
1、下面叙述不正确的是(D)
A派生类一般都用公有派生
B对基类成员的访问必须是无二义性的
C赋值兼容规则也适用于多重继承的组合
D父类的公有成员在派生类中仍然是公有的
答案:选D。分析:子类通过公有继承,父类的公有成员在派生类中仍然是公有的,但是如果是私有继承,父类的公有成员在派生类中算私有的。
2、以下关于纯虚函数的说法,正确的是()
A、子类必须实现基类的
B、声明纯虚函数的类不能实例化
C、声明纯虚函数的类成虚基类
D、纯虚函数必须是空函数
答案: B。分析:B答案:抽象类不能声明对象,只是作为基类为派生类服务。
3、下列关于多态性说法不正确的是()
A、重载方式包含函数重载和运算符重载
B、多态性是指同名函数对应多种不同的实现
C、重载方式仅有函数重载
D、多态性表现为静态和动态两种方式
答案 C。分析:重载方式不仅有函数重载,运算符重载,但是运算符重载严格也是算函数重载。
4、下列哪种函数可以定义为虚函数()
A、析构函数
B、内联成员函数
C、静态成员函数
D、构造函数
答案: A。 分析:析构函数是可以被定义为虚函数。
5、现有一循环队列,其队头指针为front,队尾指针为rear,循环队列长度
为N,最多存储N-1个数据。其队内有效长度为()
A.(rear-front + N)% N+1
B.(rear-front +N)% N
C.(rear-front)%(N+1)
D.(rear-front+N)%(N-1)
答案: B。分析:有效长度一般是rear-front,但是循环队列中rear有可能小于front,所以需要+N,最大长度为N,所以有效长度不可能超过N,故需要%N。
二、编程题
1、参数解析
题目分析:首先是这题读入有空格,需要用getline解析出来的每一个参数用vector<string>存。
代码分析:
usingnamespacestd; intmain() { stringstr; while (getline(cin, str)) { boolflag=false; vector<string>vec; stringrow; for (inti=0; i<str.size(); i++) { if (flag) {//在括号内if (str[i] !='\"') row+=str[i]; elseflag=false; } else { if (str[i] ==' ') { vec.push_back(row); row=""; } elseif (str[i] =='\"') flag=true; elserow+=str[i]; } } vec.push_back(row); cout<<vec.size() <<endl; for (autoi : vec) cout<<i<<endl; } return0; }
2、跳石板
贪心解法
usingnamespacestd; intmain(){ intN,M; while(cin>>N>>M){ vector<int>steps(M+1,INT_MAX); steps[N] =0; for(inti=N;i<=M;i++){ if(steps[i] ==INT_MAX){ continue; } for(intj=2;(j*j)<=i;j++){ if(i%j==0){ if(i+j<=M){ steps[i+j] =min(steps[i]+1,steps[i+j]); } if(i+(i/j) <=M){ steps[i+(i/j)] =min(steps[i]+1,steps[i+(i/j)]); } } } } if(steps[M] ==INT_MAX){ steps[M] =-1; } cout<<steps[M]<<endl; } return0; }
动态规划解法:
usingnamespacestd; constintN=1e5+10; vector<int>v[N]; intf[N]; intn,m; intmain() { cin>>n>>m; memset(f,0x3f,sizeoff); for(inti=n;i<=m;i++) for(intj=2;j<=i/j;j++) if(i%j==0) { v[i].push_back(j); if(i/j!=i) v[i].push_back(i/j); } f[n]=0; for(inti=n;i<=m;i++) for(autox:v[i]) if(i+x<=m) f[i+x]=min(f[i+x],f[i]+1); if(f[m]!=0x3f3f3f3f) cout<<f[m]; elsecout<<-1; return0; }
总结
本文总共讲了5题有关多态的选择题,以及两道牛客编程题,希望大家读后能够有所收获!