1、(数列排序)给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int length = sc.nextInt();
int a;
int[] A=new int[length];
for(int i=0;i<length;i++){
A[i]=sc.nextInt();
}
for(int i=length/2;i>0;i=i/2){
for(int j=i;j<length;j++){
a=A[j];
int b=j;
while(b-i>=0&&a<A[b-i]){
A[b]=A[b-i];
b=b-i;
}
A[b]=a;
}
}
for(int i=0;i<length;i++){
System.out.print(A[i]+" ");
}
}
}
2、(十六进制转八进制)给定n个十六进制正整数,输出它们对应的八进制数。
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int length = sc.nextInt();
int a;
char[][] A=new char[length][];
for(int i=0;i<length;i++){
//将输入的数转化为字符放到字符数组中
A[i]=new StringBuilder(sc.next()).toString().toCharArray();
}
sc.close();//****
for(int i=0;i<length;i++){
//将十六进制转化为二进制
String str1=sTot(A[i]);
int len=str1.length();
//二进制转为八进制
//若不是3的倍数需要在最左端添0
if(len%3==1)
str1="00"+str1;
if(len%3==2)
str1="0"+str1;
//将二进制转化为八进制
String str2=tToe(str1);
System.out.println(str2);
}
}
//将十六进制转化为二进制
private static String sTot(char[] A){
StringBuilder str3=new StringBuilder();
for(int i=0;i<A.length;i++){
switch(A[i]){
case '0':
str3.append("0000");
break;
case '1':
str3.append("0001");
break;
case '2':
str3.append("0010");
break;
case '3':
str3.append("0011");
break;
case '4':
str3.append("0100");
break;
case '5':
str3.append("0101");
break;
case '6':
str3.append("0110");
break;
case '7':
str3.append("0111");
break;
case '8':
str3.append("1000");
break;
case '9':
str3.append("1001");
break;
case 'A':
str3.append("1010");
break;
case 'B':
str3.append("1011");
break;
case 'C':
str3.append("1100");
break;
case 'D':
str3.append("1101");
break;
case 'E':
str3.append("1110");
break;
case 'F':
str3.append("1111");
break;
default:
break;
}
}
return str3.toString();//返回对象的字符串表示
}
//将二进制转化为八进制
private static String tToe(String str4){
StringBuilder str5=new StringBuilder();
int n=0;
//转换为八进制后可能第一位为0
if(str4.substring(0,3).equals("000"))
n=3;
for(int i=n;i<str4.length()-2;i+=3){
String str6=str4.substring(i,i+3);
switch(str6){
case "000":
str5.append("0");
break;
case "001":
str5.append("1");
break;
case "010":
str5.append("2");
break;
case "011":
str5.append("3");
break;
case "100":
str5.append("4");
break;
case "101":
str5.append("5");
break;
case "110":
str5.append("6");
break;
case "111":
str5.append("7");
break;
default:
break;
}
}
return str5.toString();
}
}
3、(十六进制转十进制)从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
//将输入的数转化为字符放到字符数组中
char[] A=new StringBuilder(sc.next()).toString().toCharArray();
sc.close();//****
long res=0;//注意用long型防止溢出
for(int i=A.length-1;i>=0;i--){
if(A[i]>'0'&&A[i]<'9'){
//这里可以用字符相减得到整型数
//等式的右边也要进行强制转化
res+=(long)((A[i]-'0')*Math.pow(16,A.length-i-1));
}else{
//这里只能一个一个进行赋值
int x=0;
switch(A[i]){
case 'A':
x=10;
break;
case 'B':
x=11;
break;
case 'C':
x=12;
break;
case 'D':
x=13;
break;
case 'E':
x=14;
break;
case 'F':
x=15;
break;
default:
break;
}
res+=(long)(x*Math.pow(16,A.length-i-1));
}
}
//期望输出的是整型
System.out.print(res);
}
}
4、(十进制转十六进制)十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
给出一个非负整数,将它表示成十六进制的形式。
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
//将十进制转化为二进制字符串
long ten=sc.nextInt();
StringBuilder two=new StringBuilder();
if(ten==0){
System.out.print(0);
}else{
while(ten!=0){
if(ten%2==0){
two.append("0");
}else{
two.append("1");
}
ten/=2;
}
//如果two的长度不是4的倍数,就在前面添零
if(two.length()%4==1){
two.append("000");
}else if(two.length()%4==2){
two.append("00");
}else if(two.length()%4==3){
two.append("0");
}
two.reverse();//将字符串two翻转过来
StringBuilder sixteen=new StringBuilder();
String str;
for(int i=0;i<two.length()-3;i+=4){
str=two.substring(i,i+4);
switch(str){
case "0000":
sixteen.append("0");
break;
case "0001":
sixteen.append("1");
break;
case "0010":
sixteen.append("2");
break;
case "0011":
sixteen.append("3");
break;
case "0100":
sixteen.append("4");
break;
case "0101":
sixteen.append("5");
break;
case "0110":
sixteen.append("6");
break;
case "0111":
sixteen.append("7");
break;
case "1000":
sixteen.append("8");
break;
case "1001":
sixteen.append("9");
break;
case "1010":
sixteen.append("A");
break;
case "1011":
sixteen.append("B");
break;
case "1100":
sixteen.append("C");
break;
case "1101":
sixteen.append("D");
break;
case "1110":
sixteen.append("E");
break;
case "1111":
sixteen.append("F");
break;
}
}
System.out.print(sixteen);
}
}
}
5、(查找整数)给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int length=sc.nextInt();
int[] A=new int[length];
for(int i=0;i<length;i++){
A[i]=sc.nextInt();
}
int tag=sc.nextInt();
int i=0;
for(;i<length;i++){
if(A[i]==tag){
System.out.print(i+1);
break;
}
}
if(i==length){
System.out.print(-1);
}
}
}
6、(数列特征)给出n个数,找出这n个数的最大值,最小值,和。
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int length=sc.nextInt();
int[] A=new int[length];
for(int i=0;i<length;i++){
A[i]=sc.nextInt();
}
int sum=0;
int max=A[0];
int min=A[0];
for(int i=0;i<length;i++){
if(A[i]>max)
max=A[i];
if(A[i]<min){
min=A[i];
}
sum+=A[i];
}
System.out.println(max);
System.out.println(min);
System.out.println(sum);
}
}