问题描述
请从键盘读入一个五位整数 n,判断其是否含有数字 5,如果含有数字 5 ,请输出这个 5 位数各个位的和;如果不含数字 5 ,请直接输出这个 5 位数。
比如:输入:12345,就是含有数字 5 ,因此输出 15(1+2+3+4+5=15)。
再比如:输入:12188 ,就不含数字 5,那么直接输出 12188 。
输入
一个五位正整数 n 。
输出
输出一个整数,代表按要求计算的结果。
样例
输入
12345
输出
15
实现
要解决这个问题,我们需要逐步进行以下步骤:
- 从键盘读入一个五位整数
n
。 - 判断这个整数是否含有数字 5。
- 如果含有数字 5,计算并输出这个五位数各个位的和。
- 如果不含数字 5,直接输出这个五位数。
我们可以通过以下步骤实现:
- 将整数
n
转换为字符串,以便逐位检查。 - 遍历字符串的每一位,检查是否包含数字 5。
- 如果包含数字 5,计算各个位的和并输出。
- 如果不包含数字 5,直接输出原数。
下面是实现这个逻辑的 C++ 代码:
#include <iostream>
#include <string>
int main() {
int n;
std::cin >> n;
// 将整数转换为字符串
std::string str = std::to_string(n);
// 检查是否含有数字 5
bool containsFive = false;
int sum = 0;
for (char c : str) {
if (c == '5') {
containsFive = true;
}
sum += c - '0'; // 将字符转换为数字并累加
}
if (containsFive) {
std::cout << sum << std::endl;
} else {
std::cout << n << std::endl;
}
return 0;
}
代码解释
-
输入读取:
int n; std::cin >> n;
从标准输入读取一个整数 n
。
2.转换为字符串:
std::string str = std::to_string(n);
将整数 n
转换为字符串 str
,以便逐位检查。
3.检查是否含有数字 5:
bool containsFive = false;
int sum = 0;
for (char c : str) {
if (c == '5') {
containsFive = true;
}
sum += c - '0'; // 将字符转换为数字并累加
}
遍历字符串 str
的每一位,检查是否包含字符 '5'。同时计算各个位的和。
4.输出结果:
if (containsFive) {
std::cout << sum << std::endl;
} else {
std::cout << n << std::endl;
}
如果包含数字 5,输出各个位的和;否则,输出原数 n
。
样例测试
- 输入:
12345
- 包含数字 5,输出各个位的和:
15
- 包含数字 5,输出各个位的和:
- 输入:
12188
- 不包含数字 5,输出原数:
12188
- 不包含数字 5,输出原数:
通过上述代码和解释,我们可以正确地解决这个问题。