第五章练习题目

发布于:2022-08-09 ⋅ 阅读:(336) ⋅ 点赞:(0)

目录

第一题:

要求:

出现的错误总结:

第二题:判断一个整数的范围 大于0,小于0 ,等于0

出现的错误:

 第三题:

要求:

代码:

出现的错误:

第四题:

要求

代码:

第五题跳过

第六题 :

要求:

错误原因:

更改后的代码

第七题:

要求:

关键知识点:

第八题:

要求:

分析:

错误原因:

改正:

 第九题:

要求:

分析:


第一题:

要求:

假设某人有100000现金。 每经过一次路口需要进行一次交费。 交通规则为为当他现金大于50000时每次需要交5%如果现金小于等于50000时每次交5000。 请写一程序计算此人可以经过多少次这个路口

第一遍代码

        //分三种情况 1)>50000,2)<=50000或者>=1000,3)<1000
        //定义变量表示钱,过路费,次数,
        //double money = 100000;double cost = 0;int count = 0; 
        //

public class HomeWork0101{
	//编写一个main方法
	public static void main(String[] args){
		
		double money = 100000;
		int count = 0;
		double cost = 0;
		if(money > 50000){
			cost = money*0.05;
			money -= cost;
			count++;

		}else if(money >= 1000){
			cost = 1000;
			money -= cost;
			count++;
		}else{
			System.out.println("该人费用不够通过一次路口");
		}
		System.out.println("该人可以经过" + count + "次路口");
	}

}

运行结果,只有一次,只运行了第一个if得到count = 1就输出了

所以需要循环计算,但是我们并不知道这个程序需要循环多少次,所以使用while(true)这个死循环,当money<1000的时候用break结束这个循环

public class HomeWork0101{
	//编写一个main方法
	public static void main(String[] args){
		
		
		double money = 100000;
		int count = 0;
		double cost = 0;
		
		while(true){
			if(money > 50000){
			cost = money*0.05;
			money -= cost;
			count++;

			}else if(money >= 1000){
				cost = 1000;
				money -= cost;
				count++;
			}else{
				break;
			}
		}
		System.out.println("该人可以经过" + count + "次路口");
		
	}

}

出现的错误总结

1.数字10000,不能写成10,000;2.定义变量后面的常量可以是表达式,但是不能有百分号,如money*5%就不行,必须写成money*0.05  3.break语句必须用在循环语句中

代码精简:cost = money*0.05;  money -= cost; 可以写成 money = money-money*0.05  money=money*0.95进一步简化成 money *= 0.95;

cost = 1000;  money -= cost; 简化成money -= 1000;不需要cost这个变量了

public class HomeWork0101{
	//编写一个main方法
	public static void main(String[] args){
		
		double money = 100000;
		int count = 0;
		
		
		while(true){
			if(money > 50000){
			
			money *= 0.95;  
			count++;

			}else if(money >= 1000){
				
				money -= 1000;
				count++;
			}else{
				break;
			}
		}
		System.out.println("该人可以经过" + count + "次路口");
		
	}

}

第二题:判断一个整数的范围 大于0,小于0 ,等于0

import java.util.Scanner;
public class HomeWork0201{
	//编写一个main方法
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入你要判断的数字");
		int num1 = sc.nextInt();

		if(num1 > 0){
			System.out.println("数字" + num1 + "的范围大于0");
		}else if(num1 < 0){
			System.out.println("数字" + num1 + "的范围小于0");
		}else{
			System.out.println("数字" + num1 + "等于0");
		}
		
	}
	


}

出现的错误:

else if(n1 < 0)中文括号,导致编译时报错 非法字符和有if但是没有else

 第三题:

要求:

判断一个年份是否是闰年

闰年的特征:(1)年份能被 4 整除,但不能被 100 整除;(2)能被 400
整除

代码:

import java.util.Scanner;
public class HomeWork0301{
	//编写一个main方法
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入你要判断的年份");
		int year = sc.nextInt();
		//(1)年份能被 4 整除,但不能被 100 整除;(2)能被 400
		//整除
		if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){//短路与和短路或
			System.out.println(year + "年是闰年");
		}else{
			System.out.println(year + "年不是闰年");
		}

		
	}
}

出现的错误:

①int year = sc.nextInt();语句中sc后面的点漏掉了,②忘记导Scanner的包

第四题:

要求

判断一个数是不是水仙花数(三位数)

一个三位数,其各个位上数字立方和等于其本身,即num = a*a*a+b*b*b+c*c*c

百位数a=num/100%10; 十位数 b=num/10%10; 个位数 c=num%10;

输入一个三位数

代码:

import java.util.Scanner;
public class HomeWork0401{
	//编写一个main方法
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入你想判断的数字,范围在100-999之间");
		int num = sc.nextInt();
		int a = num / 100 % 10;
		int b = num / 10 % 10;
		int c = num % 10;
		if(num == a*a*a+b*b*b+c*c*c){
			System.out.println(num + "是水仙花数");
		}else{
			System.out.println(num + "不是水仙花数");
		}
		
		

		
	}
}

第五题跳过

第六题 :

要求:

输出1-100之间不能被5整除的数,每5个一行

public class HomeWork0601{
	//编写一个main方法
	public static void main(String[] args){
		//先输出1-100
		//不能被5整除 i%5!=0;
		int count = 0; 
		for(int i = 1; i <= 100; i++){
			if(i % 5 !=0){
				System.out.print(i + " ");
				count++;
			}
			if(count%5==0){
				System.out.println("");
			}
		} 
		

	}
}		

运行结果

 每四行数字之后会多一行空行,

错误原因:

当i=24时,count=20;20%5==0,换行,当i=25时,i不输出,但是count还是20;20%5==0,再次换行

更改后的代码

public class HomeWork0601{
	//编写一个main方法
	public static void main(String[] args){
		//先输出1-100
		//不能被5整除 i%5!=0;
		int count = 0; 
		for(int i = 1; i <= 100; i++){
			if(i % 5 !=0){
				System.out.print(i + " ");
				count++;
				if(count%5==0){
					System.out.println("");
				}
			}
		} 
	}
}		

第七题:

要求:

输出小写的a-z以及大写的Z-A

//字符型用char,a-z对应的十进制数字是97-122;

关键知识点:

char类型的数据是可以参加运算的

public class HomeWork0701{
	//编写一个main方法
	public static void main(String[] args){
		//单个字符的数据类型是char
		
		for(char c1 = 'a'; c1 <= 'z'; c1++ ){
			System.out.print(c1 + " ");
		}
		System.out.println("");
		for(char c2 = 'Z'; c2 >= 'A'; c2-- ){
			System.out.print(c2 + " ");
		}

	}
}		

第八题:

要求:

求1-1/2+1/3-1/4...-1/100的和

分析:

//化繁为简:100以内奇数1+3+5+7+...+99,50个奇数 前面都是+
//100以内偶数 -2-4-6-8-10-...-100 前面都是-

//1/i必须写成1.0/i

//求出1-1/2+1/3-1/4...1/100的和;
public class HomeWork0801{
    //编写一个main方法
    public static void main(String[] args){
        //奇数为正,偶数为负
        double sum = 0;
        for(int i = 1; i <= 100; i++){
            if(i%2 != 0){
                sum += 1/i;

            }else{
                sum -= 1/i;
            }
        }

        System.out.println("sum=" + sum);
    }
}        

运行结果

错误原因

1/i为int型运算,最后结果为0,只有i=1的时候,sum=1.0,后面所有运算结果都是0,所以最后结果也是1.0

改正:

把1/i改成1.0/i;

//求出1-1/2+1/3-1/4...1/100的和;
public class HomeWork0801{
	//编写一个main方法
	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);
	}
}		

 运行结果

 第九题:

要求:

求1+(1+2)+(1+2+3)+(1+2+3+4)+....+(1+2+3+...100)的和

分析:

         //两个for循环,第一个是有100个加数
        //第二个for循环是每个加数内部的增加

//求出1+(1+2)+(1+2+3)+(1+2+3+4)+...(1+2+3+100)的和;
public class HomeWork0901{
	//编写一个main方法
	public static void main(String[] args){
		
		int sum = 0;
		for(int i = 1; i <= 100; i++){
			for(int j=1; j<=i; j++){
				
				sum+=j;//i=1 sum=1;i=2 sum = 1+1 ;j=2;sum=1+1+2
			}
			
		}
		System.out.println("sum = " + sum);
	}	
}		

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到