c语言水仙花数编程?

c语言水仙花数编程?,第1张

#include <stdio.h>信哪

void main()

{

int a,b,c,i,j=0

for(i=100i<1000i++)

{

a = i / 100

b = i % 100 / 10

c = i % 10

if(a*a*a+b*b*b+c*c*c==i)

{

printf("%d ",i)

j++

if(j%2==0)

printf("\n"滑如码橡亮)

}

}

}

如果你想学windows编程,强烈建议买《Windows程序设计(第五版)》,这本书虽然老了点,但对windows的原理讲解的很透彻,被称为windows编程圣经。作盯睁洞者是微软的专家,自然对微软的技术比较了解。如果早灶你看完这本,将来想学MFC或者windows的其他方面都会很有好处。

如果你想学linux方面的话,你就看看《Unix环境高级编程》,W.Richard Stevens的书本本都是经典,如果你想学网络方面的话,也可以看看凯枯他的《UNIX网络编程》

汉诺塔的一个经典案例就是用递归法解决问题

A、B、C三根柱子上放盘子

开始盘子都在A上

盘子必须按照小上打下的顺序放置

要求每次只能移动一个盘子

要将A上的盘子都移到B上。

分析:

设有n个盘子在A上,当n=1时搏指汪

只要将盘子从A->B

即可

当n>1时此问题可分解为以下步骤

1>

把n-1个盘子从柱子A移到C

2>

把第n个盘子从A移到B

3>

把n-1个盘子从C移到B

这是具体的算法

如果你不懂递归的话

这个程序就不好懂。

我给出一个递归的算法实现,你看看

#include

"stdio.h"

int

Hanoi(char

x,char

y,char

z,int

n)

{

if(n==1)

//对应第一种可能

{

printf("1:

%c

->%c\n",x,y)

}

else

//对应第二种可能

{

Hanoi(x,z,y,n-1)

//第二种可能的第一中移动方法

printf("%d:

%c

->%c\n",n,x,y)

Hanoi(z,y,x,n-1)

//第二种可能的第二种移动方法

}

return

0

}

int

main()

{

int

n

printf("请输入汉诺塔的高度:")

scanf("%d",&n)

printf("移动方案是:(系数代表第几个盘子

从上往下计数)\n")

Hanoi('A','B','C',n)

return

0

}

VC

6.0下编译成功!

这是典型的递归用法基仔。

你看这个程序应该跟明确逗帆些。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12422175.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存