当前位置:懂科普 >

IT科技

> c语言如何学习:【3】求水仙花数

c语言如何学习:【3】求水仙花数

第21课计算水仙花数授课人:杨鹏高中信息技术必修2:算法与程序设计1.寻找水仙花数。水仙花数是指这样的三位整数,其各个位上的数之立方和恰好等于该数自己,例如371,是水仙花数,因为371=33+73+13,设计一个算法寻找出所有的水仙花数。2.寻找玫

水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153),下面我就简单介绍下如何求水仙花数

c语言如何学习:【3】求水仙花数

材料/工具

电脑

方法

方法一

#include <stdio.h>

所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身,例如153是“水仙花数”,因为:153 = 1^3 + 5^3+ 3^3 。 下面是完整的C语言编程代码: 运行结果:result is:153 370 371 407 扩展资料 常见水仙花数 水仙花数又称阿姆斯特朗数。

#include <math.h>

1、首先需要打开Dev-c++软件,点击“新建源代码”。 2、然后按照如图所示填写代码。 3、其中:a表示的是水仙花数的百位数,b表示的是水仙花数的十位数,c表示的是水仙花数的个位数,sum表示的是所有累加下来的水仙花数。 4、if(sum==a*a*a+b*b*b+c

int main()

#include #include void main() { int i,j,k,n; printf("'water flower'number is:"); for(n=100;n

{

int i,m,sum;

#include int main() { int start, end, i = 0, a, b, c, size = 0; while (scanf("%d %d", &start, &end) == 2) { for (i = start; i

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

#include #include main () { double i=10,j,k,n,m,l; printf("intpu X");//输入界限就是多少以内的水仙花数 scanf(%lf,&k); for (;i

{

sum=0;

在for语句包含了对i进行赋值“i=100”,当你将“a=i/100;b=(i-100*a)/10;c=i%10;”提到for语句前,i由于没有初始值,i/100的操作就会报错,则语句就会出错

m=i;

do

{

sum=sum+pow(m%10,3);//pow(a,b)是指a的b次幂是double型的

方法:先弄懂什么是水仙花数:: 水仙花数是指一个n(>=3)位数字的数,它等于每个数字的n次幂之和。 3位水仙花数————先定义3个数其中一个为1--9;2个为0--9;(用for循环) 再用如果a定义为1--9那么用100*a来表示百位;如果b或者c定义是0--9

m=m/10;

水仙花数是指一个 n 位数 ( n≥3 ),每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)。 所以可以依次通过模除求得每个位上的值,然后做n次幂后相加,再判断是否与本身相等,从而得到是否为水仙花数的结论。 以求所有三位

}

while(m!=0);

#include #include int main() { for(unsigned int i = 100; i 0; j /= 10) { c += (unsigned int)pow(j % 10, b); } if (c == i) { printf("%dn", c); } } return 0; } 想要更大的数可以用 __int64 类型,那样 pow() 函数支持不了那么大的,得

if(sum==i)

1000以内的水仙花数: #include int main(){ int i,j,k; for(i=1;i

printf("%d ",i);

在第一个for循环前面给s赋值时,a、b、c的值没有初始化,所以整个s=100*a+10*b+c是不确定的值,程序运行便会出错! 建议修改:将语句s=100*a+10*b+c放到条件语句if(s==(a*a*a+b*b*b+c*c*c))之前,这样s得到的是确定值,程序运行正常。 修改后源

}

printf("n");

先弄懂什么叫水仙花数。水仙花数就是一个三位数,它的个位十位和百位的数的立方加起来和还是这个数,就是水仙花数! 例如:153=1*1*1 + 5*5*5 + 3*3*3 你的想法。。。是对的~ 源码: #include #include int sxh(int i) { if (((i/100)*(i/100)*(

return 0;

0842-水仙花数(循环)时间:1000毫秒内存:32768K字节总提次数:1273次成功提交次数:633次判题规则:严格比较问题描述春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:“水仙花数”是指一个三位数,它的各

}

运行结果:

153 370 371 407

#include using namespace std; int fun(int n) { if (n==1) return 10; else return (10*fun(n-1)); } int num(int n,int a) { if (n==1) return a; else return (a*num(n-1,a)); } void shuixianhua(int n) { int i,j,c; for (i=fun(n-1);i0)

Press any key to continue

楼主你好~~ 按照你的程序,你可能对于水仙话数有误解 首先,水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153或3^3+7^3+0^3=370) 注意:是每个 位上 的数字。 而你的原代码写的

c语言如何学习:【3】求水仙花数 第2张

方法二

#include <stdio.h>

所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身,例如153是“水仙花数”,因为:153 = 1^3 + 5^3+ 3^3 。 下面是完整的C语言编程代码: 运行结果:result is:153 370 371 407 扩展资料 常见水仙花数 水仙花数又称阿姆斯特朗数。

int main()

#include #include void main() { int i,j,k,n; printf("'water flower'number is:"); for(n=100;n

{

int i,j,k,n;

用for不是更简单吗?下面给你两种方法: # include void main () { int i,j,k; for(i=1;i

printf("水仙花数:",n);

方法:先弄懂什么是水仙花数:: 水仙花数是指一个n(>=3)位数字的数,它等于每个数字的n次幂之和。 3位水仙花数————先定义3个数其中一个为1--9;2个为0--9;(用for循环) 再用如果a定义为1--9那么用100*a来表示百位;如果b或者c定义是0--9

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

C语言的"水仙花数"代码 main(){ int i,j,k; for(i=1;i

{

i=n/100;

#include int main() { int i; for( i=100; i

j=(n-i*100)/10;

#include "stdio.h" #include "math.h" void shuixianhua() {//水仙花数 int i,m=3,sum,count=0,temp; printf("水仙花数:n"); for(i=100;i

k=n-i*100-j*10;

#include #include void main() { int i,j,k,n,c=0; for(n=999;n>=100;n--) { i=n/100;/*分解出百位*/ j=n/10%10;/*分解出十位*/ k=n%10;/*分解出个位*/ if(n==i*i*i+j*j*j+k*k*k) { c++; if(c==2) break; } } printf("%dn",n); }

if(n==i*i*i+j*j*j+k*k*k)

//提示:153 370 371 407 是水仙花数 #include void main() { int i,j,k,n; printf("请输入一个三位整数n"); scanf("%d",&n); i=n/100; /*分解出百位*/ j=n/10%10; /*分解出十位*/ k=n%10; /*分解出个位*/ if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

printf("%dn ",n);

#include int main() {int a,b,c; for(a=1;a

}

return 0;

0842-水仙花数(循环)时间:1000毫秒内存:32768K字节总提次数:1273次成功提交次数:633次判题规则:严格比较问题描述春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:“水仙花数”是指一个三位数,它的各

}

结果:

水仙花数:153

首先你需要引入头文件math.h;然后下面是代码:int n=1000,num=0; //num代表水仙花数个数while(n

370

371

407

c语言如何学习:【3】求水仙花数 第3张

方法三

#include <stdio.h>

所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身,例如153是“水仙花数”,因为:153 = 1^3 + 5^3+ 3^3 。 下面是完整的C语言编程代码: 运行结果:result is:153 370 371 407 扩展资料 常见水仙花数 水仙花数又称阿姆斯特朗数。

int main()

#include #include void main() { int i,j,k,n; printf("'water flower'number is:"); for(n=100;n

{

int i,j,k,n;

用for不是更简单吗?下面给你两种方法: # include void main () { int i,j,k; for(i=1;i

printf("水仙花数:",n);

方法:先弄懂什么是水仙花数:: 水仙花数是指一个n(>=3)位数字的数,它等于每个数字的n次幂之和。 3位水仙花数————先定义3个数其中一个为1--9;2个为0--9;(用for循环) 再用如果a定义为1--9那么用100*a来表示百位;如果b或者c定义是0--9

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

C语言的"水仙花数"代码 main(){ int i,j,k; for(i=1;i

{

i=n/100;

#include int main() { int i; for( i=100; i

j=n/10-i*10;

k=n%10;

if(n==i*i*i+j*j*j+k*k*k)

//提示:153 370 371 407 是水仙花数 #include void main() { int i,j,k,n; printf("请输入一个三位整数n"); scanf("%d",&n); i=n/100; /*分解出百位*/ j=n/10%10; /*分解出十位*/ k=n%10; /*分解出个位*/ if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

printf("%dn ",n);

#include int main() {int a,b,c; for(a=1;a

}

return 0;

0842-水仙花数(循环)时间:1000毫秒内存:32768K字节总提次数:1273次成功提交次数:633次判题规则:严格比较问题描述春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:“水仙花数”是指一个三位数,它的各

}

输出结果:

水仙花数:153

首先你需要引入头文件math.h;然后下面是代码:int n=1000,num=0; //num代表水仙花数个数while(n

370

371

407

c语言如何学习:【3】求水仙花数 第4张

扩展阅读,以下内容您可能还感兴趣。

C语言输出【所有的】水仙花数

#include <stdio.h>

#include <math.h>

int main()

{

for(unsigned int i = 100; i <= 0xffffffff; i++)

{

unsigned int a = i;

int b = 0;

while(a)

{

a /= 10;

b++;

}

unsigned int c = 0;

for (unsigned int j = i; j > 0; j /= 10)

{

c += (unsigned int)pow(j % 10, b);

}

if (c == i)

{

printf("%d\n", c);

}

}

return 0;

}

想要更大的数可以用 __int64 类型,那样 pow() 函数支持不了那么大的,得自己算了。

------------------------------------------------------

把你的文件名改成.cpp,不然会按C语言的方式来编译,C语言和C++还是有一点差7a686964616fe59b9ee7ad9431333262373939别的,你不想改的话可以把代码改成下面的样子:

#include <stdio.h>

#include <math.h>

int main()

{

unsigned int i;

for( i= 100; i <= 0xffffffff; i++)

{

unsigned int a = i;

int b = 0;

unsigned int c = 0;

unsigned int j;

while(a)

{

a /= 10;

b++;

}

for (j = i; j > 0; j /= 10)

{

c += (unsigned int)pow(j % 10, b);

}

if (c == i)

{

printf("%d\n", c);

}

}

return 0;

}

(c语言程序)编写程序求100以内的水仙花数,水仙花数是指一个n(>=3)位数字的数

1000以内百的度水仙问花答数版:权#include <stdio.h>

int main()

{ int i,j,k;

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

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

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

        if(i*i*i+j*j*j+k*k*k==100*i+10*j+k)

          printf("%d%d%dn",i,j,k);

  return 0;

}

c语言 输出所有水仙花数

在第一zhidao个for循环前面给s赋值时,a、b、c的值没有初始化,所以整个s=100*a+10*b+c是不确定的值,程序运行便会出错!

建议内修改:将语句s=100*a+10*b+c放到条件语句if(s==(a*a*a+b*b*b+c*c*c))之前,这样s得到的是确定值,程序运行容正常。

修改后源程序如下:

#include "Stdio.h"

void main()

{

    int a,b,c,s;

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

    {

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

        {

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

            {

s=100*a+10*b+c;

                if(s==(a*a*a+b*b*b+c*c*c))

                printf("%dn",s);

            }

        }

    }

    getchar();

}

程序运行结果见插图。

C语言求水仙花数问题

for(int n=100;n<1000;n++){ 后面加上一句 result=0.0;

if(result==n) printf("%d是水仙花数\n",n); 这句应该在第二个for循环外追问你说这是的,我发帖就才发现这个了,但是拿到外面了结果还是不出来

C语言,输出所有水仙花数,求思路指导。

先弄懂什么叫水仙花百数。水仙花数就是一个三位数,它的个位十位和百度位的数的立方加起来和还是这个数,就是水仙花数!专

例如:153=1*1*1 + 5*5*5 + 3*3*3

你的想法。。。是对的~

源码:

#include <math.h>

#include <stdio.h>

int sxh(int i) {

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

return 1;

else return 0;

}

int main() {

int q;

for(q=100;q<=999;q++) {

if(sxh(q)==1)

printf("%d 是水属仙花数\n",q);

}

return 0;

}

标签: 语言 水仙花 学习
  • 文章版权属于文章作者所有,转载请注明 https://dongkepu.com/itkeji/l9m5p9.html