几个java小练习

在B站听白嫖课的时候,看到老师布置的java练习题,就花了几个小时做了一下。
习题1;
//计算1000以内不能被七整除的整数之和。

//计算1000以内不能被七整除的整数之和。
public class HomeWork01{
	public static void main(String[] args){
		int sum = 0;
		for(int i = 0; i <= 1000; i++){
			if(i%7 != 0){
				sum += i;
			}
		}
		System.out.println("sum = " + sum);    
	}
}
习题2
//计算1+2-3+4-5+6-7+....+100的结果

```java
//计算1+2-3+4-5+6-7+....+100的结果
public class HomeWork02{
	public static void main(String[] args){
		int sum = 0;
		for(int i = 1;i <= 100; i++){
			int num = i;
			if(num%2 != 0 && num!= 1){
				num = -num;
				//System.out.println("num-->" + num);
			}
				sum += num;
		}
		System.out.println("sum-->" + sum);
	}
}

习题3
//从控制台接收一个正整数,计算该数的阶乘。

//从控制台接收一个正整数,计算该数的阶乘。
public class HomeWork03{
	public static void main(String[] args){
		java.util.Scanner a = new java.util.Scanner(System.in);
		System.out.print("请输入20以内阶乘的数(精度更高):");
		long choice = a.nextLong();
		long sum = 1;
		for(long i = 1; i <= choice; i++ ){
			sum *= i;
		}
		System.out.println("sum = " + sum);	}
}

习题4
//从控制台接收一个正整数,判断是否为质数

//从控制台接收一个正整数,判断是否为质数
//质数指在大于1的自然数中,除了1和它本身不能有其他自然因数
//思路:接收一个数,规定一个除数从2开始,不断++1 如果能被整除的就不是质数
public class HomeWork04{
	public static void main(String[] args){
		System.out.print("请输入正整数:");
		java.util.Scanner s = new java.util.Scanner(System.in);
		int choice = s.nextInt();
		//可以定义boolean a = true 然后在下面使用三目运算符
		boolean b = true;//定义一个判断式 0 为质数,1不是质数
		//定义一个除数开始的数
		for(int chushu = 2; chushu < choice; chushu++){
			if(choice % chushu == 0){
				//System.out.println("你输入的数:" + choice +"不是质数!");
				b = false;//不是质数的时候把判断置为1,不会匹配下面的判断
				break;
			}
		}
		System.out.println("你输入的数:" + choice + (b ? "是":"不是") + "质数!");
	}
}

习题5
//从键盘接收一个正整数 ,为行数 输出半菱形

//从键盘接收一个正整数 ,为行数 输出半菱形
//比如输入5则输出5行
public class HomeWork05{
	public static void main(String[] args){
		System.out.print("请输入打印行数(正整数):");
		java.util.Scanner s = new java.util.Scanner(System.in);
		int choice = s.nextInt();
		for(int i = 1; i <= choice; i++){//行数
			for(int k = (choice-i);k > 0; k--){
				System.out.print(" ");
			}
			for(int j = 1; j <= 2*i-1; j++){
					System.out.print("*");
			}
			System.out.println();//换行
		}
			
	}
}

习题6
//小芳的妈妈每天给她2.5元她都会存起来,但是,每当这天是存钱的第五天或者是5的倍数
//的话她都会花去6元钱,问要经过多少天才能攒够100元钱?

//小芳的妈妈每天给她2.5元她都会存起来,但是,每当这天是存钱的第五天或者是5的倍数
//的话她都会花去6元钱,问要经过多少天才能攒够100元钱?
public class HomeWork06{
	public static void main(String[] args){
		double money = 0;//定义初始钱
		int day = 0;//定义天数
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.print("请输入存多少钱:");
		double big = s.nextDouble();
		while(money < big){
			day += 1 ;
			money += 2.5;
			//System.out.println("i="+day);
			if(day % 5 == 0){
				money -= 6;
			}
		}
		System.out.println("总共需要" + day + "天攒了"+ money+"钱");
	}
}

习题7
//一个数恰好等于它的因子之和,这个数就是完数,例如6 = 1+2+3 编程找出1000内所有完数

//一个数恰好等于它的因子之和,这个数就是完数,例如6 = 1+2+3 编程找出1000内所有完数
public class HomeWork07{
	public static void main(String[] args){
		//构建1到1000的数
		for(int i = 1; i < 1000; i++ ){
			int sum = 0;//定义因数加数
			//构建每个数的因数
			for(int j = 1; j < i; j++){
				if(i % j == 0){
					sum += j;
				}
			}
			if(sum == i){
				System.out.println("完数:" + i);
			}
		}
	}
}

习题8
//给一个不多于5位的正整数
//要求:1.求它是几位数,2.逆序打印各个数字
习题8没做出来,不知道,理论来说应该没问题,不知道哪里错了,输出结果不符合预期。。

//给一个不多于5位的正整数
//要求:1.求它是几位数,2.逆序打印各个数字
public class test{
	public static void main(String[] args){
		java.util.Scanner t = new java.util.Scanner(System.in);
		System.out.print("请输入不多于5位的正整数:");
		int sum = t.nextInt();
		int w = 0;
		int q = 0;
		int b = 0;
		int s = 0;
		int g = 0;
		//定义万位
		for(; w < 10; w++){
			//定义千位
			for(; q < 10; q++){
				//定义百位
				for(; b < 10; b++){
					//定义十位
					for(; s < 10; s++){
						//定义个位
						for(; g < 10; g++){
							sum = 10000*w + 1000*q + 100*b + 10*s + g;
						}
					}
				}
			}
		}
		System.out.println("w:"+ w +"q:"+ q + "b:" + b + "s:" + s + "g:"+ g );
	}
}

几个java小练习_第1张图片
这个是结果,好疑惑。。。。估计解释器崩了,没见过这样的。。。
-------------------分割----------------------------
后面想了想不对呀,可以用if 判断,顺便看了一下c语言实现的,我太笨了,还算实现了。

//给一个不多于5位的正整数
//要求:1.求它是几位数,2.逆序打印各个数字
public class test{
	public static void main(String[] args){
		java.util.Scanner t = new java.util.Scanner(System.in);
		System.out.print("请输入不多于5位的正整数:");
		int num = t.nextInt();
		int weishu = 0;
		if(num > 9999){
			weishu = 5;
		}else if(num > 999){
			weishu = 4;
		}else if(num > 99){
			weishu = 3;
		}else if(num > 9){
			weishu = 2;
		}else{
			weishu = 1;
		}
		System.out.println("你输入的数:"+ num + "是" + weishu +"位数。");
		//每位数字
		int wan = num/10000;
		//System.out.print("w="+wan);
		int qian = (num-wan*10000)/1000;
		int bai = (num-(wan*10000+qian*1000))/100;
		int shi = (num-(wan*10000+qian*1000+bai*100))/10;
		int ge = (num-(wan*10000+qian*1000+bai*100+shi*10));
		System.out.println("逆序:"+ge+shi+bai+qian+wan);
	}
}

菜。

你可能感兴趣的:(几个java小练习)