今日进行以下习题练习:
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、输出杨辉三角形,要求,根据键盘录入的行数,决定等腰三角形的行数。
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形图案
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;
}
}
}
}