目录
C/C++寻找特殊年号
一、题目要求
1、编程实现
2、输入输出
二、算法分析
三、程序编写
四、程序说明
五、运行结果
六、考点分析
C++寻找特殊年号
2023年3月 C++编程等级考试一级编程题
一、题目要求
1、编程实现
年号中的每个数之和为20的年号是特殊年号。例如: 2099、1991、1892是特殊的年号,而2021则不是。给定一个年号,找出严格大于给定年号的最小特殊年号。
2、输入输出
输入描述:只有一行,共1个整数,年号y(1000<=y<=9999)
输出描述:只有一行,一个整数,即特殊年号: 严格意义上大于y的最小年号,并且它的每个数之和为20.
输入样例:
1892
输出样例:
1919
提示
因为1+9+1+9=20,所以1919是特殊年号。特殊年号可能大于9000。
二、算法分析
- 从给定题目的初步分析可以看出,这题其实是一个循环嵌套题型
- 核心思想在于如何取出四位数的每一位数字,然后将每位数字求和跟20进行比较
- 符合要求的就是我们的最小特殊年份
- 取出4位数的每一位方法也可以有多种,小兔子老师这里采用的是while进行循环取数
三、程序编写
#include<iostream>
using namespace std;
int main()
{
int y;
cin >> y;
for(int i=y+1;i<=9999;i++)
{
int t=i,s = 0;
while(t)
{
s += (t % 10);
t /= 10;
}
if(s == 20)
{
cout << i << endl;
break;
}
}
return 0;
}
四、程序说明
- 首先需要导入输入输出流头文件
- 然后是引入std命名空间中的所有成员到当前的程序中,这样在当前的程序中就可以直接使用 std 命名空间中的所有成员,而不需要使用的时候在成员前面加上(std::)前缀
- 接着声明程序的入口,也就是主函数(主函数在一个程序中只允许出现一次)
- 根据题目要求声明一个整形变量y
- 然后利用输入流对象cin,从键盘读取这个变量的值
- 接着利用for循环依次从y+1遍历到9999
- 接着在声明两个局部变量t=i,s四位数字的和值
- 然后利用if条件判断语句判断s是否等于20,如果是利用输出流对象cout,输出i值即可
- 最后返回0,程序结束
本文作者:小兔子编程 作者首页:https://blog.csdn.net/frank2102
五、运行结果
1892
1919
六、考点分析
难度级别:容易,这题相对而言还是比较简单的,具体主要考查如下:
- 充分掌握变量的定义和使用
- 学会输入流对象cin的使用,从键盘读入相应的数据
- 学会如何将一个多位数的每一位数字进行剥离取数
- 学会for循环的使用,在确定循环次数的时候推荐使用学会
- 学会while循环的使用,在不确定循环次数的时候推荐使用
- 学会if条件判断语句的使用,满足一定条件才能执行后面的语句
- 掌握输出流对象cout的使用,与流插入运算符 << 结合使用将对象输出到终端显示
- 学会分析题目,算法分析,将复杂问题模块化,简单化,从中找到相应的解题思路
- 充分掌握变量定义和使用、分支语句、循环语句和简单算法知识的使用及输入输出的用法
PS:方式方法有多种,小朋友们只要能够达到题目要求即可!