用C语言编写一个程序,利用参数传入一个3位数n,找出101~n间所有满足下列两个条件的数:它是完全平方数,又有两位数字相同,如144、676等。
时间: 2024-12-14 09:28:10 浏览: 12
下面是一个用 C 语言编写的程序,用于找出并打印出所有的三位水仙花数
你可以使用C语言编写一个简单的循环结构来完成这个任务。下面是一个示例程序:
```c
#include <stdio.h>
#include <math.h>
// 检查是否为完全平方数
int is_perfect_square(int num) {
int root = sqrt(num);
return (root * root == num);
}
// 检查是否有两位数字相同
int has_duplicate_digits(int num) {
int str_num[10], len = 0;
while (num > 0) {
str_num[len++] = num % 10;
num /= 10;
}
for (int i = 0; i < len - 1; i++) {
if (str_num[i] == str_num[i + 1]) {
return 1;
}
}
return 0;
}
void find_numbers(int n) {
for (int i = 101; i <= n; ++i) {
if (is_perfect_square(i) && has_duplicate_digits(i)) {
printf("%d ", i); // 打印找到的数
}
}
}
int main() {
int n;
printf("Enter a 3-digit number: ");
scanf("%d", &n);
if (n >= 101 && n <= 999) {
find_numbers(n);
} else {
printf("Invalid input! Please enter a 3-digit number.\n");
}
return 0;
}
```
这个程序首先定义了两个辅助函数 `is_perfect_square` 和 `has_duplicate_digits` 分别用于检查一个数是否是完全平方数以及是否有相同的两位数字。然后在主函数 `find_numbers` 中遍历从101到输入的3位数之间的每一个数,并通过这两个函数判断是否符合条件。
运行这个程序时,它会提示用户输入一个3位数,然后列出所有在这个范围内的同时满足既是完全平方数又有一位数字重复的数。
阅读全文