Java基础20(跳转控制语句练习题)

跳转控制语句练习题

习题一:
编程实现如下功能:
某人有100,000元,每经过一次路口,需要交费,规则如下:
1)当现金>50000时,每次交5%
2)当现金<=50000时,每次交1000
编程计算该人可以经过多少次路口,要求使用while break方式完成

思路分析:

1.定义double money 保存100000
2.根据题的要求,分析出来三种情况
       money>50000
       money>=1000 && money<=50000
       money<1000
3.使用多分支 if-elseif-else
4.while+break[money<1000],同时使用一个变量count来保存通过路口      

代码实现:

 public static void main(String[] args) {
		//某人有100,000元,每经过一次路口,需要交费,规则如下:
		//1)当现金>50000时,每次交5%
		//2)当现金<=50000时,每次交1000
		//编程计算该人可以经过多少次路口,要求使用while break方式完成
		double money=100000;  //还有多少钱
		int count=0;   //累积过的路口
		while(true){
			if(money>50000){ //过路口
			//money = money - money * 0.05	
				money=money*0.95;  
				count++;
			}else if(money >=1000){
				money-=1000;
				count++;
			}else{   //小于1000块,钱不够
				break;
			}
		}
		System.out.println("100000可以过"+count+"个路口");
	}

习题二:
实现判断一个整数,属于哪个范围 : 大于0 ; 小于 ; 等于0

代码实现:

public static void main(String[] args) {
		//实现判断一个整数,属于哪个范围 : 大于0 ; 小于 ; 等于0
		Scanner sc = new Scanner(System.in);
		System.out.println("输入一个整数判断范围:");
		int num = sc.nextInt();
		if(num>0){
			System.out.println("大于0");
		}else if(num==0){
			System.out.println("等于0");
		}else{
			System.out.println("小于0");
		}
	}

习题三:
判断一个年份是否为闰年

思路分析:

1. 年份是4的倍数而不是100的倍数;

2. 年份是400的倍数。

其他的年份都不是闰年。

代码实现:

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+"不是闰年");
		}
	}

习题四:
判断一个整数是否是水仙花数,所谓水仙花数是指一个3位数,其个位上数字立方和等于本身。例如:153 = 111 + 333 + 555

思路分析:

1.比如 int num=153;
2.先得到num的百位,十位,个位的数字,使用if判断他们的立方和是否相等
3.num的百位=n/100
4.num的十位=num%100/10
5.num的个位=num%10

代码实现:

public static void main(String[] args) {
		//判断一个整数是否是水仙花数,所谓水仙花数是指一个3位数,
		//其个位上数字立方和等于本身。例如:153 = 1*1*1 + 3*3*3 + 5*5*5
		Scanner sc = new Scanner(System.in);
		System.out.println("输入一年份判断是否为闰年:");
		int num = sc.nextInt();
		int g=num%10,s=num/10%10,b = num/100;
		if(num==(b*b*b+s*s*s+g*g*g)){
			System.out.println(num+"是水仙花数");
		}else{
			System.out.println(num+"不是水仙花数");
		}
	}

习题五:
看看下面代码输出什么?

class Demo{
       public static void main(String[] args){
          int m=0,n=3;
          if(m>0){
              if(n>2){
                   System.out.println("OK1");
              }else{
                   System.out.println("OK2");
              }
           }
        }
} 

//这个代码不输出任何值                       

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

代码实现:

public static void main(String[] args) {
		//输出1-100之间的不能被5整除的数,每5个一行
		int count=0;
		for(int i=1;i<=100;i++){
			if(i%5==0){
				System.out.print(i+" ");
				count++;
			}
			if(count==5){
				System.out.println();
				count=0;
			}
		}
	}

习题七:
输出小写的a-z以及大写的Z-A

思路分析:

1.b='a'+1  c='a'+2
2.使用for搞定

代码实现:

//方法一:
public static void main(String[] args) {
		//输出小写的a-z以及大写的Z-A
		for(char c1='a';c1<='z';c1++){
		 System.out.println(c1+" ");  
		}
		for(char c1='Z';c1>='A';c1--){
		 System.out.println(c1+" ");  
		}
	}
	
//方法二:
public static void main(String[] args) {
		//输出小写的a-z以及大写的Z-A
		for(int i=97;i<=122;i++){
			char n =(char)i;
			System.out.print(n+" ");
		}
		System.out.println();
		
		for(int i=99;i>=65;i--){
			char n=(char)i;
			System.out.print(n+" ");
		}
	}

习题八:
求出1-1/2+1/3-1/4…1/100的和

思路分析:

1.  1-1/2+1/3/4....1/100 = (1/1)-(1/2)+(1/3)-(1/4)...1/100
2. 从上面的分析可以看到
(1)一共有100个数,分子为1,分母从1-1002)当分母为奇数时,前面是+,当分母是偶数时,前面是-
3. 可以使用for + 判断即可完成
4. 把结果存放在double sum
5. 这里有一个隐藏的陷阱,要把 公式分子 1 写出 1.0 才能得到精确的小数

代码实现:

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)的结果

思路分析:

1.一共有100项相加
2.每一项的数字在逐渐增加
3.很像一个双层循环

代码实现:

public static void main(String[] args) {
		//求1+(1+2)+(1+2+3)+(1+2+3+4)+....+(1+2+3+..+100)的结果
		int sum=0;
		//i可以表示是第几项,同时也是当前项的最后一个数
		for(int i=1;i<=100;i++){
          for(int j=1;j<=i;j++){   //内层对1-i进行循环
        	     sum+=j;
        	  if(j==i){
        	   	 break;
              }
          }
 		}
		System.out.println(sum);
	}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值