(C语言3)三位数的水花仙数输出

 题解:

#include<stdio.h>
int main()
{
    for(int i=100;i<=999;i++)
    {
        if(i==(i/100)*(i/100)*(i/100)+((i%100)/10)*((i%100)/10)*((i%100)/10)+(i%10)*(i%10)*(i%10))
        {
            printf("%d\n",i);
        }
    }
	return 0;
}

分析:

其实只需要将一个三位数分解出来然后乘以立方。

因为 int 是整形;所以( i /100 )也是整形,c语言的除是直接取整的,不是四舍五入;

首先分离百位出来:( i / 100 )然后立方;

分离十位:先( i % 100)取余,取余后会得到一个两位数,然后再 / 10 ,即可得到两位数的 十单位上的数,然后立方;

同理再分离个位数出来:各位数就直接是一个三位数( i %10 )即可取余得到个位数,然后立方

最后加起来即可,也就是上面的

i==(i/100)*(i/100)*(i/100)+((i%100)/10)*((i%100)/10)*((i%100)/10)+(i%10)*(i%10)*(i%10)

再配合一个累加的 for 语句和 if 即可实现。

本题来自C语言网的 题号1016

猜你喜欢

转载自blog.csdn.net/a871923942/article/details/130652143