热门标签 | 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;
}








推荐阅读
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • 本文介绍了C函数ispunct()的用法及示例代码。ispunct()函数用于检查传递的字符是否是标点符号,如果是标点符号则返回非零值,否则返回零。示例代码演示了如何使用ispunct()函数来判断字符是否为标点符号。 ... [详细]
  • 本文介绍了一个程序,可以输出1000内能被3整除且个位数为6的所有整数。程序使用了循环和条件判断语句来筛选符合条件的整数,并将其输出。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
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社区 版权所有