2018北邮计算机院机试真题(回忆版,答案仅供参考)
根据刚机试结束的同学回忆,今年北邮机试题目下,并附上本人解答。(应该有一些细节没考虑,如果发现问题,欢迎留言指正交流)
大神就当看个笑话 =。=
Problem A
题目:
输入数据0-2的32次方范围,化成二进制,然后逆序这个二进制序列,转换成十进制。
测试数据:
2
输出:
1
测试数据:
10
输出:5
java代码
import java.util.Scanner;
public class Main_com_01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long n = sc.nextLong();
String str = Long.toBinaryString(n);
long num = 0;
for(int i=str.length()-1;i>=0;i--) {
num += (long)Integer.parseInt((str.charAt(i)+"")) * Math.pow(2, i);
}
System.out.println(num);
}
}
ProblemB
题目:输出图象数字(差不多是这种类型的题,可能输入格式不太对,因为没有原题)
输入:
0-9任意一个数字
输出:
输出对应的5*3的图像数字。
测试数据:
2
输出:
111
001
111
100
111
java代码
import java.util.Scanner;
public class Main_com_02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[][] digit = new int[5][3];
int num = sc.nextInt();
if(num == 0) {
for(int i = 0;i<5;i++) {
for(int j = 0;j<3;j++) {
if(i==0||i==4||j==0||j==2) {
digit[i][j] = 1;
}
}
}
print(digit);
}else if(num == 1) {
for(int i = 0;i<5;i++) {
for(int j = 0;j<3;j++) {
if(j==2) {
digit[i][j] = 1;
}
}
}