用C语言写出判断一个三位数是否为水仙花数的程序

请给正确的答案,不懂的别进

#include<stdio.h>

void main()

{ int i,j,k,m;

printf("input data:");    

scanf("%d",&m);   /*输入一个3位数*/                                    

i=m/100;

j=(m-100*i)/10;

k=m-100*i-10*j;

if(m==i*i*i+j*j*j+k*k*k) printf("%d\n",m);  /*是水仙花数时输出*/
}

(一)C语言:

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。

(二)水仙花数(Narcissistic number):

也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-02-19
1.一个主程序,输出所有的水仙花数程序,可参考如下:
#include <stdio.h>
int main(int argc, char *argv[])
{
int i,n1,n2,n3,k=0;
for (i=100;i<1000;i++)
{ n1=i%10;
n2=(i/10)%10;
n3=i/100;
if (n1*n1*n1+n2*n2*n2+n3*n3*n3==i)
{ printf("%-6d",i);
k++;
}
}
printf("\n共计%d个符合条件\n",k);
return 0;
}

2. 采用自定义函数判别是否是水仙花数,并在主程序中输出所有符合条件的水仙花数

#include <stdio.h>
int shuixian(int n)
{
int flag=0,n1,n2,n3;
n1=n%10;
n2=(n/10)%10;
n3=n/100;
if (n1*n1*n1+n2*n2*n2+n3*n3*n3==n)
flag=1;
else
flag=0;

return flag;
}

int main(int argc, char *argv[])
{
int i;
for (i=100;i<1000;i++)
if (shuixian(i))
printf("%6d",i);
printf("\n");
return 0;
}

将该主程序中: for (i=100;i<1000;i++)
if (shuixian(i))
printf("%6d",i);
改成:scanf("%d",&i); if (shuixian(i)) printf("%6d是水仙花数",i); 可实现输入单个数值,判断是否是水仙花数。

希望对你的学习有帮助!本回答被提问者和网友采纳
第2个回答  2016-01-06

思路:分别求出这个三位数个位十位和百位,在依次求平方和,最后判断是否相等。

参考代码:

#include <stdio.h>
int fun(int n){
int g,s,b;
g=n%10;
s=n/10%10;
b=n/100;
if(g*g+b*b+s*s==n) return 1;
return 0; 
}
int main()
{
     int n;
     scanf("%d",&n);
     if(fun(n))
     printf("%d是水仙花数\n",n); 
 else 
  printf("%d不是水仙花数\n",n); 
     return 0; 
}
/*
运行结果:
125
125不是水仙花数
*/

第3个回答  2012-03-30
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int a,b,a1,a10,a100; //定义这个数,以及个位,十位,百位
for(a=100;a<=999;a++)//分别找出 个位十位百味的值。然后 算法为 a=a1^3+a12^3+a100^3
{
a1=a%10;
a10=a/10%10;
a100=a/100;
b=pow(a1,3.)+pow(a10,3.)+pow(a100,3.);//数学函数 求幂;
if(a==b)
printf("%d 是一个水仙花数\n",a);
else
continue;
}
system("pause");
}#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int a,a1,a10,a100; //定义这个数,以及个位,十位,百位
for(a=100;a<=999;a++)
{
a1=a%10;
a10=a/10%10;
a100=1/100;
if(a==pow(a1,3)+pow(a10,3)+pow(a100,3))
printf("%d 是一个水仙花数\n");
else
continue;
}
system("pause");
}
第4个回答  2020-11-06

输入一个三位数判断是否为水仙花数

相似回答