C语言打印范围水仙花数
时间: 2024-12-17 14:17:36 浏览: 13
水仙花数是指一个三位数,其各位数字立方之和等于该数本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
在C语言中,你可以通过遍历从100到999之间的所有整数,检查它们是否满足水仙花数的条件来打印出所有的水仙花数。以下是一个简单的示例程序:
```c
#include <stdio.h>
// 函数定义,用于计算数字各位立方和
int cubeSum(int num) {
int sum = 0;
int temp = num; // 取百位、十位、个位
while (temp != 0) {
int digit = temp % 10;
sum += digit * digit * digit;
temp /= 10;
}
return sum;
}
// 主函数,查找并打印水仙花数
void printNarcissisticNumbers() {
for (int i = 100; i <= 999; ++i) {
if (cubeSum(i) == i) {
printf("%d ", i);
}
}
}
int main() {
printf("水仙花数有:\n");
printNarcissisticNumbers();
return 0;
}
```
当你运行这个程序,它会打印出所有的水仙花数。
相关问题
C语言打印出水仙花数并输出第几朵水仙花
水仙花数(Narcissistic Number),也称为自恋数,是指一个数字等于其各个位上的数字的立方之和。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
在C语言中,你可以创建一个函数来检查一个数是否是水仙花数,然后遍历一定范围内的数字,找出所有的水仙花数并计数。下面是一个简单的示例代码:
```c
#include <stdio.h>
int cube(int num) {
return num * num * num;
}
int is_narcissistic(int n) {
int sum = 0;
int temp = n;
while (temp != 0) {
int digit = temp % 10;
sum += cube(digit);
temp /= 10;
}
return sum == n;
}
void print_narcissists(int start, int end) {
int count = 0;
for (int i = start; i <= end; i++) {
if (is_narcissistic(i)) {
printf("%d 是第%ld朵水仙花\n", i, ++count);
}
}
}
int main() {
int range_start = 100;
int range_end = 999;
print_narcissists(range_start, range_end);
return 0;
}
```
这个程序会在指定范围内找出所有水仙花数,并在每次找到时输出它是第几个水仙花。
C语言打印出水仙花数并输出第几朵水仙花,使用for语句
水仙花数是一种特殊的整数,它的各位数字立方之和等于它本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153。
在C语言中,你可以使用for循环遍历从1到某个范围内的整数,并检查它们是否满足水仙花数的条件。以下是简单的程序示例:
```c
#include <stdio.h>
int is_armstrong(int num) {
int original_num, remainder, sum = 0;
original_num = num;
// 将数字分解成各个位
while (num != 0) {
remainder = num % 10;
sum += remainder * remainder * remainder; // 计算立方和
num /= 10;
}
// 检查是否是水仙花数
return (original_num == sum);
}
void print_narcissistic_numbers(int start, int end) {
for (int i = start; i <= end; ++i) {
if (is_armstrong(i)) {
printf("第%d朵水仙花数是:%d\n", i - start + 1, i);
}
}
}
int main() {
int range_start = 100; // 设定查找范围,通常较小的水仙花数在三位数范围内
print_narcissistic_numbers(range_start, range_start * 10); // 打印100到1000之间的水仙花数
return 0;
}
```
当你运行这个程序,它会打印出100到1000之间所有的水仙花数及其顺序。你可以根据需要调整`range_start`的值来改变查找范围。
阅读全文