如何用c语言循环语句打印所有水仙花数
时间: 2024-10-28 10:06:52 浏览: 19
水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。在C语言中,你可以使用嵌套循环结构遍历所有的三位数,并检查它们是否满足水仙花数的条件。以下是简单的代码示例:
```c
#include <stdio.h>
// 检查是否为水仙花数
int is narcissistic(int num) {
int sum = 0;
int temp = num; // 临时保存num防止进位影响
while (temp != 0) {
int digit = temp % 10;
sum += digit * digit * digit; // 计算每一位立方
temp /= 10;
}
return sum == num; // 如果sum等于原数,则是水仙花数
}
int main() {
for (int i = 100; i <= 999; ++i) { // 遍历100到999范围内的数字
if (is_narcissistic(i)) {
printf("%d 是一个水仙花数。\n", i);
}
}
return 0;
}
```
相关问题
用c语言循环语句求1000以内水仙花数之和
水仙花数是指一个三位数,其各位数字立方之和等于该数本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
用C语言求1000以内所有水仙花数之和,可以使用嵌套循环来遍历每个三位数,并检查是否为水仙花数。以下是简单的步骤:
```c
#include <stdio.h>
int is_armstrong_number(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;
}
int main() {
int total_sum = 0;
for (int i = 100; i <= 999; i++) { // 遍历100到999
if (is_armstrong_number(i)) {
total_sum += i; // 如果是水仙花数,加入总和
}
}
printf("1000以内所有水仙花数的和是:%d\n", total_sum);
return 0;
}
```
c语言打印所有水仙花数
以下是两种C语言打印所有水仙花数的例子:
1. 使用for循环和if语句判断是否满足水仙花数的特点
```c
#include<stdio.h>
int main() {
int bai, shi, ge;
int i, j=0;
printf("水仙花数有:\n");
for (i = 100;i < 1000;i++) {
bai = i / 100; //取百位数字
shi = (i % 100) / 10;//取十位数字
ge = i % 10; //取个位数字
if (i == bai * bai * bai + shi * shi * shi + ge * ge * ge)//判断是否满足水仙花数的特点
{
printf(" %d ", i);
j++;
if (j % 5 == 0)//每五个数字一行
printf("\n");
}
}
return 0;
}
```
2. 使用for循环和数学库中的pow函数计算立方和
```c
#include<stdio.h>
#include<math.h>
int main() {
int i,sum;
printf("水仙花数有:");
for(i=100;i<1000;i++) {
sum=(i/100)*(i/100)*(i/100)+(i%100/10)*(i%100/10)*(i%100/10)+(i%100%10)*(i%100%10)*(i%100%10);
if(i==sum) {
printf("%d\n",sum);
}
}
return 0;
}
```
阅读全文