最新消息:

根据代码自动生成流程图(根据程序代码画流程图和根据流程图自动写代码的程序)

媒体模版 admin 浏览 评论

首先定义一个抽象的类Person,里面有一个成员变量name,然后在构造方法中用this.name=name给它赋初值。接着又定义一个抽象的方法。

然后创建一个student类去继承这个抽象类,注意,抽象类的子类必须实现其父类的所有方法,也可以定义自己的属性和方法,这里String grade;

String specialty;

就是子类自己定义的属性。

然后在继承的showinfo();方法中,子类去实现具体的方法。

子类的构造方法中,首先调用父类的构造方法,super();

然后写一个主方法,给变量赋值,再调用showinfo();方法,输出信息!

char a,b,c;

{if(n==1) printf("%c-->%c\n",a,c);

else{hanoi(n-1,a,c,b);

printf("%c-->%c\n",a,c);

hanoi(n-1,b,a,c);}

}

我给你详细解释下这个程序中的代码吧。我也是刚学,希望对你有用。可能有些不好之处,还希望谅解。

先说下这个问题的整体思想:

1,如果只有1个盘,那么就直接把这个盘从A移动到C上。

2,如果存在两个盘,那么先把第一个盘移动到B上,在把最下面一个盘移动到C上,在把B上的盘移动到C上。

3,这样,我们可以得出一个结论,如果存在N个盘,可以先把上面N-1个盘通过C移动到B上,然后把第N个盘移动到C上,再把B上的N个盘通过A移动到C上。

if(n==1) printf("%c-->%c\n",a,c);

这一句,表示只有1个盘子的时候,那么就是把第一个盘子直接移到第三个盘子上。

else{hanoi(n-1,a,c,b);

如果超过一个盘字,则需要先把N-1个盘子通过C移动到B上。

printf("%c-->%c\n",a,c);

把剩下的第N个盘,从A移动到C上。

hanoi(n-1,b,a,c);}

再把剩下的在B上的N-1个盘,通过A移动到C上。

这属于一个递归算法。

现在,N=3。

我们看下程序怎么运行的。

else{hanoi(n-1,a,c,b);

printf("%c-->%c\n",a,c);

hanoi(n-1,b,a,c);}

N=3,也就是开始程序会执行

hanoi(2,a,c,b);这句语句。

再看,2还是大于1,所以

程序会继续运行。注意,这里,为hanoi(2,a,c,b); C和B换了位置。

hanoi(2,a,c,b);

我们把数字代入,得出。

根据 N=2,C和B互换。以及下面的代码,得出

````````````````````````````````````````````````

hanoi(n,a,b,c)

int n;

char a,b,c;

{if(n==1) printf("%c-->%c\n",a,c);

else{hanoi(n-1,a,c,b);

printf("%c-->%c\n",a,c);

hanoi(n-1,b,a,c);}

}

```````````````````````````````````````````````

hanoi(2,a,c,b)

int n=2;

char a,c,b;

{if(n==1) printf("%c-->%c\n",a,b);

else{hanoi(1,a,b,c);

printf("%c-->%c\n",a,b);

hanoi(1,c,a,b);}

}/这并不是正确的代码,只是为了得出答案而写的一些数据。/

这样,我们可以看出,程序会先执行

else{hanoi(1,a,b,c);

所以,开始会先输出A C(中间的符号省略,以下也一样)

然后,再输出

printf("%c-->%c\n",a,b); A B

接着,执行

hanoi(1,c,a,b);}这时候,就是C B了。

也就是说 hanoi(2,a,c,b)的输出为 AC AB CB

你的问题就已经解决了。

接下来再返回第一层:

现在,N=3。

我们看下程序怎么运行的。

else{hanoi(n-1,a,c,b);

printf("%c-->%c\n",a,c);

hanoi(n-1,b,a,c);}

这时候,我们再把数字代进去。

现在,N=3。

我们看下程序怎么运行的。

else{hanoi(2,a,c,b);

printf("%c-->%c\n",a,c);

hanoi(2,b,a,c);}

根据上面的结论

/也就是说 hanoi(2,a,c,b)的输出为 AC AB CB/

可以看出,先执行第一条语句:

else{hanoi(2,a,c,b);

则输出 AC AB CB

再执行第二条语句:

printf("%c-->%c\n",a,c);

输出 AC

然后执行第三条

hanoi(2,b,a,c);}

根据这里,/也就是说 hanoi(2,a,c,b)的输出为 AC AB CB/

字母进行替代后,A变B,C变A B变C。

所以输出的AC AB CB则为

BA BC AC

所以,最终的结果为 AC AB CB AC BA BC AC

中间可能有很多废话,可以不看。

这样算下去,不管多少层都能推算出来,可复杂度会高得难以想像。

1、传统流程图:

2、思路:比大小,10个数,标上标签,依次为1,2,3....10。然后第1个跟第二个比较大小,如果第1个大于第二个,那么交换下1跟2的标签,如果第1个不大于2第二个,不交换标签,接着比较第二个跟第三个,比完最后一个为止。10标签的就是最大的那个数。

3、用C语言方法:

读入a[1~10]

max=a[1];

for(i=1;i<=10;i++)// i从1~10查找

if(max<a[i]) max=a[i];

输出max

结束

转载请注明:片头模版 » 根据代码自动生成流程图(根据程序代码画流程图和根据流程图自动写代码的程序)

发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)

网友最新评论 ()