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("肥胖");
}
}
}