编写程序,按从小到大的顺序寻找同时符合条件 1 和 2 的所有 3 位数,条件为: 1、该数为完全平方数; 2、该数至少有 2 位数字相同。 例如:100 同时满足上面两个条件。(用c语言)
时间: 2024-12-16 13:30:39 浏览: 15
在C语言中,编写一个程序来找到同时满足条件1(完全平方数)和条件2(至少有两个相同的数字)的三位数,你可以采用以下步骤:
1. 定义一个函数`isPerfectSquare()`来检查是否一个数是完全平方数,可以利用数学公式 `sqrt(n)` 计算其平方根并取整进行比较。
2. 创建一个循环,从100到999遍历每一位数,因为范围内的三位数只有999。
3. 对于每个三位数,先拆分成百位、十位和个位的数字,然后检查它们是否满足条件2(至少有两个相同)。这可以通过计数相同数字的数量来实现。
4. 如果满足条件2,再调用`isPerfectSquare()`函数检查这个数是否是完全平方数。
下面是一个简单的C语言实现示例:
```c
#include <stdio.h>
#include <math.h>
// 判断一个数是否为完全平方数
int isPerfectSquare(int num) {
int root = sqrt(num);
return (root * root == num);
}
// 检查是否有两个相同的数字
int hasTwoSameDigits(int num) {
int count[10] = {0}; // 初始化一个数组存储每位数字出现次数
int same_digits = 0;
while (num > 0) {
count[num % 10]++;
if (count[num % 10] >= 2) {
same_digits++;
}
num /= 10;
}
return same_digits >= 2;
}
// 主函数
void findNumbers() {
for (int i = 100; i <= 999; ++i) {
if (isPerfectSquare(i) && hasTwoSameDigits(i)) {
printf("%d ", i); // 打印满足条件的数字
}
}
}
int main() {
findNumbers();
return 0;
}
```
当你运行这个程序,它会输出满足条件的三位数,如例子所示:100 121 370 385 676 729 等等。
阅读全文