热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【笔试刷题训练】day_10

我想说每天坚持一点点,坚持带来大改变今天是刷题的第_10天,加油!一、选择题C中不可以被重载的运算符:成员访问运算符&#x




我想说

每天坚持一点点,坚持带来大改变
今天是刷题的第_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) {
// write code here
//赢的规则&#xff1a;一横排 || 一竖排 || 主对角线 || 副对角线 全是1 那么就赢了
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;
}








推荐阅读
  • C++实现经典排序算法
    本文详细介绍了七种经典的排序算法及其性能分析。每种算法的平均、最坏和最好情况的时间复杂度、辅助空间需求以及稳定性都被列出,帮助读者全面了解这些排序方法的特点。 ... [详细]
  • 题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!-----&# ... [详细]
  • 本文详细探讨了KMP算法中next数组的构建及其应用,重点分析了未改良和改良后的next数组在字符串匹配中的作用。通过具体实例和代码实现,帮助读者更好地理解KMP算法的核心原理。 ... [详细]
  • 本题探讨了一种字符串变换方法,旨在判断两个给定的字符串是否可以通过特定的字母替换和位置交换操作相互转换。核心在于找到这些变换中的不变量,从而确定转换的可能性。 ... [详细]
  • 本文探讨了 C++ 中普通数组和标准库类型 vector 的初始化方法。普通数组具有固定长度,而 vector 是一种可扩展的容器,允许动态调整大小。文章详细介绍了不同初始化方式及其应用场景,并提供了代码示例以加深理解。 ... [详细]
  • Codeforces Round #566 (Div. 2) A~F个人题解
    Dashboard-CodeforcesRound#566(Div.2)-CodeforcesA.FillingShapes题意:给你一个的表格,你 ... [详细]
  • 使用GDI的一些AIP函数我们可以轻易的绘制出简 ... [详细]
  • C语言实现推箱子游戏的完整代码
    本文详细介绍了如何使用C语言在Linux环境下实现一个简单的推箱子游戏,包括游戏的基本规则、地图设计及代码实现。适合C语言初学者学习。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • ###问题删除目录时遇到错误提示:rm:cannotremoveusrlocaltmp’:Directorynotempty即使用rm-rf,还是会出现 ... [详细]
  • 本文详细探讨了C语言中指针的概念,特别是指针在变量和数组中的应用。通过实例讲解,帮助读者更好地掌握指针的使用方法。 ... [详细]
  • C语言标准及其GCC编译器版本
    编程语言的发展离不开持续的维护和更新。本文将探讨C语言的标准演变以及GCC编译器如何支持这些标准,确保其与时俱进,满足现代开发需求。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 在编译BSP包过程中,遇到了一个与 'gets' 函数相关的编译错误。该问题通常发生在较新的编译环境中,由于 'gets' 函数已被弃用并视为安全漏洞。本文将详细介绍如何通过修改源代码和配置文件来解决这一问题。 ... [详细]
author-avatar
酸葡萄洗澡她_606
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有