蓝桥题库每日一练 · 2026.09.15

9月15日 输入一个 2~1000 之间的自然数 n,输出所…

C++编程题参考难度 ★★★☆☆蓝桥杯第十一届 选拔赛 · 已用
输入一个 2~1000 之间的自然数 n,输出所有小于 n 且数字中含有「3」的数。不分行、连续显示,相邻两数之间隔 2 个空格(最后一个数后面不加空格)。样例:n=36 → 3 13 23 30 31 32 33 34 35。
样例
输入 36输出 3 13 23 30 31 32 33 34 35
评分标准
  • 30 分:至少对一个随机输入用例能给出正确输出(格式不限)
  • 50 分:完全符合题意,所有输入用例都正确、格式完全符合
参考解法
要找出「小于 n、并且数字里含有 3」的所有数。分两步:一是从 1 挨个数到 n−1(这是 8 月常用的「循环 + 计数」老套路);二是对每个数,判断它含不含数字 3。

怎么看一个数含不含 3?把它的每一位拆出来看:不停地「对 10 取余数」就能拿到最后一位,再「除以 10」把最后一位抹掉,一位一位检查,只要有一位是 3,就算含 3。(8 月 17 日 Scratch 报数用「包含 3」一眼就能看出来。C++ 其实也能把数变成一串字符再去查找,不过这题咱们练最基本的拆位法。)

输出还有个小讲究:两个空格是夹在「相邻两数之间」的,最后一个数后面不该有。办法是用一个标记 first 记住「是不是第一个」:第一个数直接输出;从第二个数起,先输出两个空格,再输出这个数。

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n; cin >> n;
    bool first = true;                   // 还没输出过数……

看此题详解,练更多题目,进入蓝桥题库每日一练 →

此答案或解析由 AI 生成,请谨慎使用。
难度依赛考组别及等考级别粗略评估,仅供参考。