>凡事网 导航

C语言的水仙花数,怎么搞? c语言怎么编写水仙花数?

2024-07-01m.fan-pin.com
c语言水仙花数~

#include
int main()
{
int start, end, i = 0, a, b, c, size = 0;
while (scanf("%d %d", &start, &end) == 2)
{
for (i = start; i <= end; i++)
{
a = i / 100;
b = i / 10 % 10;
c = i % 10;
//total = pow(c, 3) + pow(a, 3) + pow(b, 3);
if ((a*a*a + b*b*b + c*c*c) == i) //满足水仙花条件
{
if (size == 0) //size=0输出第一个水仙花数
{
printf("%d", i);
}
else //size++输出第二。。第n个水仙花数
{
printf(" %d", i);
}
size++; //个数++;
}
}
if (size == 0) //范围内个数为0,则说明没有满足条件的
{
printf("no");
}
printf("
");
}
return 0;
}

扩展资料:
需要注意的地方:
1.将n整除以100,得出n在百位上的数字hun。
2.将(n-i*100)整除以10(或将n先整除以10再对10求模n/10%10),得出n在十位上的数字ten。
3.将n对10取余,得出n在个位上的数字ind。
4.求得这三个数字的立方和是否与其本身相等,若相等,则该数为水仙花数。
参考资料:
百度百科-水仙花数

方法:先弄懂什么是水仙花数::
水仙花数是指一个n(>=3)位数字的数,它等于每个数字的n次幂之和。
3位水仙花数————先定义3个数其中一个为1--9;2个为0--9;(用for循环)
再用如果a定义为1--9那么用100*a来表示百位;如果b或者c定义是0--9那么用10*b或者10*c来表示十位;那么下面用c或者b来表示个位;
if(100*a+10*b+c==a*a*a+b*b+c) 如果满足这个条件那么:输出的printf("%d%d%d",a,b,c)就是3位数的水仙花数:

4位水仙花数方法同上:

刚写的:调试过了
#include
int main(void)
{
int a,b,c,d;
system("cls");
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
if(100*a+10*b+c==a*a*a+b*b*b+c*c*c)
printf("%d%d%d
",a,b,c);
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
for(d=0;d<=9;d++)
if(1000*a+100*b+10*c+d==a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d)
printf("%d%d%d%d
",a,b,c,d);
getch();
}


或者这样:
#include
int main(void)
{
int a,b,c,d;
system("cls");
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
{
if(100*a+10*b+c==a*a*a+b*b*b+c*c*c)
printf("%d%d%d
",a,b,c);
for(d=0;d<=9;d++)
if(1000*a+100*b+10*c+d==a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d)
printf("%d%d%d%d
",a,b,c,d);
}
getch();
}

#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相等,如果相等则为水仙花数并输出
}
}

按照你的要求编写的N位水仙花数的C语言程序如下

#include<stdio.h>

#include<math.h>

int main(){

int a,d,i,b,c,N;

scanf("%d",&N);

if(N>=3 && N<=7){

for(i=(int)pow(10,N-1);i<(int)pow(10,N);i++){

b=0;

c=i;

d=N;

while(c!=0){

a=c%10;

b=b+(int)pow(a,N);

c=c/10;

}

if(b==i)

printf("%d
",i);

}

}else{

printf("N需要3<=N<=7");

}

return 0;

}



#include<stdio.h>
//递归求一个数的任意次方
int calc(int num,int count){
if(num==0){
return 0;
}else if(count==0){
return 1;
}else{
return num*calc(num,count-1);
}
}
//判断是否是水仙花数
int isSXNumber(int num){
int count=0,temp,tempA,tempB,sum=0;
temp=num;
tempB=num;
//判断这个是一个几位数
while(temp!=0){
tempA=temp%10;
count++;
temp/=10;
}
//对每一位的N次方累加
while(tempB!=0){
tempA=tempB%10;
sum+=calc(tempA,count);
tempB/=10;
}
if(sum==num){
return 1;
}else{
return 0;
}
}
void main(){
int n,i,temp;
printf("请输入一个数(3-7之间:)");
scanf("%d",&n);
while(n>7||n<3){
printf("你输入的数字不在判断范围!\n\n");
printf("请输入一个数(3-7之间:)");
scanf("%d",&n);
}
for(i=calc(10,n-1);i<=calc(10,n)-1;i++){
if(isSXNumber(i)==1){
printf("%d\n",i);
}
}
}

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

怎么用vb语言实现水仙花数?
1、启动VB程序,新建一个标准exe工程 2、在窗体上绘制一个命令按钮(名称:Command),双击命令按钮进入代码窗口。3、接下来开始编写命令按钮的单击事件。点击事件要实现的内容就是上面提供的程序代码。4、按F5运行程序,点击命令命令按钮,输出的水仙花数共有4个:153,370,371,407。

编程 求水仙花数
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)C语言代码 include <stdio.h> #include <stdlib.h>void main() { int i,j,k,n; printf("'water flower'number is:"); for(n=100;n<10000;n++) ...

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...

C语言的水仙花数,怎么搞
按照你的要求编写的N位水仙花数的C语言程序如下 include<stdio.h> include<math.h> int main(){ int a,d,i,b,c,N;scanf("%d",&N);if(N>=3 && N<=7){ for(i=(int)pow(10,N-1);i<(int)pow(10,N);i++){ b=0;c=i;d=N;while(c!=0){ a=c%10;b=b+(int)pow(a,...

输入2个正整数m和n,输出m到n中所有水仙花数?用C语言怎么编
1.水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)include <stdio.h>bool IsDaffodil(int num){ if (num < 100) return false; int sum = 0, n = num, m; while (n) { m = n % 1...

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语言编写一个求水仙花数的函数,求3位正整数的全部水仙花数中的次大...
include <stdio.h>void main(){int i,k,s=0,num=0;for(i=999;i>=100;i--){k=i;while(k){s+=(k%10)*(k%10)*(k%10);k\/=10;}if(s==i) num++;if(num==2) break;s=0;}printf("%d",i);}

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

如何用C语言编写程序打印出水仙花数?
其实不用这样麻烦地去分解每一位,在不要求性能的情况下,直接打印出来就行了噻。include <stdio.h> int main(void){ int i,j,k;for (i=1;i<=9;i++){ for (j=0;j<=9;j++){ for (k=0;k<=9;k++){ if (100*i + 10*j + k == i*i*i +j*j*j + k*k*k){ printf...

相关链接2

返回顶部
凡事房车自主流
凡事网