第16届蓝桥杯c++c组真题
时间: 2025-05-30 12:23:13 浏览: 22
### 第16届蓝桥杯C++ C组真题概述
以下是基于已知引用内容整理的关于第16届蓝桥杯C++ C组的部分真题及其解析:
#### 题目一:可分解的正整数
此题要求统计给定的一系列正整数中可以被分解成两个或多个大于1的因数相乘的数量。具体实现逻辑如下:
- 输入一系列正整数,判断其是否等于1。
- 如果不等于1,则认为该数可以通过某种方式分解。
代码示例如下:
```cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
int ans = 0;
int x;
while (n--) {
cin >> x;
if (x != 1) { // 只要输入的这个数不是1就可以分解
ans++;
}
}
cout << ans << endl;
return 0;
}
```
---
#### 题目二:图形打印
本题涉及通过特定算法生成并打印一个由数字组成的矩形图案。核心在于利用`/`和`%`运算符提取目标数字的不同位,并控制每一行的输出位置偏移量。
代码示例如下:
```cpp
#include <iostream>
using namespace std;
int n = 5202; // 将2025倒序存储为5202以便逐位取模
int tmp = 5202; // 备份初始值用于循环重置
int h, w;
int main() {
cin >> h >> w; // 输入高度和宽度
for (int i = 1; i <= h; ++i) {
int k = i; // 记录当前行为号
while (k > 1) { // 控制每行向左移动的次数
n /= 10;
if (n == 0) n = tmp;
k--;
}
for (int j = 1; j <= w; ++j) {
if (n == 0) n = tmp;
cout << n % 10; // 输出当前最低位
n /= 10; // 移除最低位
}
n = tmp; // 每次结束一行后恢复原始状态
cout << endl;
}
return 0;
}
```
---
#### 题目三:字符串翻转计数
题目描述未完全提供,但从代码推测可能是一个字符串处理问题,目的是统计满足某些条件下的字符对数量。例如,连续相同字符或者含有特殊字符的情况。
代码示例如下:
```cpp
#include <iostream>
using namespace std;
int main() {
string s;
cin >> s;
int cnt = 0;
for (int i = 1; i < s.size(); i++) {
if (s[i] == s[i - 1] || s[i - 1] == '?' || s[i] == '?') { // 判断相邻字符关系
cnt++;
i++; // 跳过下一个字符
}
}
cout << cnt << endl;
return 0;
}
```
---
### 总结
以上展示了部分第16届蓝桥杯C++ C组的典型题目及其实现方法。这些题目主要围绕基础数据结构、简单算法以及字符串操作展开,重点考查选手的基础功底与灵活运用能力[^1][^2][^3]。
阅读全文
相关推荐


















