编写程序,输出所有三位水仙花数。每行输出一个水仙花数。C语言
时间: 2025-01-12 17:54:15 浏览: 22
在C语言中,水仙花数是指一个三位数,其各位数字立方之和等于该数本身的数。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153。下面是一个简单的C程序,它会遍历100到999之间的所有整数,检查它们是否是水仙花数,并将找到的数打印出来。
#include <stdio.h>
int main() {
int num;
for (num = 100; num <= 999; num++) {
int digits[3], sum = 0;
// 分离出百位、十位和个位
digits[0] = num / 100;
digits[1] = (num % 100) / 10;
digits[2] = num % 10;
// 计算每位数字的立方并累加
sum += digits[0] * digits[0] * digits[0];
sum += digits[1] * digits[1] * digits[1];
sum += digits[2] * digits[2] * digits[2];
// 检查是否为水仙花数
if (sum == num) {
printf("%d\n", num);
}
}
return 0;
}
相关问题
c语言若一个三位数等于其各位上数字的立方和,则称这个三位数为水仙花数。编写一个程序,输出所有的水仙花数。 输入格式: 无输入 输出格式: 按照从小到大的顺序输出所有水仙花数,一行输出一个数。
#include <stdio.h>
int main() { int i, j, k, n; for (n = 100; n < 1000; n++) { i = n / 100; // 获取百位数字 j = n / 10 % 10; // 获取十位数字 k = n % 10; // 获取个位数字 if (n == iii + jjj + kkk) { printf("%d\n", n); } } return 0; }
帮我用c语言编写程序,输出给定正整数M和N区间内的所有三位水仙花数。三位水仙花数,即其个位、十位, 百位数字的立方和等于该数本身。 输入格式: 输入在一行中给出两个正整数M和N(100≤M≤N≤999)。 输出格式: 顺序输出M和N区间内所有三位水仙花数,每一行输出一个数。若该区间内没有三位水仙花数,则无输出。 如果M或者N不符合题目的要求,则输出玉nvaliaValue:。
好的,以下是C语言代码实现:
#include <stdio.h>
#include <math.h>
int main()
{
int m, n;
scanf("%d %d", &m, &n);
if(m < 100 || n > 999 || m > n)
{
printf("nvaliaValue:\n");
return 0;
}
int i;
for(i = m; i <= n; i++)
{
int a = i / 100; // 获取百位数
int b = i / 10 % 10; // 获取十位数
int c = i % 10; // 获取个位数
if(i == pow(a, 3) + pow(b, 3) + pow(c, 3)) // 判断是否为水仙花数
{
printf("%d\n", i);
}
}
return 0;
}
代码中,我们通过 scanf
函数获取输入的两个正整数 m
和 n
,并通过 if
语句进行判断,如果不符合题目要求则直接输出 nvaliaValue:
并结束程序。接着,我们通过一个 for
循环遍历区间 [m, n]
中的所有数,分别获取其百位数、十位数和个位数,并判断是否为水仙花数,如果是则输出该数。
注意在计算立方和时,我们可以使用 pow
函数,该函数位于 math.h
头文件中,需要在程序中加入头文件才能使用。
相关推荐
















