作业3

课后作业01

1

程序设计思想:

先输入需要求的组合数的m和k;然后利用阶乘直接求出结果即可;再写输出语句。

程序流程图:

源代码:

package lianxi;
import java.util.Scanner;
public class Zuheshu3
{
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);

System.out.println("请输入n和k的值");

int n=input.nextInt();

int k=input.nextInt();

System.out.println("C"+"("+n+","+k+")"+"="+digui(n,k));
}
public static int digui(int n,int k)
{
if(n<k)
{
System.out.println("输入错误!");
}
if(k==1)
{
return 1;

}
if(n==k)
{
return 1;
}

return digui(k-1,n-1)+digui(k,n-1);

}

}

 
   

实验总结:

在传参部分遇到一些问题,没有定义参数类型。

 2

程序设计思想:

先输入n和k;利用公式调用自己计算出结果。

程序流程图:

源代码:

package lianxi;

import java.util.Scanner;                   

public class Zuheshu2 {

 

    public static void main(String args[]){    //定义主方法

        System.out.println("输入m和k的值:"); //输入组合数

        Scanner sc=new Scanner(System.in);

        int n=sc.nextInt();

        int k=sc.nextInt();

        int result=digui(n,k);

if (n < k || n <= 0 || k <= 0) {

            System.out.println("n,k数据输入不合理");

           }

        System.out.println("C("+n+","+k+")="+result);                //调用方法求组合数

    }

    public static int digui(int n,int k)           //定义求组合数方法

    {

        if(k==0||k==n)                            //方法结束条件

            return 1;

        else

            return digui(n-1,k)+digui(n-1,k-1);  //杨辉三角计算组合数递归调用

    }

}

 3

程序设计思想:

通过对组合数递推公式的递归实现,输出组合数的数值。

程序流程图:

 
   

 

源代码:

package lianxi;

import java.util.Scanner;

public class Zuheshu3

{

       public static void main(String[] args)

       {

              Scanner input=new Scanner(System.in);

 

              System.out.println("请输入n和k的值");

 

              int n=input.nextInt();

 

              int k=input.nextInt();

 

              System.out.println("C"+"("+n+","+k+")"+"="+digui(n,k));

       }

       public static int digui(int n,int k)

       {

              if(n<k)

              {

                     System.out.println("输入错误!");

              }

              if(k==1)

              {

                     return 1;

 

              }

              if(n==k)

              {

                     return 1;

              }

 

              return digui(k-1,n-1)+digui(k,n-1);

 

       }

 

}

实验结果截图:

 课后作业02:

设计思想:

定义主函数,然后输入移动盘子的个数,再调用移动的函数,在移动的函数中写移动盘子的方法。

程序流程图:

源代码:

package lianxi;
import java.util.*;
public class Hanoi {
public void hanoi(int n,char one,char two,char three)
{
if(n==1)
move(one,three);
else
{
hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
}
}
void move(char x,char y)
{
System.out.println(x+"-->"+y+" ");
}
public static void main(String[] args) {
Hanoi H=new Hanoi();
int m;
System.out.println("input the number of diskes:");
Scanner sc=new Scanner(System.in);
m=sc.nextInt();
System.out.println("The steps to move"+m+"diskes:");
H.hanoi(m,'A','B','C');

}

}

实验结果截图:

 

实验总结:

在实验中比较麻烦的是移动盘子的方法,经过查阅书籍,了解到其方法,理解了设计思想,便解决了这个问题。

 课后作业03

程序设计思想:

创建一个字符串数组,输入字符串,再创建一个字符串数组,利用reverse函数使字符串反过来存入新字符串数组中。然后判断两个字符串中每一个字符是否相等,最后看相等的字符是否相等,若等于字符串长度则等于字符串长度,若是则是回文字符串,若不是,则不是回文字符串。

程序流程图

 

源代码:

package lianxi;

import java.util.*;

public class Huiwen {

 public static void main(String[] args) {

 String str="";

 System.out.println("请输入一个字符串:");

 Scanner in=new Scanner(System.in);

 str=in.nextLine();

 StringBuffer sb=new StringBuffer(str);

 sb.reverse();

 int n=0;

 for(int i=0;i<str.length();i++){

 if(str.charAt(i)==sb.charAt(i))

 n++;

 }

 if(n==str.length())

 System.out.println(str+"是回文!");

 else

 System.out.println(str+"不是回文!");

 }

 

}

实验结果截图:

实验总结:

在开始使字符串倒置不知道用什么函数,后来经过百度了解到reverse函数,可以解决这个问题。

原文地址:https://www.cnblogs.com/zzh2019979439/p/7664434.html