在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 );
}
}
这个是结果,好疑惑。。。。估计解释器崩了,没见过这样的。。。
-------------------分割----------------------------
后面想了想不对呀,可以用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);
}
}
菜。