⑴ c语言中,如何输出所有的水仙花数
水仙花数即三位的自幂数。所谓自幂数,就是指一个 n 位数 ( n≥3 ),其每位上的数字的 n 次幂之和等于本身。
所以水仙花数,首先是三位数,形式为abc,同时a,b,c的立方和值与原本数相同。
类似的还有
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
等等。
对于水仙花数的判断,需要按照以下步骤:
1 提取该数的个位,十位,百位值。
2 计算三个数的立方和。
3 与原值比较,如相等则是。
要输出所有水仙花数,需要:
1 对所有三位数,即100到999遍历;
2 对每个数判断是否为水仙花数,如是则退出。
当循环结束,所有的水仙花数就输出成功了。
代码如下:
int isNarcissistic(int n)
{
int a = n/100;
int b = n/10%10;
int c = n%10;
return a*a*a + b*b*b + c*c*c == n;
}
int main()
{
int i;
for(i = 100; i< 1000; i ++)
if(isNarcissistic(i)) printf("%d ",i);
}
输出结果如下:
153 370 371 407
⑵ C语言, 编写函数判断一个数是否是水仙花数,然后在主函数中求所有的水仙花 谢谢了啊
#include<iostream>
using namespace std;
int main()
{
int i,a,b,c;
for(i=100;i<=999;i++)
{
a=i/100;
b=(i/10)%10;
c=i%10;
if (a*a*a+b*b*b+c*c*c==i)
{
cout<<i<<endl;
}
}
return 0;
所有的水仙花数?? 应该要给个范围吧。水仙花数是有限的?? 我这个就是找出100到999内的水仙花数。
⑶ c语言求水仙花数!!!!
#include"stdio.h"
intmain(intargc,char*argv[]){
intn,i,j,k,t,s,m,x;
printf("Pleaseentern(int2<n<8)... n=");
if(scanf("%d",&n)!=1||n<3||n>7){
printf("Inputerror,exit... ");
return0;
}
for(k=1,i=0;i<n;i++,k*=10);
for(i=k/10;i<k;i++){
for(s=0,t=i;t>0;t/=10){
for(x=1,j=t%10,m=n;m--;x*=j);
s+=x;
}
if(s==i)
printf("%d ",s);
}
printf(" ");
return0;
}
运行样例:
⑷ C语言编程输出所有的“水仙花数”。
1、首先需要打开Dev-c++软件,点击“新建源代码”。
⑸ 用C语言函数实现求所有水仙花数
#include<stdio.h>
#include<conio.h>
void main()
{
int i,j,k,n;
clrscr();
printf("Output the numbers are:\n");
for(n=100;n<1000;n++)
{
i=n/100;
j=(n/10)%10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
{
printf("%d\n",n);
}
}
getch();
}
⑹ 用C语言怎么编写一个能求出所有的水仙花数的程序
#include <stdio.h>
#include <conio.h>
void main()
{
int iPoh,iPos,iPog,iNum = 0; /*定义变量 ipoh为百位 ipos为十位 ipog为个位,iNum为最后的水仙花数字*/
for (iNum=100; iNum<=300; iNum++)
{
iPoh = iNum/100; /*分解出数字的百 十 个位上的数字*/
iPos = (iNum%100)/10;
iPog = iNum%10;
if (iPoh*iPoh*iPoh+iPos*iPos*iPos+iPog*iPog*iPog == iNum) /*判断是否为水仙花数字*/
{
printf("%-6d",iNum);
} /*输出结果*/
}
getch();
}
经测试,可以使用!!
⑺ c语言 用两种算法求解所有的水仙花数
#include<stdio.h>
voidmain()
{
intm,n,a,b;
intsum=0;//对总和初始化
for(m=100;m<1000;m++)
{
n=m/100;
a=m%100/10;
b=m%10;//for循环
if(m==n*n*n+a*a*a+b*b*b)
printf("%d ",m);
sum=sum+m;//如果是水仙花数就显示这个数并加到sum中
}
printf("%d ",sum);//寻找结束后显示sum
}
⑻ C语言编程怎么写 求出所有的水仙花数
#include<stdio.h>
#include<conio.h>
voidmain()
{
intiPoh,iPos,iPog,iNum=0;/*定义变量ipoh为百位ipos为十位ipog为个位,iNum为最后的水仙花数字*/
for(iNum=100;iNum<=300;iNum++)
{
iPoh=iNum/100;/*分解出数字的百十个位上的数字*/
iPos=(iNum%100)/10;
iPog=iNum%10;
if(iPoh*iPoh*iPoh+iPos*iPos*iPos+iPog*iPog*iPog==iNum)/*判断是否为水仙花数字*/
{
printf("%-6d",iNum);
}/*输出结果*/
}
getch();}
⑼ 用C语言求出所有水仙花数
#include <stdio.h>
int f1(int a,int n) /* 求a 的 n 次方*/
{
int i;
int c=1;
for(i=0;i<n;i++)
c*=a;
return c;
}
int f2(int a) /* 返回 a 的位数*/
{
int i=0;
while(a)
{
a/=10;
i++;
}
return i;
}
void nar_num(int a,int b) /* 求 水仙花数*/
{
int sum=0;
int m;
int n;
while(a<b)
{
n=f2(a);
m=a;
while(m)
{
sum+=f1(m%10,n);
m/=10;
}
if(sum==a)
printf("%ld\n",a);
sum=0;
a++;
}
}
int main(int argc, char *argv[])
{
int a;
int b;
printf("please input two numbers:\n");
scanf("%d %d",&a,&b);
nar_num(a,b);
getchar();
return 0;
}