1.输入一个数字要求输出该数字各个位上 能被2整除的数的和,如输入5584,输出12.
public class ABCTest {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
in.close();
System.out.println(sum(str));
}
public static int sum(String str) {
int sum = 0;
for(int i=0;i<str.length();i++) {
int n = Integer.parseInt(str.charAt(i)+"");
if(n%2==0)
sum += n;
}
return sum;
}
}
2.输入一组数N和数字b,求出该数组中能被b整除的个数,如输入1 2 3 4 5 6和2,结果输出为3.
public class ABCTest {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
int b = in.nextInt();
in.close();
System.out.println(div(str,b));
}
public static int div(String strArr,int b) {
int count = 0;
String[] str = strArr.split(" ");
for(int i=0; i<str.length;i++) {
int n = Integer.parseInt(str[i]);
if(n%b==0)
count++;
}
return count;
}
}
3.求N阶楼梯共有多少种上楼方式,每次只能上1个或者2个台阶。
public class ABCTest {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
System.out.println(stairs(n));
}
public static int stairs(int num) {
if(num==0)
return 0;
if(num==1)
return 1;
if(num==2)
return 2;
return stairs(num-1)+stairs(num-2);
}
}
4.求字符串的反转
public class ABCTest {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
in.close();
System.out.println(reverse(str));
}
public static String reverse(String str) {
if(str==null)
return null;
StringBuffer buffer = new StringBuffer(str);
return buffer.reverse().toString();
}
}
5. 所有阶乘的求和
public class ABCTest {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int sum = 0;
for(int i=0;i<n;i++) {
sum += factorial(n);
}
System.out.println(sum);
}
public static int factorial(int n) {
if(n==1)
return 1;
return factorial(n-1)*n;
}
}
6.给定一个字符串,由不同的单词用空格隔开的,把这些单词的首字母取出并大写输出。要求实现多行输入,输入0则停止输入。
如:hello world,输出:HW。
public class ABCTest {
public static void main(String[] args) {
System.out.println("请输入内容,输入0结束:");
Scanner sc = new Scanner(System.in);
String str = "";
List<String> str_list = new ArrayList<String>();
str = sc.nextLine();
while(str!=null && !str.equals("0")) {
str_list.add(str);
str = sc.nextLine();
}
Acronym(str_list);
}
public static void Acronym(List<String> list) {
for(int i=0;i<list.size();i++) {
String[] arr = list.get(i).toString().split(" ");
String s = "";
for(int j=0;j<arr.length;j++)
s += (arr[j].charAt(0)+"").toUpperCase();
System.out.println(s);
}
}
}
7.输入十个数,最大数和最后一个数交换,最小数和第一个数交换。
public class ABCTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr = new int[10];
for(int i=0;i<10;i++)
arr[i] = sc.nextInt();
int max=arr[0], min=arr[0];
int t1=0,t2=0;
for(int i=1;i<10;i++) {
if(min>arr[i]) {
min = arr[i];
t1=i;
}
if(max<arr[i]) {
max = arr[i];
t2 = i;
}
}
if(t1!=0) {
int temp = arr[0];
arr[0] = arr[t1];
arr[t1] = temp;
}
if(t2!=9) {
int temp = arr[9];
arr[9] = arr[t2];
arr[t2] = temp;
}
for(int i=0;i<10;i++) {
System.out.print(arr[i]+" ");
}
}
}
8.猴子吃桃子:
猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。到第10天在想吃的时候就剩一个桃子了,求第一天共摘下来多少个桃子?
public static int eatpeaches(int days) {
int sum = 1;
for(int i=days;i>1;i--)
sum = (sum+1)*2;
return sum;
}
9.A,B两个字符串,求在第一个字符串出现,第二个字符串中未出现的,重复只取第一次出现,输出字符串。
public class ABCTest {
public static void main(String[] args) {
String str1,str2;
Scanner sc = new Scanner(System.in);
str1 = sc.nextLine();
str2 = sc.nextLine();
System.out.println(appearedOnce(str1,str2));
}
public static String appearedOnce(String str1,String str2) {
String str = "";
if(str1==null)
return null;
if(str2==null)
return str1;
for(int i=0;i<str1.length();i++) {
if(!str2.contains(str1.charAt(i)+""))
str += str1.charAt(i)+"";
}
return str;
}
}
10.把字符串中的字符a和A换成c输出。
public class ABCTest {
public static void main(String[] args) {
String str;
Scanner sc = new Scanner(System.in);
str = sc.nextLine();
str = str.replaceAll("a", "c");
str = str.replaceAll("A", "c");
System.out.println(str);
}
}
11.给你年月日,求出这个这年的哪一天?
public class ABCTest {
public static void main(String[] args) {
System.out.println(getdays(2019,4,5));
}
public static int getdays(int year, int month, int day) {
int days = 0;
switch(month-1) {
case 12: days+=31;
case 11: days+=30;
case 10: days+=31;
case 9: days+=30;
case 8: days+=31;
case 7: days+=31;
case 6: days+=30;
case 5: days+=31;
case 4: days+=30;
case 3: days+=31;
case 2: days+=28;
case 1: days+=31;
}
days += day;
if(month>2 && ((year%4==0 && year%100!=0) || (year%400==0)) )
days++;
return days;
}
}
12. 判断一个 数是否是素数。
public static boolean isprimenum(int num) {
if(num<=3)
return num>1;
for(int i=2;i<num;i++) {
if(num%i==0)
return false;
}
return true;
}
13.判断从1990到2010年中的瑞年?并打印
public class ABCTest {
public static boolean isleapyear(int year) {
return (year%4==0 && year%100!=0)||(year%400==0);
}
}
14.判断是否为完全平方数
public class ABCTest {
public static boolean isSqrtNum(int num) {
int i=1;
while(num>0) {
num -= i;
i += 2;
}
return num==0;
}
}
15. 小球从100米下落,每次回弹一半距离,第count次落地后的在这之间小球弹跳的总距离。
public class ABCTest {
public static double summiles(int count) {
double all = 100.0d;
for(;count>0;count--)
all /= 2.0;
return all;
}
}
16.从求组中找出唯一出现一次的数。
public class ABCTest {
public static int unique(int[] numarr) {
for(int i=0;i<numarr.length;i++) {
int count=0;
for(int j=0;j<numarr.length;j++) {
if(numarr[i]==numarr[j])
count++;
}
if(count==1)
return numarr[i];
}
return -1;
}
}
17.凯撒加密:给出由大写字母组成的字符串,求出原来的字符串,加密 。方式很简单就是字符串后移五位,比如原来是A加密后是F,其余数字等标点符号原样输出.
public static String kaisacode(String str){
String newstr = "";
for(int i = 0 ; i < str.length() ; i ++){
char ch = str.charAt(i);
if( ch >= 'a' && ch <= 'z')
newstr += (char)(( ch - 'a' + 5 ) % 26 + 'a');
// 加密 +
else if( ch >= 'A' && ch <= 'Z')
newstr += (char)(( ch - 'A' + 5 ) % 26 + 'A');
else
newstr += ch;
}
return newstr;
}
18.喝饮料问题,一块钱一瓶饮料,两个空瓶子换一瓶饮料
求4块钱能和多少饮料
public static int heyinliao(int num){
int money = num;
int ping = 0;
int kongping = 0;
while(money > 0){
money --;
ping ++;
kongping ++;
if(kongping == 2){
ping ++;
kongping = 0;
kongping ++;
}
}
if(kongping == 2)
ping++;
return ping;
}