目录
C++判断数字
一、题目要求
1、编程实现
2、输入输出
二、算法分析
三、程序编写
四、程序说明
五、运行结果
六、考点分析
七、推荐资料
C++判断数字
第十四届蓝桥杯青少年创意编程大赛C++选拔赛真题
一、题目要求
1、编程实现
给定一个正整数N(100≤N<100000),统计出100到N(包含100和N)之间的正整数中,有多少个正整数满足以下条件
1)正整数个位数不为3;
2)正整数十位数不为5;
3)正整数百位数不为7。
2、输入输出
输入描述:只有一行,一个正整数N(100≤N<100000)
输出描述:只有一行,一个整数,即100到N(包含100和N)之间有多少个正整数满足条件
输入样例:
110
输出样例:
10
二、算法分析
- 从给定题目的初步分析可以看出,本题主要是要将多位数拆解出对应的个位、十位和百位
- 然后将拆解出来的每一位和题目已知条件进行逐一匹配,满足条件的个数累加
- 同时需要从100到输入的数字逐位按上面的方式进行拆解匹配,可以用循环实现
三、程序编写
#include <iostream>
using namespace std;
int main()
{
int n, res;
cin >> n;
res = 0;
for (int i = 100; i <= n; i++)
{
int a = i % 10;
int b = i / 10 % 10;
int c = i / 100 % 10;
if (a != 3 && b != 5 && c != 7)
res++;
}
cout << res;
return 0;
}
四、程序说明
- 首先需要导入输入输出流头文件
- 接着再次导入输入输出流格式控制头文件
- 然后是引入std命名空间中的所有成员到当前的程序中,这样在当前的程序中就可以直接使用 std 命名空间中的所有成员,而不需要使用的时候在成员前面加上(std::)前缀
- 在主函数中定义了三个变量n、res,并且使用cin输入了变量n的值
- 在循环部分,使用for循环,循环变量i从100开始递增,直到i小于等于n为止
- 在每次循环中,将i分别除以10取余数得到个位数a,除以10取余数再除以10得到十位数b,除以100得到百位数c
- 如果a、b、c三个数中任意一个不等于3、5或7,那么将res累加1
- 循环结束后,输出res的值
- 最后返回0,程序结束
本文作者:小兔子编程 作者首页:https://blog.csdn.net/frank2102
五、运行结果
110
10
六、考点分析
难度级别:一般,这题相对而言还是比较简单的,具体主要考查如下:
- 充分掌握变量的定义和使用
- 学会输入流对象cin的使用,从键盘读入相应的数据
- 学会利用除法和取余运算将一个多位数进行逐位拆解
- 学会for循环的使用,在确定循环次数的时候推荐使用学会
- 学会while循环的使用,在不确定循环次数的时候推荐使用
- 学会if条件判断语句的使用,满足一定条件才能执行后面的语句
- 学会if...else...双分支语句的使用,条件满足执行一种处理,不满足执行另一种处理
- 掌握输出流对象cout的使用,与流插入运算符 << 结合使用将对象输出到终端显示
- 学会分析题目,算法分析,将复杂问题模块化,简单化,从中找到相应的解题思路
- 充分掌握变量定义和使用、分支语句、循环语句和简单算法知识的使用及输入输出的用法
PS:方式方法有多种,小朋友们只要能够达到题目要求即可!
七、推荐资料
- 所有考级比赛学习相关资料合集【推荐收藏】