我想说
每天坚持一点点,坚持带来大改变
今天是刷题的第_10天,加油!
一、选择题
C++中不可以被重载的运算符:
- 成员访问运算符:
.
,用于访问类成员 - 成员的指针访问运算符:
.*
用于访问类成员的指针 ,如obj.*a
:访问的是成员a的地址 - 域作用限定符:
::
- 三目运算符:
?:
- 长度运算符
sizeof
MyClass[5]:创建一个5个对象的数组,所以调用5次构造函数
MyClass* b[6] :创建一个指针数组,数组每一个元素是MyClass* 类型,所以不会调用构造函数
所以答案选 B
初始化列表的初始化顺序 取决于 成员变量的声明顺序
题目中a先声明,b后声明。所以初始化列表中无论a和b谁写在前,都是a先初始化,b后初始化
所以一直都输出"ab" ,选C
对于空类,并不是0字节,在主流的编译器中(VS系列,gcc系列等),将空类的大小设置为1,用于标识该类创建的对象是存在的!
对于非主流编译器,是不一定的。
二、编程题
1. 井字棋
👉 题目链接
井字棋(N*N)赢的规则就是:
- 某一行都是1
- 某一列都是1
- 主对角线都是1
- 副对角线都是1
只要满足其中一种情况,就是赢
所以很简单,只需要依次取检查 行、列、主对角线、副对角线即可
class Board {
public:
bool checkWon(vector<vector<int> > board) {
size_t row &#61; board.size();
for (size_t i &#61; 0; i < row; &#43;&#43;i) {
int sum &#61; 0;
for (size_t j &#61; 0; j < row; &#43;&#43;j) {
sum &#43;&#61; board[i][j];
}
if (sum &#61;&#61; row) {
return true;
}
}
for (size_t i &#61; 0; i < row; &#43;&#43;i) {
int sum &#61; 0;
for (size_t j &#61; 0; j < row; &#43;&#43;j) {
sum &#43;&#61; board[i][j];
}
if (sum &#61;&#61; row) {
return true;
}
}
int sum &#61; 0;
for (size_t i &#61; 0; i < row; &#43;&#43;i) {
sum &#43;&#61; board[i][i];
}
if (sum &#61;&#61; row) return true;
sum &#61; 0;
for (size_t i &#61; 0; i < row; &#43;&#43;i) {
sum &#43;&#61; board[i][row - i];
}
if (sum &#61;&#61; row) return true;
return false;
}
};
2.密码强度等级
&#x1f449; 题目链接
这题根据题目意思来即可&#xff0c;没什么难度
#include
#include
using namespace std;
int main()
{
string password;
cin >> password;
int points &#61; 0;
int num_cnt &#61; 0;
int alpha_cnt &#61; 0;
int Uper_cnt &#61; 0;
int symbol_cnt &#61; 0;
for(auto i : password)
{
if(i>&#61;&#39;a&#39; && i<&#61;&#39;z&#39;) &#43;&#43;alpha_cnt;
if(i>&#61;&#39;A&#39; && i<&#61;&#39;Z&#39;) &#43;&#43;Uper_cnt;
if(isdigit(i)) &#43;&#43;num_cnt;
if(i>&#61;0x21 && i<&#61;0x2F ||
i>&#61;0x3A && i<&#61;0x40 ||
i>&#61;0x5B && i<&#61;0x60 ||
i>&#61;0x7B && i<&#61;0x7E)
&#43;&#43;symbol_cnt;
}
if(password.size()>&#61;8)
{
points&#43;&#61;25;
}
else if(password.size()>&#61;5)
{
points&#43;&#61;10;
}
else
{
points &#43;&#61; 5;
}
if(num_cnt &#61;&#61;1)
{
points&#43;&#61;10;
}
else if(num_cnt >1)
{
points&#43;&#61;20;
}
if(alpha_cnt >0 && Uper_cnt>0)
{
points&#43;&#61;20;
}
else if(alpha_cnt>0 || Uper_cnt>0)
{
points&#43;&#61;10;
}
if(symbol_cnt&#61;&#61;1)
{
points&#43;&#61;10;
}
else if(symbol_cnt>1)
{
points&#43;&#61;25;
}
if(num_cnt>0 && alpha_cnt>0 && symbol_cnt>0 && Uper_cnt>0) points&#43;&#61;5;
else if(num_cnt>0 && symbol_cnt>0 && (alpha_cnt>0 || Uper_cnt>0)) points&#43;&#61;3;
else if(num_cnt >0 && (alpha_cnt>0 || Uper_cnt>0)) points&#43;&#61;2;
if(points >&#61; 90) cout << "VERY_SECURE"<<endl;
else if(points>&#61;80) cout << "SECURE"<<endl;
else if(points>&#61;70) cout << "VERY_STRONG"<<endl;
else if(points>&#61;60) cout << "STRONG"<<endl;
else if(points>&#61;50) cout << "AVERAGE"<<endl;
else if(points>&#61;25) cout << "WEAK"<<endl;
else cout << "VERY_WEAK"<<endl;
return 0;
}