20250303-Rain
1. 指针交换
/*
1. 李四在写排序时, 经常需要交换两个元素的值. 但手动写出来显得代码不够优雅, 李四是一个有品味的
人, 他希望有一个函数能实现两个值的交换.
实现swap函数 该函数可以交换指针指向的值
void swap(int *a, int *b);
测试样例:
int main(){
int a = 3, b = 4;
swap(&a, &b);
printf("%d,%d\n",a,b); //此处应打印4,3
}
*/
#include <iostream>
using namespace std;
/*
功能: 交换两个指针指向的整数值
参数:
int *a: 待交换变量1的地址
int *b: 待交换变量2的地址
返回值:
void
*/
void swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
int main(void)
{
int a = 3, b = 4;
swap(&a, &b);
cout << a << ',' << b << endl;
return 0;
}
2. 密码验证
/*
2. 开挂很危险
最近网络盗号严重, 张三又喜欢开外挂(大家不要学)
于是张三打算出一个安全的密码, 避免开外挂后被盗号
请各位小伙伴帮忙, 判定一下张三的密码是否安全
安全密码的判定:
1. 长度在8~16之间
2. 开头必须是大写
3* 密码最少包含一个小写字母, 一个数字, 一个特殊符号
特殊符号包括~!@#$%*
设计一个程序 输入密码字符串
如果密码安全, 打印true, 否则打印false
(字符串长度<100)
样例输入:
Aa123!!!!!
样例输出:
true
*/
#include <iostream>
#include <string>
using namespace std;
int main(void)
{
string S;
cout << "Please input 'S': ";
cin >> S;
bool flag = true;
// 1. 长度在8~16之间
if (S.length() < 8 || S.length() > 16)
{
flag = false;
}
// 2. 开头必须是大写
if (!isupper(S[0]))
{
flag = false;
}
// 3* 密码最少包含一个小写字母, 一个数字, 一个特殊符号
bool lower = false;
bool num = false;
bool sym = false;
for (auto c : S)
{
if (islower(c))
{
lower = true;
}
if (isdigit(c))
{
num = true;
}
if (c == '~' || c == '!' || c == '@' || c == '#' || c == '$' || c == '%' || c == '*')
{
sym = true;
}
}
if (flag && lower && num && sym)
{
cout << "true" << endl;
}
else
{
cout << "false" << endl;
}
return 0;
}
3. 密码加密
/*
3. 密码加密
自从上次张三密码变复杂后, 再也没有被盗过号
但他觉得密码还是不够复杂, 于是又进行了二次加密
然后..他忘记二次加密后的密码了
小伙伴赶紧帮他找找
张三的加密方式是这样的:
对于每个字母和数字, 按字母表/数字顺序往后挪5位
(如果超过了 则从头开始, 比如'z'转换后变成'e', '9'转换后变成'4')
符号不变
如密码: AaZz09!!!
加密后: FfEe54!!!
设计一个程序, 输入加密前的密码 打印加密后的密码
(密码长度 <= 16)
样例输入: AaZz09!!!
样例输出: FfEe54!!!
*/
#include <iostream>
#include <string>
using namespace std;
int main(void)
{
string S;
cout << "Please input 'S': ";
cin >> S;
for (auto &c : S)
{
if (isupper(c))
{
c = (c - 'A' + 5) % 26 + 'A';
}
else if (islower(c))
{
c = (c - 'a' + 5) % 26 + 'a';
}
else if (isdigit(c))
{
c = (c - '0' + 5) % 10 + '0';
}
}
cout << S << endl;
return 0;
}
Last updated