C++不变初心数 2025年3月c++二级 电子学会中小学生软件编程C++等级考试二级真题答案解析

C++不变初心数

2025年3月 C++编程等级考试二级真题解析

博主推荐

1、C++专栏 

  1. 电子学会C++一级历年真题解析
  2. 电子学会C++二级历年真题解析
  3. 蓝桥杯C++选拔赛真题解析
  4. 信息素养大赛C++算法编程挑战赛

 2、Python专栏

  1. 蓝桥杯python选拔赛真题详解
  2. 蓝桥杯python省赛真题详解
  3. 蓝桥杯python国赛真题详解
  4. 信息素养大赛python编程挑战赛
  5. python等级一级真题解析【电子学会】
  6. python等级二级真题解析【电子学会】
  7. python等级三级真题解析【电子学会】

一、题目要求

1、编程实现

不变初心数是指这样一种特别的数,它分别乘 2、3、4、5、6、7、8、9 时,所得乘积各位数之和却不变。例如 18 就是这样的数:18 的2倍是 36,3+6=9;18 的3倍是 54,5+4=9;…. 18 的9倍是162,1+6+2=9。对于 18 而言,9 就是它的初心。本题要求你判断任一个给定的数是否有不变的初心。

2、输入输出

输入描述:输入在第一行中给出一个正整数 N(≤100)。随后 N 行,每行给出一个不超过 105 的正整数。

输出描述:对每个给定的数字,如果它有不变的初心,就在一行中输出它的初心;否则输出'NO'

输入样例:
4
18
256
99792
88672

输出样例:
9
NO
36
NO

二、算法分析

  1. 从给定题目的初步分析可以看出,这是一个多组数据处理的案例
  2. 可以循环输入,输入完之后可以判断这个数分别乘以2到9的乘积得到的新的数的每位数字的和值是否是一样的,如果是这个和值就是不忘初心数,否则就输出NO
  3. 所以为了方便可以自定义两个函数,一个是根据输入的数求出乘以2到9的每一位数字并判断是否和值结果相等;另一个是用来计算数字上每个位置上的数之和
  4. 主函数只要判断调用是否相等的函数就可以

三、程序编写

#include<iostream>
using namespace std;
int sum(int n){
	int s = 0;
	while(n){
		s += n % 10;
		n /= 10;
	}
	return s;
}
int isOk(int k){
	int s = sum(k * 2);
	for(int i = 3;i < 10;i++){
		if(s != sum(k * i))
			return -1;
	}	
	return s;
}
int main(){
	int n;
	cin >> n;
	while(n){
		int t,res;
		cin >> t;
		res = isOk(t);
		if(res == -1)
			cout << "NO" << endl;
		else
			cout << res << endl;
		n--;
	}

	return 0;
}

 本文作者:小兔子编程 作者首页:https://blog.csdn.net/frank2102

四、运行结果

4

18
9

256
NO

99792
36

88672
NO

五、考点分析

难度级别:中等,这题相对而言在于数字处理,具体主要考察如下:

  1. 分析题目 找到解题思路
  2. 充分掌握自定义函数的定义和使用
  3. 学会输入流对象cin的使用,从键盘读入相应的数据
  4. 学会多组数据的输入和处理
  5. 学会for循环的使用,在确定循环次数的时候推荐使用
  6. 学会while循环的使用,在不确定循环次数的时候推荐使用
  7. 学会if条件判断语句的使用,满足一定条件才能执行后面的语句
  8. 学会if...else...双分支语句的使用,条件满足执行一种处理,不满足执行另一种处理
  9. 掌握输出流对象cout的使用,与流插入运算符 << 结合使用将对象输出到终端显示
  10. 学会分析题目,算法分析,将复杂问题模块化,简单化,从中找到相应的解题思路
  11. 充分掌握自定义函数、分支语句、循环语句和简单算法知识的使用及输入输出的用法

PS:方式方法有多种,小朋友们只要能够达到题目要求即可!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小兔子编程

您的鼓励是我创作优质案例的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值