我们需要编写一个C语言程序来找出100到499之间的所有水仙花数,并将它们存储在数组a中,然后以每行3个元素的形式打印输出。水仙花数是指一个三位数,其各位数字的立方和等于该数本
时间: 2024-11-29 19:35:47 浏览: 17
在C语言中,我们可以创建一个程序来找出并处理这个任务。首先,我们需要编写一个函数`is_armstrong`来检查一个数字是否是水仙花数。然后,遍历指定范围内的每个数,将其存储在数组`a`中,最后按照每行3个元素的方式打印出来。以下是实现这个功能的步骤:
```c
#include <stdio.h>
// 检查一个数是否是水仙花数的函数
int is_armstrong(int num) {
int sum = 0, original_num, remainder;
original_num = num; // 保留原始数用于计算
while (original_num > 0) {
remainder = original_num % 10;
sum += remainder * remainder * remainder; // 计算各位立方和
original_num /= 10;
}
return (sum == num); // 如果和等于原数,则返回1,否则返回0
}
int main() {
const int start = 100, end = 499;
int a[15] = {0}; // 初始化数组,最多能储存3个整行
int count = 0;
for (int i = start; i <= end; ++i) {
if (is_armstrong(i)) {
a[count++] = i; // 存储水仙花数
if (count == 3 || i == end) { // 打印数组内容
for (int j = 0; j < count; ++j) {
printf("%d ", a[j]);
}
printf("\n"); // 行结束符
count = 0; // 重置计数器
}
}
}
return 0;
}
```
在这个程序中,我们首先确定了开始和结束值,接着初始化一个数组`a`来保存找到的水仙花数。主循环检查每个数是否是水仙花,如果是就存入数组,并在达到每行3个数后打印一行。注意,数组大小预估为最多能存储3个完整行。
阅读全文