Java学习—-习题练习

  • Post author:
  • Post category:java


今日进行以下习题练习:

1、键盘录入一个学生成绩(用int表示),自动输出该同学的成绩评级。学生的分数取值范围[0,100]

分数大于等于90的,评级”优秀”;

分数大于等于80,小于90的,评级”良好”;

分数大于等于70,小于80的,评级”中等”;

分数大于等于60,小于70的,评级”及格”;

分数小于60的,评级”不及格”;

import java.util.Scanner;

public class Test10 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入学生成绩:");
		int score;
		while (true) {
			score = sc.nextInt();
			if (score >= 0 && score <= 100)
				break;
			else
				System.out.println("输入的成绩不合法!\n请重新输入:");
		}
//		if(score>=90)
//			System.out.println("优秀");
//		else if(score>=80)
//			System.out.println("良好");
//		else if(score>=70)
//			System.out.println("中等");
//		else if(score>=60)
//			System.out.println("及格");
//		else
//			System.out.println("不及格");
		switch (score / 10) {
		case 10:
		case 9:
			System.out.println("优秀");
			break;
		case 8:
			System.out.println("良好");
			break;
		case 7:
			System.out.println("中等");
			break;
		case 6:
			System.out.println("及格");
			break;
		default:
			System.out.println("不及格");
			break;
		}
	}

}

2、输出杨辉三角形,要求,根据键盘录入的行数,决定等腰三角形的行数。

70db0a1b65b6452599c233caf4239e17.png

import java.util.Scanner;

public class Test11 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个数字:");

		int k = sc.nextInt();


		for(int i = 1;i<=k;i++) {
			for(int m=1;m<=k-i;m++) 
				System.out.print(" ");			
			for(int m=1;m<=2*i-1;m++) 
				System.out.print("*");
			System.out.println();
		}
		sc.close();
	}

}

3、求完数。一个数如果恰好等于它的所有真因子(即除了自身外的所有因数)之和,这个数就称为”完数”。请编程求出1000 以内的所有完数。

public class Test3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		for (int k = 1; k < 1000; k++) {
			int cc = 0;
			for (int i = 1; i <= k / 2; i++) {
				if (k % i == 0) {
					cc += i;
				}
			}
			if (k == cc)
				System.out.println(k + "是完数!");
		}
	}

}

4、有1、2、3、4一共四个数字,能组成多少个不相等且无重复数字的三位数?都是多少?

注:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的就

可以了。

public class Test4 {

	public static void main(String[] args) {
		int cc=0;
		for(int i=1;i<=4;i++) {
			for(int j=1;j<=4;j++) {
				for(int k=1;k<=4;k++) {
					if(i!=j && j!=k && i!=k) {
						System.out.print(i+""+j+""+k+"\t");
						cc++;
						if(cc%3==0)
							System.out.println();
					}
				}
			}
		}
		System.out.println(cc+"个");
	}

}

5、键盘录入一个正整数,请求:1.它是几位数?2.逆序打印出各位数字。

public class Test7 {

  public static void main(String[] args) {
    int k=1;
    String kk ="";
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入一个正整数:");
    while(true) {
      kk = sc.nextLine();
      k = Integer.parseInt(kk);
      if(k < 1) {
        System.out.println("您输入的数据不合法!\n请重新输入一个正整数:");
      }else break;
    }
    
    String ss = "";
    for(int i = kk.length()-1;i>=0;i--) {
      ss += kk.charAt(i);
    }
    System.out.println(k+"是"+kk.length()+"位数");
    System.out.println(k+"的逆序为"+ss);
  }

}

6、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13。求出这个数列的前20项之和。

注:提前告诉答案是32.66026079864164

public class Test8 {

	public static void main(String[] args) {
		int n1 = 2, n2 = 3;
		int n3 = 1, n4 = 2;
		int n = 0;
		int m = 0;
		double sum = 1. * n1 / n3 + 1. * n2 / n4;
		for (int i = 3; i < 21; i++) {
			n = n1 + n2;
			m = n3 + n4;
			System.out.println(n + "/" + m);
			sum += 1. * n / m;
			n1 = n2;
			n2 = n;
			n3 = n4;
			n4 = m;
		}
		System.out.println(sum);
	}

}

7、一个整数,它加上100或者268后都是一个完全平方数,请问在1万以内,这样的数有几个,分别是多少?

public class Test9 {

	public static void main(String[] args) {
		int cc = 0;
		for (int k = 1; k < 10000; k++) {
			int k1 = k + 100;
			boolean dd1 = false;
			int dd = (int) Math.sqrt(k1);
			if (dd * dd == k1) {
				dd1 = true;
			}
			int k2 = k + 268;
			boolean dd2 = false;
			dd = (int) Math.sqrt(k2);
			if (dd * dd == k1) {
				dd2 = true;
			}
			if (dd1 || dd2) {
				System.out.print(k + "\t");
				cc++;
				if (cc % 6 == 0) {
					System.out.println();
				}
			}
		}
		System.out.println(cc + "个");
	}
}

8、提示用户输入三角形的边a、b、c,范围必须在 [1,100) 之间,判断三角形的类型:1.非三角形;2.等边三角形;3.直角三角形;4.等腰三角形;5.普通三角形

import java.util.Scanner;

public class Test10 {

	public static void main(String[] args) {
		int a, b, c;
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入第一条边");
		while (true) {
			a = sc.nextInt();
			if (a >= 1 && a < 100) {
				break;
			} else
				System.out.println("输入数据无效\n请重新输入");
		}
		System.out.println("请输入第二条边");
		while (true) {
			b = sc.nextInt();
			if (b >= 1 && b < 100) {
				break;
			} else
				System.out.println("输入数据无效\n请重新输入");
		}
		System.out.println("请输入第三条边");
		while (true) {
			c = sc.nextInt();
			if (c >= 1 && c < 100) {
				break;
			} else
				System.out.println("输入数据无效\n请重新输入");
		}
		boolean sanjiao = (a + b > c) && (a + c > b) && (b + c > a);
		if (sanjiao) {
			if (a == b && b == c) {
				System.out.println("等边三角形");
			} else if (a == b || b == c || a == c) {
				System.out.println("等腰三角形");
			} else if (a * a + b * b == c * c || a * a + c * c == b * b || b * b + c * c == a * a) {
				System.out.println("直角三角形");
			} else
				System.out.println("普通三角形");
		} else {
			System.out.println("不是三角形");
		}
	}

}

9、编写程序数一下 1到 100 的所有整数中出现多少个数字9

public class Test111 {

	public static void main(String[] args) {
		int count = 0;
		for (int k = 1; k < 100; k++) {
			int gewei = k % 10;
			int shiwei = k / 10;
			if (gewei == 9) {
				count++;
			}
			if (shiwei == 9) {
				count++;
			}
		}
		System.out.println(count + "个");
	}

}
public class Test112 {

	public static void main(String[] args) {
		String ss = "";
		int count = 0;
		for (int i = 1; i < 100; i++) {
			ss += i;
		}
		int pos = ss.indexOf("9");
		while (pos != -1) {
			count++;
			pos = ss.indexOf("9", pos + 1);
		}
		System.out.println(count + "个");
	}

}

10、输出 1000 – 2000 之间所有的闰年

public class Test12 {
	public static void main(String[] args) {
		for (int year = 1000; year <= 2000; year++) {

			if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
				System.out.println(year + "年");
			}
		}
	}
}

11、打印 1 – 100 之间所有的素数

public class Test13 {
	public static void main(String[] args) {
        System.out.println("1既不是质数也不是合数");
		for (int k = 2; k < 100; k++) {
			boolean bb = true;
			for (int i = 2; i < k / 2 + 1; i++) {
				if (k % i == 0) {
					bb = false;
					break;
				}
			}
			if (bb)
				System.out.println(k);
		}
	}
}

12、打印用“*”组成的X形图案

69c0abf3d02c48d89b36ff4f3c0f2ffe.png

public class Test5 {

  public static void main(String[] args) {
    int k=3;
    for(int i=k;i>=1;i--) {
      for(int m=1;m<=k-i;m++)
        System.out.print(" ");
      System.out.print("*");
      for(int m=1;m<=2*(i-1);m++)
        System.out.print(" ");
      System.out.println("*");
    }
    for(int i=1;i<=k;i++) {
      for(int m=1;m<=k-i;m++)
        System.out.print(" ");
      System.out.print("*");
      for(int m=1;m<=2*(i-1);m++)
        System.out.print(" ");
      System.out.println("*");
    }
    
  }

}

13、完成猜数字游戏 ,用户输入数字,判断该数字是大于,小于,还是等于随机生成的数字,等于的时候退出程序

public class Test16 {

	public static void main(String[] args) {
		int shu = (int) (Math.random() * 100 + 1);
//		System.out.println(shu);
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个数:");
		int a, count = 0;
		String ss = "";
		while (true) {
			a = sc.nextInt();
			count++;
			ss += a + ",";
			if (a > 100 || a < 0) {
				System.out.println("输入数据不合法!\n请重新输入:");
			} else if (a > shu) {
				System.out.println("大了!");
			} else if (a < shu) {
				System.out.println("小了!");
			} else if (count == 1) {
				System.out.println("猜过的数字为:" + ss + "猜对了!共猜了" + count + "次。天才");
				break;
			} else if (count <= 5) {
				System.out.println("猜过的数字为:" + ss + "猜对了!共猜了" + count + "次。厉害");
				break;
			} else if (count < 10) {
				System.out.println("猜过的数字为:" + ss + "猜对了!共猜了" + count + "次。一般");
				break;
			} else if (count >= 10) {
				System.out.println("猜过的数字为:" + ss + "猜对了!共猜了" + count + "次。太菜了");
				break;
			}

		}
	}
}



版权声明:本文为hanxuya原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。