如何编写一个程序来判断一个正整数n是否为仅由数字4和7组成的幸运数?如果满足条件,输出'YES',否则输出'NO',要考虑输入限制为正整数且不包括零和负数的情况?不考虑溢出或者超出整形的范围
时间: 2024-12-14 22:13:40 浏览: 7
要编写一个程序来判断一个正整数 `n` 是否只包含数字4和7,你可以使用循环遍历每一位数字并检查其是否为4或7。以下是一个简单的 C++ 代码示例:
```cpp
#include <iostream>
bool isLuckyNumber(int n) {
while (n != 0) {
int digit = n % 10; // 取个位数
if (digit != 4 && digit != 7) {
return false; // 如果不是4或7,返回false
}
n /= 10; // 移除个位后缩小十倍
}
return true; // 数字全为4或7,返回true
}
int main() {
int num;
std::cout << "Enter a positive integer without zero or negative numbers: ";
std::cin >> num;
if (num <= 0 || num > INT_MAX) {
std::cerr << "Invalid input! Please enter a valid positive integer." << std::endl;
return 1; // 输入错误处理
}
if (isLuckyNumber(num)) {
std::cout << "YES" << std::endl;
} else {
std::cout << "NO" << std::endl;
}
return 0;
}
```
在这个程序中,`isLuckyNumber` 函数接受一个整数,通过取余数操作检查每位数字,然后除以10更新原数。主函数中首先验证输入的有效性,接着调用该函数并根据结果输出相应的信息。
阅读全文