zoukankan      html  css  js  c++  java
  • 作业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函数,可以解决这个问题。

  • 相关阅读:
    二,数据类型与流程控制语句
    一,cmd指令集与变量
    web第九天,浮动与定位
    web第八天,PS切图与float浮动
    web第七天,标签分类
    web第六天,CSS优先级与盒子模型
    web第五天复合样式与选择器
    web第四天,CSS基础
    web第三天 表单与css基础
    装饰器
  • 原文地址:https://www.cnblogs.com/zzh2019979439/p/7664434.html
Copyright © 2011-2022 走看看