正文
水仙花c语言自定义函数 水仙花c语言编程所有方法
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
编写自定义函数,求水仙花数,并输出
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,n)内所有的水仙花数。
函数接口定义:
int narcissistic(int number);
void PrintN(int m,int n);
函数narcissistic判断number是否为水仙花数,是则返回1,否则返回0。
函数PrintN则打印开区间(m,n)内所有的水仙花数,每个数字占一行。题目保证100≤m≤n≤10000。
例:
#includelt;stdio.hgt;
int narcissistic(int number);
void PrintN(int m,int n);
int main()
{
int m,n;
scanf("%d%d",m,n);
if(narcissistic(m))printf("%d is a narcissistic number\n",m);
PrintN(m,n);
if(narcissistic(n))printf("%d is a narcissistic number\n",n);
return 0;
}
运行:
扩展资料:
方法一、
#includelt;stdio.hgt;
int narcissistic(int number);
void PrintN(int m,int n);
int main(){
int m,n;
scanf("%d%d",m,n);
if(narcissistic(m))printf("%d is a narcissistic number\n",m);
PrintN(m,n);
if(narcissistic(n))printf("%d is a narcissistic number\n",n);
return 0;
}
int narcissistic(int number){
int count,digit,item,n,sum,ret,k,i;
n=number,count=0;
while(n){//算出number是几位数。
n/=10;
count++;
}
sum=0,n=number;
while(n){
digit=n%10;
item=1;
for(i=0;ilt;count;i++)
item*=digit;
sum+=item;
n/=10;
}
if(sum==number)ret=1;
else ret=0;
return ret;
}
void PrintN(int m,int n){
int i;
for(i=m+1;ilt;n;i++)
if(narcissistic(i))printf("%d\n",i);
}
方法二:
int narcissistic(int number){
int count,sum,temp,ret;
count=0,temp=number;
while(temp){
count++;
temp/=10;
}
sum=0,temp=number;
while(temp){
sum+=pow(temp%10,count);
temp/=10;
}
if(sum==number)ret=1;
else ret=0;
return ret;
}
void PrintN(int m,int n){
int i;
for(i=m+1;ilt;n;i++)
if(narcissistic(i))printf("%d\n",i);
}
C语言 水仙花数
#include stdio.h
int fun(int a,int b)
{
int i,m,n,k,count=0;
if(ab)
{
for(i=b;i=a;i++)
{
m=i/100;
n=(i%100)/10;
k=i%10;
if(i==((m*m*m)+(n*n*n)+(k*k*k)))
{
count+=1;
printf("%d\n",i);
}
}
}
else if(ab)
{
for(i=a;i=b;i++)
{
m=i/100;
n=(i%100)/10;
k=i%10;
if(i==(m*m*m)+(n*n*n)+(k*k*k))
{
count+=1;
printf("%d\n",i);
}
}
}
else
{
m=a/100;
n=(a%100)/10;
k=a%10;
if(a==(m*m*m)+(n*n*n)+(k*k*k))
{
count=1;
printf("%d\n",a);
}
}
printf("%d\n",count);
return 0;
}
void main()
{
int a,b;
printf("请输入要查找的区间端点(三位数以内):");
scanf("%d%d",a,b);
fun(a,b);
}
不知道是不是你要的~~~
C语言 定义和调用函数求水仙花数
函数返回值有问题水仙花c语言自定义函数,输出有问题
第12行改为水仙花c语言自定义函数:
if(is(i))printf("%d\n",i);
第23行水仙花c语言自定义函数:
return 1; return 0
自己编的c语言水仙花数
方法水仙花c语言自定义函数:先弄懂什么是水仙花数水仙花c语言自定义函数::
水仙花数是指一个n(=3)位数字水仙花c语言自定义函数的数,它等于每个数字的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位水仙花数方法同上:
刚写的:调试过水仙花c语言自定义函数了
#include
stdio.h
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\n",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\n",a,b,c,d);
getch();
}
或者这样:
#include
stdio.h
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\n",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\n",a,b,c,d);
}
getch();
}
求采纳为满意回答。
C语言编写一个秋水仙花数的函数。求100到999之间的全部水仙花数。
#includeiostream
#includecmath
using namespace std;
int main()
{
int i,a,b,c;
for(i=100;i1000;i++)
{
a=i/100; //取第一个数
b=(i-a*100)/10; //取第二个数
c=i-a*100-b*10; //取第三个数
if(i==a*a*a+b*b*b+c*c*c) //判断
{
coutiendl; //输出水仙花数
}
}
return 0;
}
关于水仙花c语言自定义函数和水仙花c语言编程所有方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。