c语言,求水仙花数(三位数)。用do while?

作者&投稿:姓辰 (若有异议请与网页底部的电邮联系)
~ 以下是使用 C 语言 do-while 循环来求解三位数中的水仙花数的代码:

```c
#include <stdio.h>
#include <math.h>

int main() {
int i = 100;
do {
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 ", i);
}
i++;
} while (i < 1000);
return 0;
}
```

在上面的代码中,我们使用 do-while 循环来遍历三位数,然后对每个三位数进行水仙花数的判断。其中,使用了三个变量 `a`、`b`、`c` 分别表示当前数值的百位、十位、个位数字。然后判断该三位数是否等于各个数字的立方和,如果是,就打印该数值。

需要注意的是,在计算立方的时候需要使用 `pow` 函数,该函数需要引用 math.h 头文件。

示例输出:

```
153 370 371 407
```

希望这个代码可以帮助你实现你所需的功能。

水仙花数是指一个 n 位正整数(n ≥ 3),其各个位上数字的 n 次方之和等于它本身。例如,153 是一个水仙花数,因为 $1^3 + 5^3 + 3^3 = 153$。

以下是使用 do-while 循环求解三位数的水仙花数的 C 语言程序:

```c
#include <stdio.h>

int main() {
int num, digit, sum;
printf("三位数的水仙花数有:\n");
num = 100; // 从100开始枚举
do {
digit = num % 10; // 取出个位数字
sum = digit * digit * digit; // 计算各位数字的立方和
digit = num / 10 % 10; // 取出十位数字
sum += digit * digit * digit; // 加上十位数字的立方
digit = num / 100; // 取出百位数字
sum += digit * digit * digit; // 加上百位数字的立方
if (sum == num) { // 如果等于该数本身,输出该数
printf("%d\n", num);
}
num++;
} while (num < 1000); // 从100枚举到999
return 0;
}
```

在这个程序中,我们定义了一个整型变量 num 来作为循环计数器,初始值为 100。然后使用 do-while 循环来枚举所有的三位数。

对于每个数,我们依次取出它的各位数字,计算它们的立方和。如果立方和等于该数本身,则说明该数是一个水仙花数,将其输出。

最后,我们将 num 的值加 1,继续下一次循环,直到枚举完所有的三位数。


c语言编写求水仙数,从100到999之间的。用fun函数
include<stdio.h> int fun(int n){ int i,j,k,m;m=n;k=0;for(i=1;i<4;i++){ j=m%10;m=(m-j)\/10;k=k+j*j*j;} if(k==n)return 1;else return(0);} void main(){ int i;for(i=100;i<1000;i++)if(fun(i)==1)printf("%d is ok!\\n" ,i);} 水仙花数是...

c语言求100到1000水仙花数
include<stdio.h> int main (){int i,j,k,n;printf("水仙花数:\\n");for (n=100;n<1000;n++){i=n\/100; \/*百位上的数*\/ j=n\/10-i*10;\/*十位上的数*\/ k=n%10; \/*个位上的数*\/ if (n == i*i*i + j*j*j + k*k*k)printf("%d ",n);} printf("\\n");retur...

C语言(求水仙花数) 请帮忙编个符合要求的简单程序
include<stdio.h> void main(){ int in[20][2],i=0,a,b,j=0,c,d,e;printf(" Sample Input(输入数据不在100—999之间时,输入停止。且最多不能超过20组数据):\\n");while(i<20){ scanf("%d %d",&a,&b);if(a>999||a<100||b>999||b<100)break; \/\/当输入范围不在100...

用c 语言怎样编写水仙花数
所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。2.程序源代码:main(){ int i,j,k,n;printf('water flower'number is:)...

c语言编程题 找出所有的水仙花数,水仙花数是指一个3位数
for(int i=100;i<=999;i++){ \/\/分割出个位 int a=i%10;\/\/分割出十位 int b=i\/10%10;\/\/分割出百位 int c=i\/100;\/\/判断该数是否等于【个位的三次方+十位的三次方+百位的三次方】if(i==(Math.pow(a,3)+Math.pow(b,3)+Math.pow(c,3))){ System.out.println(i+"是水仙花...

C语言求1到1000内的水仙花数求大神?
include<stdio.h> int main(){ int i,a,b,c;for(i=100;i<1000;i++){ a=i\/100;b=i\/10%10;c=i%10;if(a*a*a+b*b*b+c*c*c==i)printf("%d ",i);} printf("\\n");system("pause");return 0;}

C语言用指针求水仙花数
您好,很高兴回答您的问题。水仙花数是指三位数每个位置上的数的立方之和,等于这个数本身。这个题目的难点就在于对这个三位数进行分解,得出每一个位置上的数字。

C语言:输出100-999中所有水仙花数。
\/\/输出水仙花 voidNarcissusNumber(){for(inti=100;i<1000;i++){ intsum=0;inttemp=i;intrem;for(intj=0;j<3;j++){rem=temp%10;temp\/=10;sum+=rem*rem*rem;}if(sum==i){ printf("%d\\n",i);} } }

C语言的水仙花数,怎么搞?
循环就从10的N-1次方至N次方,比如说N为3,那就是10的2次方(100)至10的3次方(1000){ sum=0;n=i;while(n){ sum+=pow(n%10,N);\/\/计算每一位的N次方的和至sum n=n\/10;} if(sum==i) printf("%d\\n",i);\/\/比较和是否与原数i相等,如果相等则为水仙花数并输出 } } ...

用C语言编写程序:for语句,求1000以内所有的水仙花数。
include<stdio.h>main(){ int i=0,g,s,b,a=0; for(i=0;i<1000;i++) { if(i>=100&&i<=999) { b=i\/100; s=(i-b*100)\/10;\/\/除10

碌曲县13081721856: c语言编程:水仙花数 -
董龚鸢都: #includevoid main() { for(int i=100;i<1000;i++) { int bai=(int)(i*0.01); int shi=(int)(i*0.1)-bai*10; int ge=i-bai*100-shi*10; if(bai*bai*bai+shi*shi*shi+ge*ge*ge==i) cout<< } }

碌曲县13081721856: 用C语言求水仙花数! -
董龚鸢都: 思路没大问题,,不过,水仙花数好像是指一个n位数(n>=3)的各个位的n次方的和等于这个数,那这个数就是水仙花数.在百度百科上有介绍的,上面也有程序. #includevoid main() { int n,s,sum=0,i; for(i=1;i<=10000;i++) /*所以你这里可以...

碌曲县13081721856: C语言的水仙花数,怎么搞? -
董龚鸢都: #include<stdio.h> #include<math.h> int main() { int N,i,sum,n; scanf("%d",&N);//输入 for(i=pow(10,N-1);i<pow(10,N);i++)//N是几位数,循环就从10的N-1次方至N次方,比如说N为3,那就是10的2次方(100)至10的3次方(1000) { sum=0; n=i; while(n) { sum+=pow(n%10,N);//计算每一位的N次方的和至sum n=n/10; } if(sum==i) printf("%d\n",i);//比较和是否与原数i相等,如果相等则为水仙花数并输出 } }

碌曲县13081721856: 用C语言编一个可以列出所有三位数的水仙花数如153=1^3+5^3+3^3; -
董龚鸢都: 一、 数学定义: 水仙花数是指一个 n 位正整数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身. 于是三位水仙花数,就是形式为n=100a+10b+c 且n=a*a*a+b*b*b+c*c*c的数值. 其中a∈[1,9] b,c∈[0,9] a,b,c∈Z 二、 根据定义,循环遍...

碌曲县13081721856: c语言中,求“水仙花数”问题. -
董龚鸢都: #include"stdio.h" main() {int i,a=0,b=0,c=0,t;for(i=100;i<=999;i++){a=i%10;b=(i/10)%10;c=i/100; if(c*100+b*10+c*1==a*a*a+b*b*b+c*c*c){t=i;printf("%d",t);}}}if和printf语句都要在循环里面 同时,if语句的条件改为 if(c*100+b*10+c*1==a*a*a+b*b*b+c*c*c)

碌曲县13081721856: 求用c语言编写水仙花数 -
董龚鸢都: #includeintmain(){inti,a,b,c;for(i=100;i

碌曲县13081721856: c语言编写水仙花数
董龚鸢都: #include<stdio.h> void main() { int n,i,j,k; //"水仙花数"是一个三位数的数 如153=1*1*1+5*5*5+3*3*3 printf("水仙花数有:"); for(n=100;n<1000;n++) //求水仙花数的过程,i,j,k分别存放这个三位数中的每一位数 { i=n/100; j=(n-i*100)/10; k=n-i*100-j*10; if(n==i*i*i+j*j*j+k*k*k) //找出每一位然后判断它每一位数的立方之和是否等于原数,是就输出 printf("%d ",n); } printf("\n"); }

碌曲县13081721856: “水仙花数”C语言程序 -
董龚鸢都: #include "stdio.h" void main() { int a,b,c,i; for(i=100;i<1000;i++) { a=i/100; b=i%100/10; c=i%10; if(a*a*a+b*b*b+c*c*c==i) printf("%d\t",i); } } 以上是100到999内的水仙花数的c程序

碌曲县13081721856: 水仙花数(C语言编写) -
董龚鸢都: #include int main(){ int m,n; scanf("%d %d",&m,&n); int i,num=0; for(i=m;i<=n;i++) { int a=i/100; int b=i%100/10; int c =i%10; if(a*a*a+b*b*b+c*c*c==i) { num++; printf("%d ",i); } } if(num==0) printf("no\n"); else printf("\n");}

碌曲县13081721856: 水仙花数、c语编程
董龚鸢都: #include<stdio> void main() { int i,j,k,n; printf("'water flower'number is:"); for(n=100;n<1000;n++) { i=n/100; j=(n-i*100)/10; k=n%10; if(i*i*i+j*j*j+k*k*k==n) printf("%d\n",n); } } 楼主,我自己写的,已经在VC中运行过了.楼主. 怎么不处理问题呢? 不满意回答么?

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网