所有程序都经过运行
有些题目有问题,欢迎指正
如果您想快速找到您想要的题目,可以按快捷键【Ctrl + F】进行搜索
作业:
作业1:
循环输入某同学S1结业考试的5门课成绩,并计算平均分
/*
循环输入某同学S1结业考试的5门课成绩,并计算平均分
*/
import java.util.Scanner;
public class Hw01 {
public static void main(String[] args) {
double avg;
int sum = 0;
for (int i = 1;i <= 5; i++) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入第"+i+"科成绩:");
int score = sc.nextInt();
sum += score;
}
// *1.0 因为sum是整数 *1.0后变成了浮点数
avg = sum*1.0/5;
System.out.println("平均成绩是:"+avg);
}
}
作业2:
请从控制台输入一个数,是质数(素数)还是合数
提示:从2开始,只能被1和它本身除尽的数,是质数(素数)
/* 请从控制台输入一个数,是质数(素数)还是合数
提示:从2开始,只能被1和它本身除尽的数,是质数(素数) */
import java.util.Scanner;
class Hw02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个正整数,判断该数是否是质数(素数):");
int num = sc.nextInt();
// 判断正整数
if (num > 0) {
boolean flag = true ;
// 判断num是不是质数
// 只要判断一般就可一以了
for (int i = 2; i <= num / 2; i++) {
if (num % i == 0) {
flag = false;
break;
}
}
if (flag) {
System.out.println(num+"是质数");
}else {
System.out.println(num+"是合数");
}
}
else {
System.out.println("输入不是正整数!");
}
}
}
作业3:
求1~100之间不能被3整除的数之和
// 求1~100之间不能被3整除的数之和
public class Hw03 {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100; i++) {
if (i % 3 != 0 ) {
sum += i;
}
}
System.out.println("1~100之间不能被3整除的数之和为:"+sum);
}
}
作业4:
打印一个表格
根据用户输入的数
1 1*1 1*1*1
2 2*2 2*2*2
....
n n平方 n立方
/* 作业4:
打印一个表格
根据用户输入的数
1 1*1 1*1*1
2 2*2 2*2*2
....
n n平方 n立方 */
import java.util.Scanner;
public class Hw04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入:");
int num = sc.nextInt();
for (int i = 1; i <= num; i++) {
System.out.println(i+"\t"+(i*i)+"\t"+(i*i*i));
}
}
}
作业5:
请使用循环完成如下图案的打印
// 打印图案
import java.util.Scanner;
public class Hw05 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("输入打印多少层:");
int layer = sc.nextInt();
// 第一种 直角三角形
System.out.println("========第一种========");
// 第一层控制 【*】的层数
for (int i = 1; i <= layer; i++) {
// 第二层控制 【*】的个数
for (int n = 1; n <= i; n++) {
System.out.print("*");
}
System.out.println(); // 换行
}
// 第二种 等腰三角形
System.out.println("========第二种========");
// 第一层控制层数
for (int i = 1; i <= layer; i++) {
for (int m = 1; m <= (layer - i); m++) {
System.out.print(" ");
}
// *
for (int m = 1; m <= (2 * i - 1); m++) {
System.out.print("*");
}
System.out.println(); // 换行
}
// 第三种 等腰三角形 + |
System.out.println("========第三种========");
// 第一层控制层数
for (int i = 1; i <= layer; i++) {
for (int m = 1; m <= (layer - i); m++) {
System.out.print(" ");
}
// *
for (int m = 1; m <= (2 * i - 1); m++) {
System.out.print("*");
}
System.out.println(); // 换行
}
for (int i = 1; i <= layer; i++) {
for (int m = 1; m <= (layer-1); m++) {
System.out.print(" ");
}
System.out.print("*");
System.out.println(); // 换行
}
// 第四种 等腰三角形*2
System.out.println("========第四种========");
// 第一层控制层数
for (int i = 1; i <= layer; i++) {
for (int m = 1; m <= (layer - i); m++) {
System.out.print(" ");
}
// *
for (int m = 1; m <= (2 * i - 1); m++) {
System.out.print("*");
}
System.out.println(); // 换行
}
// 第一层控制层数
for (int i = layer - 1; i >= 1; i--) {
for (int m = 1; m <= (layer - i); m++) {
System.out.print(" ");
}
// *
for (int m = 1; m <= (2 * i - 1); m++) {
System.out.print("*");
}
System.out.println(); // 换行
}
// 第五种 等腰三角形*2 中间空
System.out.println("========第五种========");
// 第一层控制层数
for (int i = 1; i <= layer; i++) {
for (int m = 1; m <= (layer - i); m++) {
System.out.print(" ");
}
// *
for (int m = 1; m <= (2 * i - 1); m++) {
if ((m == 1) || (m == (2 * i - 1))) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println(); // 换行
}
// 第一层控制层数
for (int i = layer - 1; i >= 1; i--) {
for (int m = 1; m <= (layer - i); m++) {
System.out.print(" ");
}
// *
for (int m = 1; m <= (2 * i - 1); m++) {
if ((m == 1) || (m == (2 * i - 1))) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println(); // 换行
}
// 第六种 等腰三角形*2 中间间接空
System.out.println("========第六种========");
// 第一层控制层数
for (int i = 1; i <= layer-1; i++) {
for (int m = 1; m <= (layer - i); m++) {
System.out.print(" ");
}
// *
for (int m = 1; m <= (2 * i - 1); m++) {
if ((m == 1) || (m == (2 * i - 1)) || (m == (i))) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println(); // 换行
}
// 中间的一排
for (int i = 1; i <= (2*layer-1); i++) {
System.out.print("*");
}
System.out.println(); // 换行
// 下面第一层控制层数
for (int i = layer - 1; i >= 1; i--) {
for (int m = 1; m <= (layer - i); m++) {
System.out.print(" ");
}
// *
for (int m = 1; m <= (2 * i - 1); m++) {
if ((m == 1) || (m == (2 * i - 1)) || (m == (i))) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println(); // 换行
}
}
}
作业6:请在控制台上输入两个数,并且输入一个符号(±*/%),使用switch语句
/* 请在控制台上输入两个数,并且输入一个符号(+-*/%),使用switch语句 */
import java.util.Scanner;
public class Hw06 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("输入第一个数:");
float fir = sc.nextFloat();
Scanner sc2 = new Scanner(System.in);
System.out.print("输入第二个数:");
float sec = sc2.nextFloat();
Scanner sc3 = new Scanner(System.in);
System.out.print("输入符号:");
String symbol = sc3.next();
switch (symbol) {
case "+" :
System.out.println(fir+"+"+sec+"="+(fir+sec));
break;
case "-" :
System.out.println(fir+"-"+sec+"="+(fir-sec));
break;
case "*" :
System.out.println(fir+"*"+sec+"="+(fir*sec));
break;
case "/" :
System.out.println(fir+"/"+sec+"="+(fir/sec));
break;
case "%" :
System.out.println(fir+"%"+sec+"="+(fir%sec));
break;
}
}
}
作业7:
100~1000返回内,能被5和6整除的数
/* 100~1000返回内,能被5和6整除的数 */
public class Hw07 {
public static void main(String[] args) {
System.out.println("100~1000返回内,能被5和6整除的数");
for (int i = 100; i <= 1000; i++) {
if ((i % 5 == 0) && (i % 6 == 0)) {
System.out.println(i);
}
}
}
}
作业8:输入一个年份,判断该年是否是闰年
/* (1)若某个年份能被4整除但不能被100整除,则是闰年。
(2)若某个年份能被400整除,则也是闰年 */
import java.util.Scanner;
public class Hw08 {
public static void main(String[] args) {
System.out.print("请输入年份:");
int year;//接收输入的年份
Scanner scanner = new Scanner(System.in);
year = scanner.nextInt();
if(year<0||year>3000){
System.out.println("年份有误!");
}
if(year%4==0&&year%100!=0||year%400==0){
System.out.println(year+"是闰年");
}else{
System.out.println(year+"不是闰年");
}
}
}
作业9:
计算PI
PI=4(1-1/3+1/5-1/7+1/9-1…/11)
/*
计算PI
PI=4(1-1/3+1/5-1/7+1/9-1......./11)
*/
import java.util.Scanner;
public class Hw09 {
public static void main(String[] args) {
System.out.print("输入精度值,越大越准:");
Scanner sc = new Scanner(System.in);
double precision = sc.nextDouble();
double PI,fourSmall = 0;
double x;// 用来接受每次值是否为正负
for (double i = 1; i <= precision; i++) {
// 奇数位是正 偶数位是负
if (i % 2 == 1) {
x = (0 + 1) / ((i * 2) - 1);
fourSmall += x;
} else {
x = (0 - 1) / ((i * 2) - 1);
fourSmall += x;
}
}
PI = 4 * fourSmall;
System.out.println("PI的值是:"+PI);
}
}
作业10:
健康计划
用户输入身高(m),体重(kg)
计算公式:BMI =身高/ 体重^2
BMI < 18.5:过轻
18.5≤ BMI <24:正常
24 ≤ BMI <27:过重
27 ≤ BMI < 30:轻度肥胖
30 ≤ BMI < 35:中度肥胖
BMI ≥ 35:重度肥胖
/*
健康计划
用户输入身高(m),体重(kg)
计算公式:BMI =身高/ 体重^2
BMI < 18.5:过轻
18.5≤ BMI <24:正常
24 ≤ BMI <27:过重
27 ≤ BMI < 30:轻度肥胖
30 ≤ BMI < 35:中度肥胖
BMI ≥ 35:重度肥胖 */
import java.util.Scanner;
public class Hw10 {
public static void main(String[] args) {
while (true) {
System.out.print("请输入您的身高(m):");
Scanner sc = new Scanner(System.in);
double height = sc.nextDouble();
if (height > 2.5) {
System.out.println("注意单位是【米】,请重新输入!");
continue;
}
System.out.print("请输入您的体重(kg):");
Scanner sc1 = new Scanner(System.in);
double weight = sc1.nextDouble();
System.out.println("===接下来我们将计算您的BMI===");
// BMI = 体重(kg)/ 身高(m)^2
double bmi = weight / Math.pow(height, 2);
if (bmi < 18.5) {
System.out.println("您的BMI是:"+bmi+",过轻");
}else if (bmi >= 18.5 && bmi <24) {
System.out.println("您的BMI是:"+bmi+",正常");
}else if (bmi >= 24 && bmi <27) {
System.out.println("您的BMI是:"+bmi+",过重");
}else if (bmi >= 27 && bmi <30) {
System.out.println("您的BMI是:"+bmi+",轻度肥胖");
}else if (bmi >= 30 && bmi <35) {
System.out.println("您的BMI是:"+bmi+",中度肥胖");
}else {
System.out.println("您的BMI是:"+bmi+",重度肥胖");
}
break;
}
}
}
作业11:
一个自然数与3的和是5的倍数,与3的差是6的倍数,这个自然数最小是几?
/* 一个自然数与3的和是5的倍数,与3的差是6的倍数,这个自然数最小是几? */
// 自然数:从0开始的整数,0、1、2、3……
public class Hw11 {
public static void main(String[] args) {
// 因为不知到最小的数是哪个,所以要设置一个死循环
for (int i = 0; true; i++) {
if ((i % 3 == 0) && (i % 5 == 0) && (((i - 3) % 6) == 0)) {
System.out.println("这个自然数最小是:"+i);
break;
}
}
}
}
作业12:
在400–500之间求一个数,它被2除余1,被5除余3,被9除余1,这个数是多少?
/* 在400--500之间求一个数,它被2除余1,被5除余3,被9除余1,这个数是多少? */
public class Hw12 {
public static void main(String[] args) {
for (int i = 400; i <= 500; i++) {
if ((i % 2 == 1) && (i % 5 == 3) && (i % 9 == 1)) {
System.out.println("这数是:"+i);
// 不确定该数是不是一个
// break;
}
}
}
}
作业13:
有一些四位数,百位数字都是3,十位数字都是6,并且它们既能被2整除,又能被3整除,求这样的四位数中最大的和最小的两数各是几?
/*
有一些四位数,
百位数字都是3,
十位数字都是6,
并且它们既能被2整除,
又能被3整除,
求这样的四位数中最大的和最小的两数各是几?
*/
public class Hw13 {
public static void main(String[] args) {
// thousand 千 hundred 百 ten 十 one 个
// 这四位数构成方式为 ts*1000+hd*100+ten*10+one
// num = ts*1000+300+60+one (ts [1,9] one [0,9])
int num;
boolean falt = false;
// 外层循环控制千位
for (int i = 1; i <= 9; i++) {
// 内存循环控制个位
for (int j = 0; j <= 9; j++) {
num = i*1000+300+60+j;
if ((num % 2 == 0) && (num % 3 == 0)) {
System.out.println("最小是:"+num);
falt = true;
break; // 终止内层循环
}
}
// 终止外层循环
if (falt) {break;}
}
// 复刻求最大值
// 外层循环控制千位
for (int i = 9; i >= 1; i--) {
// 内存循环控制个位
for (int j = 9; j >= 0; j--) {
num = i*1000+300+60+j;
if ((num % 2 == 0) && (num % 3 == 0)) {
System.out.println("最大是:"+num);
falt = true;
break; // 终止内层循环
}
}
// 终止外层循环
if (falt) {break;}
}
}
}
作业14:编程求一个四位自然数ABCD,它乘以A后变成DCBA
// 编程求一个四位自然数ABCD,它乘以A后变成DCBA
public class Hw14 {
public static void main(String[] args) {
int num,num1;
for (int a = 1; a <= 9; a++) {
for (int b = 0; b <= 9; b++) {
for (int c = 0; c <= 9; c++) {
for (int d = 0; d <= 9; d++) {
num = a*1000 + b*100 + c*10 +d;
num1 = d*1000 + c*100 + b*10 +a;
if (num*a == num1) {
System.out.println("这个自然数可是:"+num+"\t乘以A后变成:"+num1);
}
}
}
}
}
}
}
作业15:编程求出满足以下条件的三位数:它除以11所得的商等于
它各位数字之和.
/* 编程求出满足以下条件的三位数:
它除以11所得的商等于
它各位数字之和. */
public class Hw15 {
public static void main(String[] args) {
// num = a*100 + b*10 + c
// num1 = a + b + c
int num, num1;
for (int a = 1; a <= 9; a++) {
for (int b = 0; b <= 9; b++) {
for (int c = 0; c <= 9; c++) {
num = a*100 + b*10 + c;
num1 = a + b + c;
if ((num / 11) == num1) {
System.out.println("这个三位数是:"+num);
}
}
}
}
}
}
作业16.某数被80除所得的商,不但是7的倍数,而且用2,3,4,5,6去
除余数都是1,求这 个自然数.
/*
某数被80除所得的商,不但是7的倍数,而且用2,3,4,5,6去
除余数都是1,求这 个自然数.
*/
public class Hw16 {
public static void main(String[] args) {
int shang;
// 因为不知到最小的数是哪个,所以要设置一个死循环
for (int i = 1; i<1000; i++) {
shang = 80 / i;
if ((i % 2 == 1) && (i % 3 == 1) && (i % 4 == 1) && (i % 5 == 1) && (i % 6 == 1) && (shang % 7 == 0)) {
System.out.println("这个自然数是:"+i);
// break;
}
}
}
}
…作业17.有一种最简真分数,它们的分子与分母的乘积都是140,把
所有这样的真分数从小到大打印出来
/* 有一种最简真分数,它们的分子与分母的乘积都是140,把
所有这样的真分数从小到大打印出来 */
public class Hw17 {
public static void main(String[] args) {
int index = 0;
// i / j
// 分子循环
for (int i = 1; i <= 140; i++) {
// 分母循环
for (int j = i + 1; j <= 140; j++) {
// 先判断乘积是否为140
if (i * j == 140) {
// System.out.println("i:" + i);
// System.out.println("j:" + j);
// System.out.println("index:" + index);
// 循环判断两个数的公约数
for (int x = 1; x <= i; x++) {
if ((i % x == 0) && (j % x == 0)) {
index++;
}
}
if (index == 1) {
System.out.println("分子与分母的乘积是140的真分数为:\t" + i + "/" + j);
}
// index归零进行下一次判断
index = 0;
}
}
}
}
}
作业18.一个五位数,若在它的后面写上一个7,得到一个六位数A,
若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此
五位数.
/*
一个五位数,若在它的后面写上一个7,得到一个六位数A,
若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此
五位数. */
public class Hw18 {
public static void main(String[] args) {
int a,b;
for (int i = 10000; i <= 99999; i++) {
// 后面写 7
a = i*10+7;
// 前面写 7
b = 700000+i;
if (a*5 == b) {
System.out.println("这个五位数是:"+i);
}
}
}
}
作业19.把123456789这个数乘以一个什么数,能使它的结果不但
不含零,而且仍然是 由1,2,3,4,5,6,7,8,9这九个数字组成的,
只是顺序不同而已.
/* 把123456789这个数乘以一个什么数,能使它的结果不但
不含零,而且仍然是 由1,2,3,4,5,6,7,8,9这九个数字组成的,
只是顺序不同而已. */
public class Hw19 {
public static void main(String[] args) {
// 0-10
// 通过9个数的乘积来做
int m = 123456789 , n;
double ji1 = 1;
double ji2 = 1*2*3*4*5*6*7*8*9;
for (int i = 1; i < 10; i++) {
n = m*i;
int a = n / 100000000;
int b = n / 10000000 - a*10;
int c = n / 1000000 - a*100 - b*10;
int d = n / 100000 - a*1000 - b*100 - c*10;
int e = n / 10000 - a*10000 - b*1000 - c*100 - d*10;
int f = n / 1000 - a*100000 - b*10000 - c*1000 - d*100 - e*10;
int g = n / 100 - a*1000000 - b*100000 - c*10000 - d*1000 - e*100 - f*10;
int h = n / 10 - a*10000000 - b*1000000 - c*100000 - d*10000 - e*1000 - f*100 - g*10;
int o = n % 10;
ji1 = a*b*c*d*e*f*g*h*o;
// System.out.println("n:"+n);
// System.out.println("a:"+a);
// System.out.println("b:"+b);
// System.out.println("c:"+c);
if (ji1 == ji2) {
System.out.println("这个数是:"+n);
}
}
}
}
作业20.验证:任意一个大于9的整数减去它的各位数字之和所得
的差,一定能被9整除.
/* 任意一个大于9的整数减去它的各位数字之和所得
的差,一定能被9整除. */
/*
三位数:100a + 10b + c - (a+b+c) = 99a + 9b
*/
import java.util.Scanner;
public class Hw20 {
public static void main(String[] args) {
System.out.println("这是三位数的原理: 100a+10b+c-(a+b+c) = 99a + 9b \n===你也可以选择验证一下,原理都一样===");
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个大于9的三位数:");
int num = sc.nextInt();
//
int a = num / 100;
int b = num / 10 - a * 10;
int c = num % 10;
int sum = a + b + c;
if ((num - sum) % 9 == 0) {
System.out.print("验证成功");
} else {
System.out.print("验证失败");
}
}
}
作业21.如果两个素数之差为2,这样的两个素数就叫作"孪生数",
找出100以内的所有"孪生数".
/* 如果两个素数之差为2,这样的两个素数就叫作"孪生数",
找出100以内的所有"孪生数". */
public class Hw21 {
public static void main(String[] args) {
int nums1 = 0,nums2 = 0;
int a=0;
// 程序缺点,判断不了1、2、3
// 手动加上
System.out.println("孪生数为:"+"1"+"\t"+"3");
for (int num = 1; num <= 100; num++) {
boolean flag = true ;
// 判断num是不是质数
// 只要判断一般就可一以了
for (int i = 2; i <= num / 2; i++) {
if (num % i == 0) {
flag = false;
break;
}
}
if (flag) {
if (a % 2 == 0){
nums1 = num; //
if (nums1 - nums2 == 2 ) {
System.out.println("孪生数为:"+nums2+"\t"+nums1);
}
a++;
} else {
nums2 = num;
if (nums2 - nums1 == 2 ) {
System.out.println("孪生数为:"+nums1+"\t"+nums2);
}
a++;
}
}
}
}
}
作业22:求水仙花数。
ABC = a3+b3+c^3
public class Hw22 {
public static void main(String[] args) {
double num,num1;
for (int a = 1; a <= 9; a++) {
for (int b = 0; b <= 9; b++) {
for (int c = 0; c <= 9; c++) {
num = a*100 + b*10 + c;
num1 = Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3);
if (num == num1) {
System.out.println("这个三位数是:"+num);
}
}
}
}
}
}
作业23:求 a+aa+aaa+…+aaaaaaaaa=?
其中a为1至9之中的一个数,项数也要可以指定。
/* 求 a+aa+aaa+.......+aaaaaaaaa=?
其中a为1至9之中的一个数,项数也要可以指定。 */
import java.util.Scanner;
public class Hw23 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("项数:");
int len = sc.nextInt();
Scanner sc1 = new Scanner(System.in);
System.out.print("数字:");
double num = sc1.nextDouble();
double one = num, sum = 0;
for (int i = 1; i <= len; i++) {
if (i == 1) {
sum += num;
System.out.println(num);
continue;
}
num = one + num * 10;
sum += num;
System.out.println(num);
}
System.out.println("和为:"+sum);
}
}
作业24:
求 2/1+3/2+5/3+8/5+13/8…前20项之和?
/* 求 2/1+3/2+5/3+8/5+13/8.....前20项之和? */
public class Hw24 {
public static void main(String[] args) {
double son, mum, sum = 0; // num = son / mum
double son1, son2;
double mum1, mum2;
int a = 0;
// ===手动赋初始值===
son1 = 2;
mum1 = 1;
sum += son1 / mum1;
son2 = 3;
mum2 = 2;
sum += son2 / mum2;
// ==========
for (int i = 3; i <= 20; i++) {
// ===赋初值=== 赋不上
// if (i == 1) {
// son1 = 2;
// mum1 = 1;
// sum += son1 / mum1;
// continue;
// }
// if (i == 2) {
// son2 = 3;
// mum2 = 2;
// sum += son2 / mum2;
// continue;
// }
// ===赋初值end===
if (a % 2 == 0) {
son1 += son2;
mum1 += mum2;
sum += son1 / mum1;
// System.out.println("son1:" + son1);
// System.out.println("mum1:" + mum1);
a++;
} else {
son2 += son1;
mum2 += mum1;
sum += son2 / mum2;
// System.out.println("son2:" + son2);
// System.out.println("mum2:" + mum2);
a++;
}
}
System.out.println("前二十项的和为:"+sum);
}
}