内蒙古大学计算机2012复试真题解答

一.设计一个银行账户类,其中包括以下内容,并用字符界面模拟存款和取款过程。

1、账户信息 账户、姓名、开户时间、身份证号码等

2、存款方法

3、取款方法

4、其他方法,如“查询余额”和“显示账号”等

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

public class Bank {

private String acount;

private String name;

private String id;

private String time;

private double num;

public Bank() {}

public Bank(String acount,String name,String id,String time,double num) {

  this.acount=acount;

  this.name=name;

  this.id=id;

  this.time=time;

  this.num=num;

}

public String getAcount(){

  return acount;

}

public void setAcount(String acount){

  this.acount=acount;

}

public String getName() {

  return name;

}

public void setName(String name) {

  this.name=name;

}

public String getId() {

  return id;

}

public void setId(String id) {

  this.id=id;

}

public String getTime() {

  return time;

}

public void setTime(String time) {

  this.time=time;

}

public double getNum() {

  return num;

}

public void setNum(double num) {

  this.num=num;

}

public String toString() {

  return "Bank[账号是:"+acount+",姓名为:"+name+",身份证号是:"+id+",开户时间:"+time+",金额为:"+num;

}

public void cunkuan(double num) {

  this.num=this.num+num;

}

public void qukuan(double num) {

  if(num>this.num) {

     System.out.println("余额不足,不能取款");

  }else {

     this.num=this.num-num;

  }

}

public double GetAcountNum() {

  return this.num;

}

}

测试类:

import
java.util.Scanner;

public class Test {

public static void main(String[] args) {

  Bank bank = new Bank();

  bank.setAcount("ycinfo");

  bank.setId("3434343434343434343");

  bank.setName("小红");

  bank.setNum(1000);

  bank.setTime("2018年9月2号");

  bank.toString();

  System.out.println("************建行欢迎您!!!***********");

  for(int x=0;x<3;x++) {

     Scanner

sc = new Scanner(System.in);

     System.out.println("请输入你的账户是:");

     String acount = sc.nextLine();

     System.out.println("请输入你的密码:");

     String pwd = sc.nextLine();

     if (pwd.equals("123456") && acount.equals(bank.getAcount())) {

        System.out.println("登录成功!");

        nextOption(bank);

     }else if(2-x==0){

        System.out.println("账号被锁定");

     }else {

        System.out.println("密码或账户不正确,你还有"+(2-x)+"次机会");

     }

  }

}

  public static void nextOption(Bank bank) {

     while (true) {

     System.out.println("请输入一下操作:");

     System.out.println("1.存款");

     System.out.println("2.取款");

     System.out.println("3.显示账号");

     System.out.println("4.获取账号的金额");

     System.out.println("5.退出当前账户");

     Scanner sc2 = new Scanner(System.in);

     String option = sc2.nextLine();

     switch (option) {

     case "1":

        Scanner sc=new Scanner(System.in);

        System.out.println("请输入你要存的钱:");

        double num = sc.nextDouble();

        bank.cunkuan(num);

        System.out.println("当前金额为" + bank.getNum());

        break;

     case "2":

        System.out.println("请输入你要取的钱:");

        double num1 = sc2.nextDouble();

        bank.qukuan(num1);

        if (num1 > bank.getNum()) {

            System.out.println("余额不足,不能取款!您当前可用余额为:" + bank.getNum());

        } else {

            System.out.println("当前金额为:" + (bank.getNum()));

        }

        break;

     case "3":

        System.out.println("账号为:");

        System.out.println(bank.getAcount());

        break;

     case "4":

        System.out.println("当前账户金额为:" + bank.getNum());

        break;

     case "5":

        System.out.println("退出系统");

        System.exit(0);

        break;

     default:

        System.out.println("对不起,您的输入如有误");

        break;

     }

  }

}

}

二.怎样用递归算法写一个将二进制转换为十进制的程序?

非递归:

import
java.util.Scanner;

public class JinZhi {

public static void main(String[] args) {

  Scanner sc = new Scanner(System.in);

  System.out.println("请输入你要转换的二进制:");

  String two = sc.nextLine();

  int result=twototen(two);

  System.out.println("转化后的十进制为:"+result);

}

public static int twototen(String two) {

  int x=0;

  for(char c:two.toCharArray()) {

     x=x*2+(c=='1'?1:0);

  }

  return x;

}

}

递归:

import java.util.Scanner;

public class DiGui {

public static void main(String[] args) {

  Scanner

sc=new Scanner(System.in);

  System.out.println("输入二进制数:");

  int n=sc.nextInt();

  System.out.println(toten(n));

}

public static int toten(int n) {

  if(n==1||n==0) {

     return n;

  }

  return toten(n/10)*2+n%10;

}

}

非递归十进制转二进制:

import
java.util.Scanner;

public class JinZhi {

public static void main(String[] args) {

  Scanner sc=new Scanner(System.in);

  System.out.println("请输入十进制数");

  int s=sc.nextInt();   

  String Str ="";    

  while(s !=0){   

     Str+ =(s % 2) ;    

     s =s/2;

  }        

  System.out.println("输出二进制数为:"+Str);

}

}

递归十进制转二进制:

import
java.util.Scanner;

public class JinZhi1 {

public static void main(String args[]){

  Scanner sc=new Scanner(System.in);

  System.out.println("请输入十进制数:");

  int n=sc.nextInt();

  System.out.println("输出二进制数:");

    toBinary(n);

}

public static void toBinary(int n){

    if(n/2==0) {

        System.out.println(n%2);

    } else {

        toBinary(n/2);

        System.out.println(n%2);

    }

}

}

三.迭代求方程组的解

例子:使用牛顿迭代法求方程的解,X3-2x-5=0,在区间[2,3]上的根。

用牛顿迭代法三次求方程f(x)=x5-x2+x-30=0,在区间[1,3]中的近似值

public class Test {

public static void main(String[] args) {

     double x=2;

     for(int i=0;i<20;i++)  {

         x=-f(x)/f1(x)+x;

     }

     System.out.println(x+"");

 }

 static double f(double 

x) {

     double ans;

     ans=Math.pow(x, 3)-2*x-5;

     return ans;

 }

 static double f1(double 

x) {

     double ans;

     ans=3*Math.pow(x,2)-2;

     return ans;

 }

}

四.编写函数,完成n*n矩阵的转置操作,矩阵各元素随机生成。

import
java.util.Scanner;

public class ZhuanZhi {

public static void main(String[] args) {

  System.out.print("请输入所需要的n矩阵的阶数:");

  Scanner sc = new Scanner(System.in);

  int n = sc.nextInt();

  int row_number = n;

  int column_number = n;

  System.out.println("随机生成的矩阵A为:");

  int a[][]=create_Matrix(row_number, column_number);

  System.out.println("转置后的矩阵:");

  Matrix(a);

}

public static int[][] create_Matrix(int row_number, int column_number) {

  int matrixA[][] = new int[row_number][column_number];

  for (int i = 0; i <= row_number - 1; i++) {

     for (int j = 0; j <= column_number - 1; j++) {

        matrixA[i][j] = random_number();

        System.out.print(matrixA[i][j] + " ");

     }

     System.out.println();

  }

  return matrixA;

}

public static int random_number() {

  int number;

  number = new java.util.Random().nextInt(100) +

1;

  return number;

}

public static int[][] Matrix(int [][] a){

  int row_number=a.length;

  int column_number=a[0].length;

  int [][] b=new int [row_number][column_number];

  for (int i = 0; i < row_number ; i++) {

     for (int j = 0; j < column_number ; j++) {

        

        b[i][j]=a[j][i];

        

        System.out.print(b[i][j]+" ");

     }

     System.out.println();

  }

  return b;

}

}

五:编写程序:计算π的近似值,π的计算公式为:

π=2×(2×2/1×3)×(4×4/3×5)×(6×6/5×7)×……[2n×2n/(2n-1)×(2n+1)]注:分别输出当 n 为10、100、1000时的计算结果,n值由键盘输入。

import
java.util.Scanner;

public class PI {

public static void main(String[] args) {

  Scanner sc=new Scanner(System.in);

  System.out.println("请输入n:");

  int n=sc.nextInt();

  double pi=count(n);

  System.out.println("pi="+pi);

}

public static double count(int n) {

  double sum=2.0;

  int i = 1;

  while( i<=n) {

     sum*=(2.0*i*2.0*i)/((2.0*i-1.0)*(2.0*i+1.0));

     i++;

  }

  return sum;

}

}

请文明使用资源,如果发现有代码错误或者不懂欢迎留言评论。

发布了10 篇原创文章 · 获赞 0 · 访问量 192

猜你喜欢

转载自blog.csdn.net/gj55678/article/details/105340351