java学习 习题练习 Demo32~75
Demo32
解题思路:
题中数据:1.电脑产生随机数 2.用户输入数字
题目要求:用户随机输入数字与电脑产生的随机数做比较,直到用户猜中该随机数是什么程序结束
步骤:
1.使用Random包产生(伪)随机数
2.使用while循环语句
3.在while循环语句中提示用户输入数字
4.在while循环语句中判断该数字是否与随机数大小一致,一致则结束,不一致提示用户改变数字大小,直至一致
代码:
import java.util.*;
public class Demo32 {
public static void main (String[] args) {
Scanner input = new Scanner(System.in);
//使用Random包产生一个1~100的伪随机数
Random random = new Random();
int x = random.nextInt(101);
//1.提示输入数字 2.判断随机数与输入数字是否一致
while (true) {
System.out.print("Enter your guess:");
int num = input.nextInt();
if (num > x) {
System.out.println("偏大了");
} else if (num < x) {
System.out.println("偏小了");
} else {
System.out.println("猜中了");
break;
}
}
}
}
Demo33
解题思路:
题中数据:输入的两个数字,以及输出的最大公约数
题目要求:生成两个数字的最大公约数
步骤:
1.提示用户输入两个整数
2.选出两个数中较小的一个(比如16和24中,最大公约数应从16~1中寻找,并且最大公约数可能就是两数中较小的那一个,如4和8,最大公约数便是4)
3.从两数中较小的(包括该数)一个自它开始向下遍历
4.判断每一个被遍历的数是否为最大公约数
5.输出结果
代码:
import java.util.Scanner;
public class Demo33 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter number1:");
int number1 = input.nextInt();
System.out.print("Enter number2:");
int number2 = input.nextInt();
//比较两数大小,选择小的那个
int min = number1 < number2 ? number1 : number2;
for (int i = min; i >= 1; i--) {
//自小的数字(包括该数)开始向下判断最大公约数
if (number1 % i == 0 && number2 % i == 0) {
System.out.println(i);
break;
}
}
}
}
Demo34
解题思路:
题中数据:用户输入的数字、10为A、11为B、12为C、13为D、14为E、15为F
题目要求:将用户输入的十进制数转换为16进制数
步骤:
1.提示用户输入数字
2.将十进制数转换为16进制数
3.输出
代码:
import java.util.*;
public class Demo34{
public static void main(String[] args){
Scanner input= new Scanner(System.in);
System.out.print("请输入一个数字");
int num = input.nextInt();
String hex = "";
while (num != 0) {
int g = num % 16;
if (g < 10) {
hex = g + hex;
} else {
hex = (char)(g - 10 + 65) + hex;
}
num /= 16;
}
System.out.println(hex);
}
}
Demo36
解题思路:
题中数据:前50个素数
题目要求:打印前50个素数,每行打印10个
步骤:
1.创建素数个数统计
2.创建每行个数统计
3.利用循环遍历数字,并且判断遍历的每一个数字是否为素数,若为素数则统计,直到前50个素数被统计完
4.判断每行是否有10个数字,若有十个则换行
5.输出
代码:
public class Demo36 {
public static void main(String[] args) {
int count = 0;
int rownum = 0;
for(int i = 2; count < 50; i++){
int isprime = 1;
for(int n = 2; n < i; n++)
if( i % n == 0){
isprime = 0;
break;
}
if(isprime == 1){
if(rownum % 10 == 0){
System.out.println();
}
System.out.print(i + "\t");
rownum += 1;
count += 1;
}
}
}
}
Demo37
解题思路:
题中数据:输入的n个整数、判断正数有多少个、负数有多少个、总和、平均值
题目要求:输入n个整数并且最后一个必须