c程求水仙花数程序

c程求水仙花数程序,第1张

说说你的思路和想达到的目的,下面是正确的代码,你参考一下

#include<stdioh>

int main(void)

{

int i,j,k,n;

for(i=1;i<10;i++)

for(j=0;j<10;j++)

for(k=0;k<10;k++)

{

n=i100+j10+k;

if((i100+j10+k)==((iii)+(jjj)+(kkk)))

printf("水仙花数为:%d\n",n);

}

}

思路挺好,要注意的是x既然作为for循环控制变量,那么在循环体里边就不要改变x,正确代码如下:

#include <stdioh>

int main (void)

{

int x,y,i;

int sum = 0;

for(x=100; x<1000; x++)

{

y = x;

sum = 0;

for(i=1; i<=3; i++)

{

sum +=( (y%10)(y%10)(y%10) );

y/=10;

}

if(sum == x)

printf("%5d", x);

}

getchar();

return 0;

}

按照你的要求编写的C++水仙花数程序如下

#include <iostream>

using namespace std;

int main()

{

int i,a,b,c;

for(i=100;i<1000;i++){

a=i/100;

b=i/10%10;

c=i%10;

if(i==aaa+bbb+ccc){

cout<<i<<endl;

}

}

return 0;

}

运行结果

C#,使用Net6编写:

//水仙花数的搜索范围var index = 100; //因为水仙花数要求三位及以上,所以从100开始var end = 10000;

//循环主体 如上则范围为 [1,10000] 内寻找for (; index <= end; index++) {

//通过 log10 可以取得该数字的位数长度    int dg = (int)MathLog10(index) +1; //将 log10 的位数向下取整保留进制数量的整数(+1是因为后续包含个位数)    //将每一位转换成数字(不使用 string 中 char 转 int,纯数字转换)    var sum = 0; //分位累加器    var digits = new int[dg]; //创建一个用于单独储存每一位的    for(int i = dg; i > 0; i--)

{

var x = index - sum; //用于舍去高位,见 P1        int dplace = (int)MathPow(10, i-1); //当前位数的值,如 1,10,100,1000        var p = x / dplace; //当前位的值        sum += dplace  p; //将前边已经取得的位计入累加用于在后续舍去(P1)        digits[dg - i] = p; //将位数加在累加器上    }

//判断该数字是否符合条件    var nn = 0;

foreach(var d in digits)

{

nn += (int)MathPow(d, dg); //所有位 的位数幂 求和    }

if(nn == index) //当所有位的位数幂的和等于这个数本身时返回结果    {

ConsoleWriteLine($"{index} 是水仙花数");

}

}

以上就是关于c程求水仙花数程序全部的内容,包括:c程求水仙花数程序、水仙花数的程序……小白求教、怎么用C++写水仙花数呀等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9503668.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存