C语言输出0-1000以内的水仙花数 水仙花数算法:一个数=它各位的立方和,例如:153= 1*1*1 + 5*5*5 + 3*3*3 提示:for循环,求余(%)、取整(/)运算符
时间: 2023-10-21 11:29:04 浏览: 109
好的,以下是C语言代码示例:
#include <stdio.h>
int main() {
int num, i, j, k;
for (num = 0; num <= 1000; num++) {
i = num / 100; // 取百位数
j = num / 10 % 10; // 取十位数
k = num % 10; // 取个位数
if (num == i * i * i + j * j * j + k * k * k) { // 判断是否为水仙花数
printf("%d\n", num);
}
}
return 0;
}
这段代码会从0开始循环到1000,对于每一个数,分别取其百位、十位和个位,计算它们的立方和并判断是否等于该数本身。如果等于,则输出该数。最后达到输出0-1000以内的水仙花数的目的。
相关问题
用c语言 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为。
在C语言中,可以编写一个小程序来找出所有的水仙花数。这里是一个简单的算法实现:
#include <stdio.h>
// 函数定义,检查一个数是否是水仙花数
int is narcissistic(int num) {
int sum = 0;
int temp = num;
while (temp != 0) {
int digit = temp % 10;
sum += digit * digit * digit;
temp /= 10;
}
return sum == num;
}
// 主函数,遍历并打印所有三位水仙花数
int main() {
for (int i = 100; i <= 999; ++i) { // 遍历从100到999的所有三位数
if (is_narcissistic(i)) { // 如果是水仙花数,就打印出来
printf("%d ", i);
}
}
return 0;
}
在这个程序里,我们首先定义了一个is_narcissistic
函数,计算给定数字每一位的立方和并与原数比较。然后在主函数中,通过一个for循环遍历所有三位数,并调用这个函数判断是否为水仙花数。
运行此程序会输出所有的水仙花数:153, 370, 371, 407。
以下c语言程序是输出所有的水仙花数。所谓水仙花数是一个三位数,其各位数字的立方和等于该数本身,用两种算法
实现。
算法一:
#include <stdio.h>
int main()
{
int i, j, k;
for(i=1; i<=9; i++)
{
for(j=0; j<=9; j++)
{
for(k=0; k<=9; k++)
{
if(i*i*i + j*j*j + k*k*k == i*100 + j*10 + k)
{
printf("%d ", i*100 + j*10 + k);
}
}
}
}
return 0;
}
算法二:
#include <stdio.h>
#include <math.h>
int main()
{
int i;
for(i=100; i<=999; i++)
{
int a = i / 100;
int b = (i / 10) % 10;
int c = i % 10;
if(pow(a, 3) + pow(b, 3) + pow(c, 3) == i)
{
printf("%d ", i);
}
}
return 0;
}
两种算法的思路都是一样的,都是枚举三位数,然后将每个数的个位、十位、百位分离出来,计算其立方和,判断是否等于原数。第一种算法使用了三重循环,第二种算法使用了数学库中的 pow 函数来计算立方,但是可能会影响程序的效率。
相关推荐













