蓝桥杯算法练习笔记(1)__字符串和日期
发布日期:2021-04-30 21:04:15
浏览次数:100
分类:精选文章
本文共 4136 字,大约阅读时间需要 13 分钟。
《计蒜客2019年蓝桥杯算法训练营》笔记
1. ASCII码值
ASCII码是计算机中最基本的字符编码方式,用于表示文本字符。以下是常用字符的ASCII码值:
- 48:空格
- 65:A
- 97:a
在C++中,可以通过简单的算术运算将字符转化为ASCII码。例如:
int main() { char c1 = 'A'; cout << (char)(c1 + 1) << endl;} 输出结果会是B,说明字符'A'的ASCII码值为65。
2. 字母三角形
1. 字母三角形基础实现
以下是字母三角形的经典实现代码:
#include#include using namespace std;int main() { int n; cin >> n; for (int i = 1; i <= n; ++i) { string space(n - i, ' '); string ch(2 * i - 1, 'A' + i - 1); cout << space + ch + space + ch << endl; }}
- 输入:
5 - 输出:
AABAABCBAABCDCBAABCDEDCBAABCDEFEDCBA
2. 字母三角形升级版本
以下是对字母三角形的升级版本,支持输入任意字符:
#include#include using namespace std;int main() { char c; cin >> c; if (c > 'A' && c < 'Z') { for (int i = 1; i <= c - 'A' + 1; ++i) { for (int j = 1; j <= c - 'A' + 1 - i; ++j) { cout << " "; } for (int j = 1; j <= i; ++j) { cout << ('A' + j - 1); } for (int j = i - 1; j >= 1; --j) { cout << ('A' + j - 1); } cout << endl; } } else { for (int i = 1; i <= c - '1' + 1; ++i) { for (int j = 1; j <= i; ++j) { cout << " "; } cout << ('1' + j - 1); for (int j = i - 1; j >= 1; --j) { cout << ('1' + j - 1); } cout << endl; } }}
- 输入:
F - 输出:
AABAABCBAABCDCBAABCDEDCBAABCDEFEDCBA
3. 字符串与字符数组
1. 字符串与字符数组的基本概念
- 字符串在C++中是不可变的,且以
"\0"结尾。 - 字符数组是可变的,同样以
"\0"结尾。 - 在C++中,
string类型可以直接进行赋值操作,而不会修改原数组。
2. 字符串操作函数
strcpy:复制字符串。strcat:拼接字符串。strcmp:比较字符串。
例如:
#include#include int main() { char name[10]; char *str = "abcdefg"; strcpy(name, str); printf("%s\n", name); return 0;}
3. 字符串出现次数统计
以下是统计字符串中某字符出现次数的代码:
#include#include int main() { char s1[1005], s2[1005]; int len1 = strlen(s1) - 1; int len2 = strlen(s2) - 1; int ans = 0; for (int i = 0; i < len2; ++i) { if (s1[i] == s2[i]) { ans++; } } cout << ans << endl;}
4. 日期判断
1. 判断今天是星期几
可以通过两种方法实现:
方法一:模拟法
#includeusing namespace std;int whatday(int y, int m, int d) { int ans = 0; for (int i = 1; i <= y; ++i) { if ((i % 100 != 0 && i % 4 == 0) || (i % 400 == 0)) { ans += (d - 1) % 7; } else { ans += 365 % 7; } if (m == 11) { if (d > 30) { ans += (d - 31) % 7; } else { ans += (d - 1) % 7; } } else if (m == 4) { ans += (d - 1) % 7; } else { ans += (d - 1) % 7; } ans %= 7; } string weekday[] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}; return ans;}int main() { int y, m, d; cin >> y >> m >> d; cout << weekday[whatday(y, m, d)] << endl;}
方法二:菜吉姆拉尔森公式
#includeusing namespace std;int main() { int w, d, m, y; cout << "年"; cin >> y; cout << "月"; cin >> m; cout << "日"; cin >> d; if (m == 1) { m = 13; y--; } else if (m == 2) { m = 14; y--; } int h = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7; cout << "星期" << (h + 1) << endl;}
5. 小明圈宝藏问题
以下是小明圈宝藏问题的代码示例:
#includeusing namespace std;int main() { int n, m; cin >> n >> m; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { cout << "+-"; } cout << "+" << endl; }}
6. 日期计算
以下是日期计算的代码示例:
#include#include using namespace std;int day[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int main() { int y, m, d, k; scanf("%d%d%d%d", &y, &m, &d, &k); for (int i = 1; i <= k; ++i) { if ((y % 100 != 0 && y % 4 == 0) || (y % 400 == 0)) { day[2] = 29; } else { day[2] = 28; } d++; if (d == day[m] + 1) { d = 1; m++; } if (m == 13) { m = 1; y++; } } printf("%04d-%02d-%02d", y, m, d);}
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2026年05月25日 06时11分54秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
php模拟发送GET和POST请求
2023-03-01
RabbitMQ - 以 MQ 为例,手写一个 RPC 框架 demo
2023-03-01
php模板引擎smarty
2023-03-01
php正则表达式模式
2023-03-01
php正则表达式的特殊字符含义
2023-03-01
PHP正则表达式获取武汉市的实时pm2.5数据并邮件发送phpmailer
2023-03-01
RabbitMQ + JMeter组合,优化你的中间件处理方式!
2023-03-01
PHP水仙花问题解法之一
2023-03-01
php没有解析是怎么回事,linux下php文件没有被剖析怎么办?_后端开发
2023-03-01
php注册页面实现注册后跳转页面
2023-03-01
PHP消息队列的实现方式与详解,值得一看
2023-03-01
PHP混合Go协程并发
2023-03-01
php源码中如何添加滚动公告,给WordPress网站添加滚动公告的方法
2023-03-01
PHP源码安装后如何新增模块
2023-03-01
php源码详细安装步骤,linux下php源码安装步骤
2023-03-01
php漏洞tips
2023-03-01
php版Zencoding之 phpstorm
2023-03-01
PHP版本升级5.4手记
2023-03-01
php版本升级总结
2023-03-01
php版本微信公众号开发
2023-03-01