1、代码
创新互联主打移动网站、网站建设、做网站、网站改版、网络推广、网站维护、域名注册、等互联网信息服务,为各行业提供服务。在技术实力的保障下,我们为客户承诺稳定,放心的服务,根据网站的内容与功能再决定采用什么样的设计。最后,要实现符合网站需求的内容、功能与设计,我们还会规划稳定安全的技术方案做保障。
#include stdio.h
int main()
{
int hun, ten, ind, n;
printf("result is:");
for( n=100; n1000; n++ ) /*整数的取值范围*/
{
hun = n / 100;
ten = (n-hun*100) / 10;
ind = n % 10;
if(n == hun*hun*hun + ten*ten*ten + ind*ind*ind) /*各位上的立方和是否与原数n相等*/
printf("%d ", n);
}
printf("\n");
return 0;
}
2、说明
将n整除以100,得出n在百位上的数字hun。
将(n-i*100)整除以10(或将n先整除以10再对10求模n/10%10),得出n在十位上的数字ten。
将n对10取余,得出n在个位上的数字ind。
求得这三个数字的立方和是否与其本身相等,若相等,则该数为水仙花数。
水仙花数是指一个 n 位数 ( n≥3 ),每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)。
所以可以依次通过模除求得每个位上的值,然后做n次幂后相加,再判断是否与本身相等,从而得到是否为水仙花数的结论。
以求所有三位数水仙花数为例,代码如下,其它相似。
#includestdio.h
#includestdlib.h
#includestdbool.h
int cube(const int n){//计算立方。如果是四位则是四次方,以此类推。
return n*n*n;
}
int isNarcissistic(const int n){//计算是否为水仙花数。
int hundreds=n/100;//百位
int tens=n/10-hundreds*10;//十位
int ones=n%10;//个位
return cube(hundreds)+cube(tens)+cube(ones)==n;//如果相等,则为水仙花数。
}
int main(void){
int i;
for(i=100;i1000;++i){//对所有三位数判断。
if(isNarcissistic(i))//如果是则输出。
printf("%d\n",i);
}
return 0;
}
三位的水仙花数就是每一位的立方之和和这个三位数相等的数,用if语句编程,输入一个三位数,判断是否为水仙花数,可以参考以下的代码:
includestdio.h
main()
{ int x,a,b,c;
scanf("%d",x);
a=x/100;
b=(x/10)%10;
c=x%10;
if(x==a*a*a+b*b*b+c*c*c)
printf("YES");
else
printf("NOT");
}
扩展资料:
if的返回值为真或假,可以用bool型变量进行存储,占用一字节。
C语言中提供了2种形式的if语句:
1、if(表达式)语句1,例如:
if(xy)
printf("%d",x);
2、if(表达式),语句1
else
语句2,例如:
if(xy)
printf("%d",x);
else
printf("%d",y);
参考资料来源:百度百科-if语句
#includelt;stdio.hgt;
#includelt;math.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 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;ilt;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%。
参考资料:
百度百科——水仙花数
水仙花数即三位的自幂数。所谓自幂数,就是指一个 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语言去判断一个数字是不是水仙花数呢?下面我给大家分享一下。
工具/材料
Visual Studio 2015
01
首先打开Visual Studio 2015软件,新建一个C语言程序,如下图所示
02
然后我们需要在C语言文件中引入库文件stdio.h,它里面包含了很多后面要使用的函数,如下图所示
03
接着我们就需要实现水仙花数的判断逻辑,主要是把输入的数字各个位都取出来,然后进行立方求和,最后和输入的数字进行比较,如下图所示
04
最后我们按ctrl+F5运行程序,在弹出的界面中,我们输入一个数字,程序就会自动告诉我们这个数字是不是水仙花数