内蒙古大学计算机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;
}
}
请文明使用资源,如果发现有代码错误或者不懂欢迎留言评论。
- 点赞
- 收藏
- 分享
- 文章举报
- 内蒙古大学计算机2019年复试真题解答
- 内蒙古大学计算机2015年复试真题解答
- 内蒙古大学2017年复试真题解答
- 龚思雨东华理工大学计算机复试真题2019
- 2006年内蒙古大学考研计算机真题__算法设计
- 2008年内蒙古大学考研计算机真题__算法设计
- 北京航空航天大学计算机系考研复试上机真题及答案---2014
- 2005年内蒙古大学考研计算机真题__算法设计
- 2012北邮计算机考研复试上机题解
- 2012南大计算机复试
- 2007年内蒙古大学考研计算机真题__算法设计
- 浙江大学计算机系硕士研究生复试题目解答(1)
- 浙江大学计算机系硕士研究生复试题目解答(2)
- 北邮计算机考研复试题的C语言解答精选
- 2006年清华大学计算机复试机试真题(求N的阶乘 N <= 1000)
- 2018武汉理工大学计算机考研真题+复试经验
- 2012 HIT计算机研究生机试真题
- 从计算机复试看中国教育——一个面试官的经历
- 2013年计算机联考真题——确定主元
- 201712-1最小差值——CCF计算机软件能力认证试题历届真题