17年内892真题参考答案
有的题做的不是很好,如果有看到的会的希望可以留言交流一下啦!
有的代码也是借鉴的别人的,算是在这里做了一个集总,应该没有侵权吧?若有侵权,联系必删!
package javaapplication6;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*
* @author lenovo
*/
public class JavaApplication6 {
/**
* @param args the command line arguments
* 2017年复试
* 1、输入一组数字序列,大小不超过500,遇到-1结束,判断升序与否,是升序,输出“YES”
* 2、判断不超过n的所有数中与7有关的数有多少个
* 3、输入一个正整数,判断这个数是否为回文数,若是,输出“YES”
* 4、输入两个字符串,str1和str2,将str2逆序之后连接到字符串str1后面,最后输出str1
* 5、进制数转换
* 6、蛇形矩阵
* 2017年初试
* 1、输入a,b,c三个数,输出其中最大值
* 2、求两个数的最大公约数和最小公倍数
* 3、输入a,b两个数,输出他们之间的素数
* 4、计算输入字符串的英文字母个数
* 5、将两个有序的数字数列合并为一个有序数列
* 6、出国留学时间为A年B月C日,回国时间为X年Y月Z日,设计一个程序计算其出国时间,包括出国及回国当天
* 7、递归程序,将输入的字符串反向输出
* 8、计算2/1,3/2.,5/3,8/5,13、8.。。。的前n项和
* 9、约瑟夫环
*/
public static void main(String[] args) {
// TODO code application logic here
/* Scanner sc=new Scanner(System.in);
//不会处理遇到-1结束
int []a=new int[5];
for(int i=0;i<a.length;i++){
a[i]=sc.nextInt();
}
for(int i=0;i<a.length-1;i++){
for(int j=0;j<a.length-1-i;j++){
if(a[j+1]<a[j]){
System.out.println("NO");return;
}
}
}
System.out.println("YES");
}
}*/
/* Scanner sc=new Scanner(System.in);
int n =sc.nextInt();
for(int i=1;i<=n;i++){
if(i%7==0){
System.out.println(i);
}
else{
int t=i;
while(t!=0){
if(t%10==7){
System.out.println(i);
} t/=10;
}
}
}}}*/
/*Scanner sc=new Scanner(System.in);
int n =sc.nextInt();
String str=String.valueOf(n);
for(int i=0;i<str.length();i++){
if(str.charAt(i)!=str.charAt(str.length()-i-1)){
System.out.println("NO");return;}
}
System.out.println("YES");}}*/
/*Scanner sc=new Scanner(System.in);
String str1=sc.next();
String str2=sc.next();
str1+=new StringBuilder(str2).reverse().toString();
System.out.println(str1);}}*/
/*Scanner sc=new Scanner(System.in);
System.out.println("请输入m");
int m =sc.nextInt();
System.out.println("请输入n");
int n = sc.nextInt();
System.out.println("请输入一个m进制的数字串");
String a=sc.next();
int b=Integer.parseInt(a,m);//以m进制接收a
//System.out.println(b);//输出m进制的a
String ss=Integer.toString(b,n);//将m进制的b转换为n进制
System.out.println(ss);
}}*/
/*Scanner sc=new Scanner(System.in);
int n =sc.nextInt();
int[][] a=new int[10][10];//不是很成功,定义了数组容量之后,可能会不合适,若大,则数组中会有许多初始化为0的值
int s=0,i=0,d=-1;
while(n>=1){
int cnt=0;
while(cnt<=s){
a[i][s-i]=n--;
cnt++;
i+=d;
}s++;
d=-d;
i=d>0?0:s;
}
for(int k=0;k<10;k++){
for(int j=0;j<10;j++){
System.out.print(a[k][j]);
}System.out.println();
}}}*/
//2017年初试
/*Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int a[]=new int [n];
for(int i=0;i<a.length;i++){
a[i]=sc.nextInt();
}
Arrays.sort(a);
for(int b:a){
System.out.print(b+" ");}
}}*/
/* Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int b=sc.nextInt();
int c=a*b;
System.out.println("最大公约数是"+gcd(a,b));
System.out.println("最小公约数是"+c/gcd(a,b));
}
public static int gcd(int a,int b){
if(b==0) return a;
else return gcd(b,a%b);
}}*/
/*Scanner sc =new Scanner(System.in);
int a=sc.nextInt();
int b=sc.nextInt();
for(int i=a;i<=b;i++){
if (isPrime(i)) System.out.print(i+" ");
}}
public static boolean isPrime(int num) {
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
boolean flag=true;
for (int i=2;i<Math.sqrt(num)+1;i++){
if(num%i==0){
flag=false;
break;}
}return flag;
}}*/
/*Scanner sc =new Scanner(System.in);
String str=sc.next();
char[] ch=str.toCharArray();
int count=0;
for(int i=0;i<ch.length;i++){
if((ch[i]>='a'&&ch[i]<='z')||(ch[i]>='A'&&ch[i]<='Z'))
count++;
}
System.out.println(count);}}*/
/*Scanner sc =new Scanner(System.in);
int n =sc.nextInt();
int m =sc.nextInt();
int a[]=new int[n];
int b[]=new int[m];
for(int i=0;i<n;i++){
a[i]=sc.nextInt();
}
for(int i=0;i<m;i++){
b[i]=sc.nextInt();
}
int c[]=new int[n+m];
for(int i=0;i<n;i++){
c[i]=a[i];
}
int index=n;
for(int i=0;i<m;i++){
c[index]=b[i];
index++;
if(index==n+m)
break;
}
Arrays.sort(c);
for(int i=0;i<n+m;i++){
System.out.print(c[i]+" ");
}}}*/
//若是用链表来将两个有序数列合并成一个,代码不成熟
/*Scanner sc =new Scanner(System.in);
JavaApplication6 list1=new JavaApplication6();
int n=sc.nextInt();
int m=sc.nextInt();
for(int i=0;i<n;i++){
list1.addNode(sc.nextInt());
}
JavaApplication6 list2=new JavaApplication6();
for(int i=0;i<m;i++){
list2.addNode(sc.nextInt());
}
//JavaApplication6.Node =mergeTwoList(list1,list2);不会处理两个链表的合并
}
Node head=null;
public class Node{
int data;
Node next=null;
public Node(int data){
this.data=data;
}
}
public void addNode(int data){
Node newNode=new Node(data);//为新节点分配内存空间
if(head.next==null){
head.next=newNode;
return;
}
Node tmp=head;
while(tmp.next!=null){
tmp=tmp.next;
}
tmp.next=newNode;
}
public void printList(){
Node tmp=head;
while(tmp!=null){
System.out.println(tmp.data+" ");
tmp=tmp.next;
}
}
public Node mergeTwoList(Node l1,Node l2){
Node dummyHead=new Node(0);
Node cur=dummyHead;
while(l1!=null&&l2!=null){
if(l1.data<=l2.data){
l1.next=mergeTwoList(l1.next, l2);
}
else{
l2.next=mergeTwoList(l1, l2.next);
}
}
if(l1==null) cur.next=l2;
else cur.next=l1;
return dummyHead.next;
}
}*/
/*Scanner sc =new Scanner(System.in);
String strLeave=sc.next();
String strComeBack=sc.next();
SimpleDateFormat sdf=new SimpleDateFormat("yyy-MM-dd");
try {
Date date1=sdf.parse(strLeave);
Date date2=sdf.parse(strComeBack);
System.out.println("两个日期差"+differentDaysMillisecond( date1, date2));
} catch (ParseException ex) {
Logger.getLogger(JavaApplication6.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static int differentDaysMillisecond(Date date1,Date date2){
int days=(int)((date2.getTime()-date1.getTime())/(1000*3600*24));
//getTime()方法返回一个整数值,代表了从1970年1/1日开始计算到Date对象中的时间的毫秒数
return days;
}}
*/
/*Scanner sc =new Scanner(System.in);
String str=sc.next();
reverseString(str);}
public static void reverseString(String str){
if(str.length()==1){
System.out.println(str);
}
else{
String str1=str.substring(0,str.length()-1);
String str2= str.substring(str.length()-1);
System.out.print(str2);
reverseString(str1);
}
}}*/
/* Scanner sc=new Scanner(System.in);
int a =sc.nextInt();
float fz=1.0f;
float fm=1.0f;
float sum=0f;
for(int i=1;i<=a;i++){
float temp= fm;
fm=fz;
fz=temp+fz;
float c =fz/fm;
sum+=c;}
System.out.println(sum);
}
}*/
Scanner sc=new Scanner(System.in);
int[] a=new int[sc.nextInt()];
for(int i=0;i<a.length;i++){
a[i]=1;
}
int left=a.length;
int j=0,num=0;
while(left>1){
if(a[j]==1) num++;
if(num==3){
a[j]=0;
num=0;
left--;
}j++;
if(j==a.length) j=0;
}
for(int i=0;i<a.length;i++){
if(a[i]==1)
{
System.out.println("最后留下的是"+(i+1)+"号");
}}
}}