内蒙古大学2017年复试真题解答

一. 输入一组由正整数组成的数字序列,序列大小不超过500,遇到-1结束输入,判断这个数字序列是否是升序。如果是升序,输出“YES”,如果不是升序,输出“NO”。

import
java.util.Scanner;

public class ShengJiang {

public static void main(String[] args) {

  Scanner sc=new Scanner(System.in);

  System.out.println("数组的长度:");

  int n=sc.nextInt();

  int[] a=new int[n];

  System.out.println("输入一个数组:");

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

     if(a[i]==-1) {

        break;

     }else {

        a[i]=sc.nextInt();

     }

  }

  boolean flag=false;

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

     if(a[j]<a[j+1]) {

        flag=true;

     }else {

        flag=false;

     }

  }

  if(flag) {

     System.out.println("YES");

  }else {

     System.out.println("NO");

  }

}

}

二. 输入一个正整数n,判断不超过n的所有数中与7有关的数有多少个。如果某个数是7或者是7的倍数,或者这个数的某一位是7,那么这个数便与7有关。举个例子,如果输入的n是20,那么20以内与7有关的数便是:7、14、17,最终输出结果是3。

import
java.util.Scanner;

public class LianXi {

public static void main(String[] args) {

  Scanner sc=new Scanner(System.in);

  System.out.println("输入一个数字:");

  int N=sc.nextInt();

  int count=0;

  for(int i=1;i<=N;i++) {

     if(i%7==0||i%10==7) {

        count++;

     }

  }

  System.out.println("一共有多少个和7相关的数字:"+count);

}

}

三. 输入一个正整数,判断这个数是否是“回文数”。所谓“回文数”,便是正着念和反着念都一样的数。比如,1、11、121、1221、12321,都是回文数。如果这个输入的数是回文数,那么输出“YES”,如果不是回文数,输出“NO”。

方法一:

import
java.util.Scanner;

public class HuiWenShu {

public static void main(String[] args) {

  Scanner sc=new Scanner(System.in);

  System.out.println("输入一个整数:");

  int n=sc.nextInt();

  String str1=n+"";

  StringBuilder str2=new StringBuilder(str1);

  str2.reverse();

  int count=0;

  for(int i=0;i<str1.length();i++) {

     if(str1.charAt(i)!=str2.charAt(i)) {

        System.out.println(str1+"不是回文数");

        break;

     }else {

        count++;

     }

  }

  if(count==str1.length()) {

     System.out.println(str1+"是回文数");

  }

}

}

方法二:

import
java.util.Scanner;

public class HuiWenShu {

public static void main(String[] args) {

  Scanner sc=new Scanner(System.in);

  System.out.println("输入一个整数:");

  int s=sc.nextInt();

  String str=String.valueOf(s);

  StringBuilder BD=new StringBuilder(str);

  if(BD.reverse().toString().equals(str)) {

     System.out.println("Yes");

  }else {

     System.out.println("No");

  }

}

}

方法三:

import
java.util.Scanner;

public class FanZhuan {

public static void main(String[] args) {

  Scanner sc=new Scanner(System.in);

  System.out.println("输入一个整数:");

  String s=sc.nextLine();

  char[] chs=s.toCharArray();

  String result="";

  for(int i=chs.length-1;i>=0;i--) {

     result+=chs[i];

  }

  if(s.equals(result)) {

     System.out.println("Yes");

  }else {

     System.out.println("No");

  }

}

}

四. 输入两个字符串,str1 和 str2,将字符串 str2 逆序之后连接到字符串 str1 后面,最后输出str1。举个例子,如果输入的字符串 str1 是"abc", 字符串 str2 是"123",那么逆序连接之后,输出的结果为"abc321"。

方法一:

import
java.util.Scanner;

public class FanZhuan {

public static void main(String[] args) {

  Scanner sc=new Scanner(System.in);

  System.out.println("请输入第一个字符串:");

  String s1=sc.nextLine();

  System.out.println("请输入第二个字符串:");

  String s2=sc.nextLine();

  StringBuilder bd=new StringBuilder(s2);

  String s3=bd.reverse().toString();

  System.out.println(s1+s3);

}

}

方法二:

import
java.util.Scanner;

public class FanZhuan {

public static void main(String[] args) {

  Scanner sc=new Scanner(System.in);

  System.out.println("请输入第一个字符串:");

  String s1=sc.nextLine();

  System.out.println("请输入第二个字符串:");

  String s2=sc.nextLine();

  String result="";

  char [] s3=s2.toCharArray();

  for(int x=s3.length-1;x>=0;x--) {

     result+=s3[x];

  }

  System.out.println(s1+result);

}

}

五. 首先输入两个正整数,m(2<=m<=36)和n(2<=m<=36),然后输入一个m进制的数字串,将这个数字串转换为n进制并输出。如果进制超过9,那么用小写字母’a’到’z’依次表示10~35的数字。(假设数字串对应的十进制数用int存储不溢出)。

六. 输入一个正整数n(n<=30),输出n所对应的蛇形矩阵。举两个例子:

n=10时,蛇形矩阵为:

具体的蛇形矩阵变化路径见下图:

思路:是按顺序将递减的数字依次填到相应的位置,解题的关键是如何确认下一步的矩阵位置。变量 s 控制路径拐弯之后到下一次拐角之间的路径长度,变量 i 控制下一个位置的行号,s-i 控制下一个位置的列号,d 控制路径方向(向下走还是向上走),n 控制下一个要填的数字。有了下一个矩阵的位置和数字,将数字递减到 1 即可生成蛇形矩阵。

一个小窍门:是在矩阵中标出每个位置的行号和列号 (i,j) ,然后观察 i 和 j 的变化规律,想出办法用几个变量去控制这个规律即可。

import java.util.Scanner;

public class SheXing {

public static void main(String[] args) {

  Scanner

sc=new Scanner(System.in);

  System.out.println("请输入一个数字(小于等于30):");

  int n=sc.nextInt();

  int [][] a=new int [n][n];

  show(n,a);

}

public static void show(int n,int [][] a) {

  int i=0,s=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;

  }

  int j;

  for(i=0;i<10;i++) {

     if(a[i][0]<=0) {

        break;

     }

     for(j=0;j<10;j++) {

        if(a[i][j]>0) {

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

        }

     }

     System.out.println();

  }

}

}

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

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

猜你喜欢

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