您的位置:首页 > 理论基础

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

2020-04-22 01:53 786 查看

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

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;

}

}

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

  • 点赞
  • 收藏
  • 分享
  • 文章举报
郭壮实 发布了11 篇原创文章 · 获赞 0 · 访问量 507 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: