Java基础编程题

 1、编写程序输出2-10000之间的所有素数

public class Avc1{
	public static void main(String args[]){
		//素数:	除开1和自己本身之外,不能被任何数字整除
		int count = 0;		//用于累计循环的次数
		for(int i = 2;i <= 10000;i ++){
			boolean flag = true;		//先默认i是素数
			//开始判断i是不是素数
			for(int j = 2;j <= Math.sqrt(i);j ++){
				count ++;	//累计循环次数
				
				if(i % j == 0){
					//意味着,能被整除,不是素数
					flag = false;
					//当i不是素数的时候,这个循环,就没有继续循环的必要了
					break;
				}
			}
			
			//当判断循环结束,再来判断最终结果
			if(flag == true){
				System.out.println(i + "是素数");
			}
		}
		System.out.println("最终循环了" + count + "次");	
	}
}

2、求斐波那契数列前20项和的值 

public class Avc2{
	public static void main(String args[]){
		int sum = 0;
		int num1 = 1;	//第一列
		int num2 = 1;	//第二列
		int num3 = 0;
		sum = num1 + num2;
		//规律从第3个数开始
		for(int i = 3;i <= 20;i ++){		//1 1 2 3 5 8 13 21
			//从第3个数开始,每个数字,都是前面数字的和
			num3 = num1 + num2;
			//求和
			sum += num3;
			
			//数值交换
			num1 = num2;
			num2 = num3;
		}
		System.out.println("和为:" + sum);
	}
}

3、给定一个整数,把它的各位数字倒排过来形成一个新的整数

import java.util.Scanner;

public class Avc3{
	public static void main(String args[]){
		Scanner sc = new Scanner(System.in);
		int x = sc.nextInt();
		int y = 0;
		
		while(x != 0){
			y = y * 10 + x % 10;
			x /= 10;
		}
		System.out.println("新的数字为:" + y);
	}
}

4、随机生成一个数,由用户来猜,猜不对则反复猜,并给出大小提示,猜对的则结束,并记录猜的次数输出

import java.util.Scanner;
import java.util.Random;

public class Avc4{
	public static void main(String args[]){
		Random r = new Random();
		Scanner sc = new Scanner(System.in);
		
		int count = 1;		//记录猜的次数
		System.out.println("我心里有一个数字(1-100),你来猜猜看:");
		int num = r.nextInt(100) + 1;	//随机赋值1-100
		//万能随机公式:	a - b范围的数字:	r.nextInt(b - a + 1) + a;
		
		int myNum = sc.nextInt();
		while(myNum != num){
			System.out.println(myNum > num ? "大了" : "小了");
			//提示完,继续猜
			myNum = sc.nextInt();
			count ++;
		}
		System.out.println("猜对了,总共猜了" + count + "次");
	}
}

5、给100块钱买饮料,每瓶饮料3块钱,喝完之后退瓶子可以换回1块钱。问最多可以喝到多少瓶饮料

public class Avc5{
	public static void main(String args[]){
		int money = 100;
		int price = 3;
		int bottle = 0;		//代表多少个瓶子
		int sum = 0;
		
		//一直买饮料,直到钱不够
		while(money / price > 0){
			//首先,先来看买多少瓶
			bottle = money / price;
			sum += bottle;
			//钱减少
			money = money - bottle * price;
			//退瓶子可以换回1块钱
			money = money + bottle;
		}
		System.out.println(sum);
	}
}

6、用户输入一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同

import java.util.Scanner;

public class Avc6{
	public static void main(String args[]){
		Scanner sc = new Scanner(System.in);
		int num6 = sc.nextInt();
		while(num6 < 10000 || num6 > 99999){
			System.out.println("输入错误,请重新输入5位数");
			num6 = sc.nextInt();
		}
		
		//开始求个位	万位	十位	千位
		int ge = num6 %10;
		int wan = num6 / 10000;
		
		int shi = num6 / 10 % 10;
		int qian = num6 / 1000 % 10;
		
		if(ge == wan && shi == qian){
			System.out.println(num6 + "是回文数");
		}else{
			System.out.println(num6 + "不是回文数");
		}
	}
}

7、统计1-100之间出现了几次数字9

public class Avc7{
	public static void main(String args[]){
		int count = 0;
		for(int i = 1;i <= 100;i ++){
			//9只会出现在各位或者十位
			if(i % 10 == 9){
				count ++;
			}
			if(i / 10 == 9){
				count ++;
			}
		}
		System.out.println("出现了" + count + "次数字9");
	}
}

 8、前面有n个人在等电梯,电梯每次可以乘坐12人,每次上下需要的时间为4分钟

import java.util.Scanner;

public class Avc8{
	public static void main(String args[]){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入前面有多少个人:");
		int n = sc.nextInt();
		int min = 0;
		
		if(n < 12){
			min = 2;
		}else{
			min = 2 + n / 12 * 4;
		}
		min = 2 + n / 12 * 4;
		System.out.println("总共需要" + min + "分钟");
	}
}

 9、将一个正整数分解质因数。例如:输入90,打印出90 = 2 * 3 * 3 * 5。

import java.util.Scanner;

public class Avc9{
	public static void main(String args[]){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个正整数:");
		int num = sc.nextInt();
		
		//开始输出
		System.out.print(num + "=");	//注意:	println换行输出		print不换行
		for(int i = 2;i <= num;i ++){
			//while循环的意义:	如果发现能够被整除,就一直判断,能不能被同一个数整除
			while(num % i == 0 && num != i){
				num /= i;
				System.out.print(i + "*");
			}
			//注意,最后一个数字,没有*
			if(num == i){
				System.out.print(i);
				break;
			}
		}
		System.out.println();
	}
}

 10、一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3,编程找出1000以内的所有完数

public class Avc10{
	public static void main(String args[]){
		for(int i = 2;i <= 1000;i ++){
			int sum = 1;	//注意,不是0,而是1,为什么?	因为1是任何数字的因子,所以一开始就加上来
			//再来一个循环,循环因子数
			for(int j = 2;j <= i / 2;j ++){
				if(i % j == 0){
					sum += j;
				}
			}
			//循环结束,来判断结果
			if(sum == i){
				System.out.println(i + "是完数");
			}
		}
	}
}

11、20个人考试,随机赋值:40-100,求平均值和不及格人数

import java.util.Random;

public class Avc14{
	public static void main(String args[]){
		Random r = new Random();
		int[] arr1 = new int[20];
		//随机赋值
		for(int i = 0;i < arr1.length;i ++){
			arr1[i] = r.nextInt(100-40+1)+40;
		}		

		double avg = 0;
		double sum = 0;
		int count = 0;

		//开始循环,计算平均值和不及格人数
		for(int i = 0;i < arr1.length;i ++){
			System.out.print(arr1[i] + "\t");
			sum += arr1[i];

			
			//不及格人数
			if(arr1[i] < 60){
				count ++;
			}
		}
		System.out.println("\n平均分为:" + sum / arr1.length);
		System.out.println("\n未及格的人数为:" + count);
	}
}

12、输入一个年月,输出该月的日历。例如:输出2023年12月的日历

import java.util.Scanner;

public class Avc12{
	public static void main(String args[]){
		
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入您要查看的年:");
		int year = sc.nextInt();
		System.out.println("请输入您要查看的月:");
		int month = sc.nextInt();
		//开始计算
		int totalDays = 0;
		//先计算年
		for(int i = 1900; i < year; i ++){
			//能被4整除,但是不能被100整除		或者		能被400整除
			if((i % 4 == 0 && i % 100 != 0) || i % 400 == 0){
				totalDays += 366;
			}else{
				totalDays += 365;
			}
		}
		
		//先来看一下,今年是不是闰年
		boolean isRn = false;
		int days = 0;
		if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){
			isRn = true;
		}
		//再来算月
		for(int i = 1;i <= month; i ++){
			if(isRn == true && i == 2){
				days = 29;
			}else if(isRn == false && i == 2){
				days = 28;
			}else if(i == 4 || i == 6 || i == 9 || i == 11){
				days = 30;
			}else {
				days = 31;
			}
			
			/*else if(i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12){
				days = 31;
			}*/
			
			//这个月的天数,不要加上去
			if(i != month){
				totalDays += days;
			}
		}
		
		totalDays ++;
		
		int firstDay = totalDays % 7;

		
		System.out.println("星期天\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
		//首先找准第一天的位置
		for(int i = 0;i < firstDay; i ++){
			System.out.print("\t");
		}
		//输出这个月的日历
		for(int i = 1;i <= days;i ++){
			System.out.print(i + "\t");
			//i是从1开始的,firstDay也是从1开始的,那么他们两个相加,就多了一个1
			if((i + firstDay - 1) % 7 == 6){
				System.out.println();
			}
		}
	}
}
运行结果:

13、计算:1 - 1/2 + 2/3 - 3/5 + 5/8 ...前100项和 

public class Avc13{
	public static void main(String args[]){
		double sum = 0;
		double x = 1.0;
		double y = 1.0;
		for(int i = 1; i <= 100; i ++){
			if(i % 2 == 0){
				sum -= (x / y);
			}
			else{
				sum += (x / y);
			}
			x += y;
			y = x - y;
		}
		System.out.println(" sum = " + sum);
	}
}

 14、计算:1 - 1/2 + 1/3 -...- 1/100

public class Avc14{
	public static void main(String args[]){
		double sum = 0;
		for(int i = 1; i <= 100; i ++){
			if(i % 2 == 0){
				sum -= (1.0/i);
			}
			else{
				sum += (1.0/i);
			}
		}
		System.out.println(" sum = " + sum);
	}
}

15、计算:1 + 1/2 + 1/3 +...+ 1/100 

public class Avc15{
	public static void main(String args[]){
		double sum = 0;
		for(int i = 1; i <= 100; i++){
			sum += 1.0 / i;
		}
		System.out.println( "sum = " + sum);
	}
}

16、求 BMI指数

import java.util.Scanner;
public class Avc16{
	public static void main(String args[]){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入您的体重(单位/kg):");
		double weight = sc.nextDouble();
		System.out.println("请输入您的身高(单位/m):");
		double height = sc.nextDouble();
		double bmi = weight / (height * height);
		//double bmi = weight / Math.pow(height,2);		开平方根 Math.sqrt()
		//System.out.println(bmi <= 18.4 ? "偏瘦" : bmi <= 23.9 ? "正常" : bmi <=27.9 ? "过重" : "肥胖");
		if(bmi <= 18.4){
			System.out.println("偏瘦");
		}else if(bmi <= 23.9){
			System.out.println("正常");
		}else if(bmi <= 27.9){
			System.out.println("过重");
		}else if(bmi >= 28.0){
			System.out.println("肥胖");
		}
	}
}

 

 

 

 

  • 36
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林熙熠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值