用c++编写一个函数,不用主函数,要求:我们认为一个数字是7 好数,当且仅当它的开头和结尾都是7 给定一个正整数 n,其中n的取值范围是[1,10的五次方],请问中[1-n]中有多少个7好数。
时间: 2024-10-28 14:06:54 浏览: 14
用C++编写一个教师和学生数据的输入和显示程序
在 C++ 中,你可以编写一个名为 `count_sevens` 的函数,这个函数接受一个整数 `n` 作为参数,然后遍历从 1 到 `n` 范围内的所有整数,检查它们是否满足既是7的倍数又是前后两个数字都是7的条件。以下是这个函数的一个示例实现:
```cpp
#include <iostream>
#include <vector>
bool is_seven_palindrome(int num) {
std::string str = std::to_string(num);
return str.size() >= 2 && str.front() == '7' && str.back() == '7';
}
int count_sevens(int n) {
int count = 0;
for (int i = 1; i <= n; ++i) {
if (is_seven_palindrome(i)) {
++count;
}
}
return count;
}
int main() {
// 主函数只是为了演示如何调用上面的函数
int n = 1e5; // 可以调整n的范围 [1, 1e5]
int result = count_sevens(n);
std::cout << "在[1, " << n << "]范围内有 " << result << " 个7好数.\n";
return 0;
}
```
在这个例子中,我们首先定义了一个辅助函数 `is_seven_palindrome` 来检查一个数字是否是一个7好数,然后在 `count_sevens` 函数中计算符合条件的数字数量。注意,由于题目要求不使用主函数,所以这里用一个简单的 `main` 函数只是为了展示如何调用函数。实际使用时,可以直接调用 `count_sevens`。
阅读全文