1.1 反转字符串(Java)

【问题描述】写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。
【输入形式】输入N个字符
【输出形式】输出该字符串反转后的字符串

【样例输入】
abcd

【样例输出】
dcba

【代码】

package a;
import java.util.Scanner;
public class A1 {
    public static void main(String[] args) {
        Scanner str = new Scanner(System.in);
            String s = str.nextLine();  
            for (int i = s.length()-1; i >= 0; i--) 
            {
                System.out.print(s.charAt(i));
            }               
    }   
}

复杂一点点:

package a;
import java.util.Scanner;
public class A1 {
    public static void main(String[] args) {
        Scanner str = new Scanner(System.in);
            String s = str.nextLine();  
            byte[] b = s.getBytes();//转换为字节数组
            for (int i = b.length-1; i >= 0; i--) 
            {
                System.out.print((char)b[i]);
            }               
    }   
}




1.2 找朋友(JAVA)

【问题描述】
两个人是朋友通常意味着他们存在着许多共同的兴趣。然而作为一个宅男,你发现自己与他人相互了解的机会并不太多。幸运的是,你意外得到了一份湖大图书馆的图书借阅记录,于是你挑灯熬夜地编程,想从中发现潜在的朋友。
首先你对借阅记录进行了一番整理,把N个读者依次编号为1,2,…,N,把M本书依次编号为1,2,…,M。同时,按照“臭味相投”的原则,和你喜欢读同一本书的人,就是你的潜在朋友。你现在的任务是从这份借阅记录中计算出每个人有几个潜在朋友。

【输入形式】
每个案例第一行两个整数N,M。接下来有N行,第i(i = 1,2,…,N)行每一行有一个数,表示读者i-1最喜欢的图书的编号P(1<=P<=M)

【输出形式】
每个案例包括N行,每行一个数,第i行的数表示读者i有几个潜在朋友。如果i和任何人都没有共同喜欢的书,则输出“BeiJu”(即悲剧,^ ^)

【样例输入】
4 5
2
3
2
1

【样例输出】
1
BeiJu
1
BeiJu

【代码】

package a;
import java.io.*;
import java.util.Scanner;

public class A2 {
	public static void main(String []args){
		Scanner N = new Scanner(System.in);
		int reader = N.nextInt();
		int book = N.nextInt();
		int i;
		int[] readers = new int[reader];
		int[] books = new int[book];
		
		for(i=0;i<book;i++){
			books[i] = -1;//初始化为-1
		}
		
		for(i=0;i<reader;i++){
			readers[i] = N.nextInt();
			books[readers[i]-1]++;//数字一致则加1
		}
		N.close();
		
		for(int j=0;j<reader;j++)
		{
			for(i=0;i<book;i++)
			{
				if(readers[j]-1 == i)//若该读者读这本书
				{
					if(books[i] != 0)//若不等于0,表示不是悲剧,输出数字
					{
						System.out.println(books[i]);
					}
					else
					{
						System.out.println("BeiJu");//否则输出悲剧
					}
				}
			}
		}
	}
}




1.3 算int型二进制1的个数(JAVA)

【问题描述】
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。

【输入形式】
输入一个整数int类型

【输出形式】
这个数转换成2进制后,输出1的个数

【样例输入】
5

【样例输出】
2

【代码】

package a;
import java.util.Scanner;

public class A3 {
	public static void main(String[] args){
		Scanner s=new Scanner(System.in);
		
		int number=0;
		number = s.nextInt();
		s.close();
 
		int count = 0;
		while(number!=0)
		{
			if(number%2==0) 
			{
				number/=2;
			}
			else
			{
				count++;
				number/=2;
			}
		}
		System.out.print(count);
	}
}

方法2:

package a;
import java.util.Scanner;

public class A3 {
	public static void main(String[] args){
		Scanner s=new Scanner(System.in);
		
		int number=0;
		number = s.nextInt();
		s.close();
 
		int count = 0;
		String str=Integer.toBinaryString(number);//转化的二进制以字符串的形式返回
		int len=str.length();
		for(int i=0;i<len;i++)//遍历字符串查找是否有1
		{
			if(str.charAt(i)=='1')
				count++;
		}
		System.out.print(count);
	}
}




1.4 情报加密(JAVA)

【问题描述】
在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报被破译,但仍然能防止情报被轻易的识别。我们给出一种最简的的加密方法,对给定的一个字符串,把其中从a-y,A-Y的字母用其后继字母替代,把z和Z用a和A替代,则可得到一个简单的加密字符串。

【输入形式】
可能有多组测试数据。每组测试数据的第一行是字符串的数目n,其余n行每行一个字符串,每个字符串长度小于80个字符。

【输出形式】
对于每组数据,输出每行字符串的加密字符串。

【样例输入】
1
Hello! How are you!

【样例输出】
Ifmmp! Ipx bsf zpv!

【代码】

package a;
import java.util.Scanner;

public class A4 {
	public static void main(String[] args){
		Scanner scan = new Scanner(System.in);
		int num = 0;
		char c;
		num = scan.nextInt();
		scan.nextLine();
		String[] str = new String[num];
		
		for(int i=0;i<num;i++){
			str[i] ="";
		}
	
		if(scan.hasNextLine()){
			for(int k=0;k<num;k++){
				str[k] = scan.nextLine();
				for(int j=0;j<str[k].length();j++){
					c=str[k].charAt(j);
					if(c=='z'){
						System.out.print("a");
					}
					else if(c=='Z') 
					{
						System.out.print("A");
					}
					else if((c < 'z' && c >= 'a')||(c < 'Z' && c >= 'A')){
						c++;
						System.out.print(c);
					}
					else{
						System.out.print(c);
					}
				}
				System.out.println();
			}
		}
		scan.close();
	}		
}




1.5 计算日期(JAVA)

【问题描述】
给出年分m和一年中的第n天,算出第n天是几月几号。

【输入形式】
输入包括两个整数y,n

【输出形式】
可能有多组测试数据,对于每组数据,按yyyy-mm-dd的格式将输入中对应的日期打印出来。

【样例输入】
2000 3
2000 31
2000 40
2000 60

【样例输出】
2000-01-03
2000-01-31
2000-02-09
2000-02-29

【代码】

package a;
import java.util.Scanner;

public class A5 {
	public static boolean Yearop(int year){//判断是否为闰年
		if(((year%4==0)&&(year%100!=0))||(year%400==0)){
			return true;
		}
		else return false;
	}
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int year = 0;
		int days = 0;		
		int month = 0;
		
		int[] day = {31,28,31,30,31,30,31,31,30,31,30,31};
		
		while(scan.hasNextInt()){
			year = scan.nextInt();
			days = scan.nextInt();
			if(Yearop(year)){//若为闰年,二月份天数为29
				day[1]=29;
				for(int i=0;i<12;i++){
					if(days<=day[i]){
						month = i+1;
						break;
					}
					days -= day[i];
				}
			}
			else{
				for(int i=0;i<12;i++){
				    if(days<=day[i]){
					    month = i+1;
					    break;
				    }
				days -= day[i];
				}
			}
			
			//规范输出格式
			if(month<10){
				System.out.print(year+"-0"+month);
			}
			else{
				System.out.print(year+"-"+month);
			}
			if(days<10){
				System.out.println("-0"+days);
			}
			else{
				System.out.println("-"+days);
			}
		}
	}
}




1.6 求近似数(JAVA)

【问题描述】
写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。

【输入形式】
输入一个正浮点数值

【输出形式】
输出该数值的近似整数值

【样例输入】
5.5

【样例输出】
6

【代码】

package a;
import java.util.Scanner;

public class A6 {
	public static void main(String[] args){
		Scanner scan = new Scanner(System.in);
		
		float x = 0.0f;
		
		if(scan.hasNextFloat()){
			x = scan.nextFloat();
		}
		scan.close();

		System.out.print(Math.round(x));//调用round()函数
	}
}
public class Main{
    public static void main(String [] args){
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()){
        //老是忘了加()
            double a = sc.nextDouble();
           long b = Math.round( a);
           System.out.println(b);
        }
    }
public static void main(String [] args){
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()){
            float a = sc.nextFloat();
            int b = (int)a;
            float c = a-b;
            if (c >= 0.5 ){
                System.out.println(b+1);
            }
            if(c < 0.5 ){
                System.out.println(b);
            }  
          }
       }
  
}




1.7 输出较小数(Java)

【问题描述】输入n个整数,输出其中最小的k个。

【输入形式】输入说明 1输入两个整数(n k) 2输入一个整数数组

【输出形式】输出一个整数数组

【样例输入】
5 2
1 3 5 7 2

【样例输出】
1 2

【代码】

package a;
import java.util.Scanner;
import java.util.Arrays;

public class A7 {
	public static void main(String[] args){
		Scanner scan = new Scanner(System.in);
		
		int n=0; 
		int k=0;
		n = scan.nextInt();
		k = scan.nextInt();
		
		int[] num = new int[n];
		for(int i=0;i<n;i++){
			num[i] = scan.nextInt();
		}
		scan.close();
		Arrays.sort(num);//排序
		
		for(int i=0;i<k;i++){
			System.out.print(num[i] + " ");
		}
	}
}