c语言 编写一个判断是否为水仙花数的函数,并通过调用该函数打印输出所有水仙花数。

要调用函数的。

#include<stdio.h>

#include<math.h>

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 i,n=0,sum=0,cnt=0;

n=number;

while(n){

cnt++;

n/=10;

}

n=number;

while(n){

i=n%10;

sum+=(int)pow(i,cnt);

n/=10;

}

if(sum==number)

return 1;

else

return 0;

}

void PrintN(int m,int n){

int i;

for(i=m+1;i<n;i++)

if(narcissistic(i))

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

}

扩展资料:

printf函数使用注意事项

1、域宽

%d:按整型数据的实际长度输出。

如果想输出指定宽度可以指定域宽,%md--&gt,m域宽,打印出来以后,在控制台上,显示m位;

如果要打印的数的位数如果超过我们设定m则原样输出;

如果要打印的数的位数如果小于设定的位数,则补空白,具体如下:

如果m为正数,则左对齐(左侧补空白);

如果m为负数,则右对齐(右侧补空白)。

2、转义字符

如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示。

如:printf("%f%%",1.0/3);输出结果:0.333333%。

参考资料:

百度百科——水仙花数

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-01-04

水仙花数即三位的自幂数。所谓自幂数,就是指一个 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

第2个回答  推荐于2017-10-11
你是要这个吗? 百度百科上有的
C 语言的"水仙花数"实现代码:  #include <stdio.h>
#include<math.h>
int main (void) {
long n,p;
long c,a,j,s[30],i,q;
p=0;
a=10;
scanf("%ld",&n);
q=n;
for (i=1;c>10 ;++i) {
c=n/a;
a=a*10;
}printf("i=%ld,a=%ld \n",i,a);
for (j=1;a>=10 ;++j) {
s[j]=n/(a/10);
n=n-s[j]*(a/10);
a=a/10;
printf("j=%ld,a=%ld\n",j,a);
}
for (j=1;j<=i ;j++) {
p+=pow(s[j],i);
printf("p=%ld,i=%ld\n",p,i);
}
if (p==q) {
printf("%ld 为水仙花数",q);
}else {
printf("%ld 该数不是水仙花数",q);
}
return 0;
}

参考资料:http://baike.baidu.com/view/152077.htm

本回答被提问者和网友采纳

c语言 编写一个判断是否为水仙花数的函数,并通过调用该函数打印输出所有...
int i;for(i=m+1;i<n;i++)if(narcissistic(i))printf("%d\\n",i);}

水仙花数的c语言编程。
最后通过printf函数输出找到的水仙花数。四、总结:这是一个简单的C语言程序,通过基本的数学计算和逻辑判断操作实现了寻找水仙花数的功能。通过这个程序可以加深对水仙花数的理解和对C语言编程的掌握。

把判断某数是否是水仙花数定义成函数,然后调用该函数输出所有的水仙花数...
\/\/所谓水仙花数是指一个三位数它的每位数字的立方之和等于该数,水仙花数翻译乘英文是narcissus few \/\/我是在谷歌金山词霸里找到的,不知道准不准确 include <iostream.h> include <math.h> bool Judge(int);\/\/判断一个整型数字是否为水仙花数 inline int Biti(int d, int i);\/\/求一个整数d的...

使用函数判断一个数是否是水仙花,并输出所有的水仙花数
如果是要用C语言实现#include<stdio.h>int f(int n){ int a=n \/ 100; int b=n\/10 % 10; int c=n%10; if (a*a*a+b*b*b+c*c*c == n) return 1; else return 0;}int main(){ int i; for (i=100;i<1000;i++) if (f(i)) prin...

输出所有水仙花数。(要求用函数:int process(int n);判断一个数如果是...
int main(){ int n;scanf("%d",&n);int m=n;int a=n%10;n=n\/10;int b=n%10;n=n\/10;if(a*a*a+b*b*b+n*n*n==m) printf("%d是水仙花数\\n",m);return 0;}

C语言:写一个判断水仙花数的函数,在主函数中输入一个3位的整数,输出其...
{ if(x<100 || x>999) \/\/不是三位数 { printf("Input error");return 0;} int a,b,c;a = x%10; \/\/ 个位上的数 b =x\/10%10; \/\/十位上的数 c = x\/100; \/\/百位上的数 if(a*a*a + b*b*b + c*c*c == x){ return 1;} return 0;} int main(){ int...

用C语言编写判断是否是水仙花数的程序
1、首先打开Visual Studio 2015软件,新建一个C语言程序,如下图所示 2、然后我们需要在C语言文件中引入库文件stdio.h,它里面包含了很多后面要使用的函数,如下图所示 3、接着我们就需要实现水仙花数的判断逻辑,主要是把输入的数字各个位都取出来,然后进行立方求和,最后和输入的数字进行比较,如下图...

c语言中,如何输出所有的水仙花数
在C语言中,输出所有的水仙花数的步骤如下:1. 确定水仙花数的定义:水仙花数,也就是三位自幂数,指的是一个三位数,它的每个位上的数字的立方和等于它本身。2. 编写判断水仙花数的函数:这个函数需要提取输入数值的个位、十位和百位数字,计算它们的立方和,并与原数值比较以确定是否为水仙花数。3....

判断一个三位数是否为水仙花数c语言
判断一个三位数是否为水仙花数的方法如下:1. 水仙花数定义:一个三位数,其每个位上的数字的立方和等于该数本身。2. 编写C语言程序:```c include int main() { int number, originalNumber, remainder, result = 0;printf("请输入一个三位数:");scanf("%d", &number);originalNumber = ...

用C语言写出判断一个三位数是否为水仙花数的程序?
if(m==i*i*i+j*j*j+k*k*k) printf("%d\\n",m); \/*是水仙花数时输出*\/ } (一)C语言:C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多...

相似回答