表达式及流程控制练习题

一 、某电信公司的市内通话费计算标准如下:三分钟内0.2元,三分钟后每增加一分钟增加0.1元,不足一分钟的按一分钟计算。要求编写程序,给定一个通话时间(单位:秒),计算出应收费金额。

import java.util.Scanner;

public class TwOnly {
     public static void main(String [] args) {
         Scanner sc=new Scanner(System.in);
         boolean  flag=true;
        	 System.out.println("请输入一个通话时间");
             double time=sc.nextInt();
             if(time==0) {
            	System.out.println("输入的时间有误"); 
             }else if(time>0.0&&time<=180.0) {
            	 System.out.println("收费金额为:0.2元");
             }else{
            	 double otherTime=time-180.0;
            	 System.out.println(otherTime);
 double otherMoney =(Math.ceil(otherTime/60))*0.1;//用到了Math.ceil向上取整函数但是使用完该函数是double类型的数据
            	 System.out.println(otherMoney);
            	 double allMoney=0.2+otherMoney;
            	 System.out.println("收费金额为:"+allMoney);
             }
         } 
}

二、某市的出租车计费标准为:3公里以内10元,3公里以后每加0.5公里加收1元;每等待2.5分钟加收元;超过15公里的加收原价的50%为空驶费。要求编写程序,对于任意给定的里程数(单位:公里)和等待时间(单位:秒)计算出应付车费,车费直接截去小数位,只取整数。

import java.util.Scanner;

public class Fare {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入里程数");
		int kilometers=sc.nextInt();
		System.out.println("请输入等待时间");
		int time=sc.nextInt();
        if(kilometers==0) {
        	System.out.println("输入的公里数有误");
        }else if(kilometers<=3) {
        	int money=(time/150)*1;
        	int totalMoney=10+money;
        	System.out.println("车费为:"+totalMoney);
        }else if(3<kilometers&&kilometers<=15) {
        	int otherKilometersmoney=(int)((kilometers-3)/0.5)*1;
        	int money=(time/150)*1;
        	int totalMoney=otherKilometersmoney+10+money;
        	System.out.println("车费为:"+totalMoney);
        }else if(kilometers>15) {
        	int otherKilometersmoney=(int)((kilometers-3)/0.5)*1;
        	int money=(time/150)*1;
        	int totalMoney=otherKilometersmoney+10+money;
        	int otherMoney=(int) (totalMoney*0.5);
        	System.out.println(otherMoney);
        	int allMoney=otherMoney+otherKilometersmoney+money+10;
        	System.out.println("车费为:"+allMoney);
        }
	}
}

三、编写程序,判断给定的某个年份是否是闰年。闰年的判断规则如下:(1)若某个年份能被4整除但不能被100整除,则是闰年。(2)若某个年份能被400整除,则也是闰年。

import java.util.Scanner;

public class Judge {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
        System.out.println("请输入年份");
        int year=sc.nextInt();
        if(year%4==0&&year%100!=0||year%400==0) {
        	System.out.println("输入的年份为闰年");
        }
	}

}

四、给定一个百分制的分数,输出相应的等级。90分以上A级80~89 B级70~79 C级60~69 D级60分以下E级

import java.util.Scanner;

public class Q1 {

	public static void main(String[] args) {
	   Scanner sc=new Scanner(System.in);
	   System.out.println("请输入分数");
	   int score=sc.nextInt();
	   if(score>90) {
		   System.out.println("等级为A级");
	   }else if(score>=80&&score<90) {
		   System.out.println("等级为B级");
	   }else if(score>=70&&score<79) {
		   System.out.println("等级为C级");
	   }else if(score>=60&&score<69) {
		   System.out.println("等级为D级");
	   }else if(score<60) {
		   System.out.println("等级为E级");
	   }
	}
}

五、编写程序求1+3+5+7+......+99的和值。

public class Sum {

	public static void main(String[] args) {
		int sum=0;
		for(int i=1;i<=100;i++){
			if(i%2!=0) {
				sum=sum+i;
			}
		}
		System.out.println(sum);
	}

}

六、编写程序输出1-100之间所有能被7整除的偶数。

public class our {
	public static void main(String[] args) {
		for(int i=1;i<=100;i++) {
			if(i%7==0&&i%2==0) {
				System.out.println(i);
			}
		}
	}
}

七、请编写程序输出九九乘法表。


public class TimesTable {

	public static void main(String[] args) {
		for(int i=1;i<=9;i++) {
			for(int j=1;j<=i;j++) {
				System.out.print(j+"*"+i+"="+i*j+"\t");
			}
			System.out.println();
		}

	}

}

八、给定一个整数,把它的各位数字倒排过来形成一个新的整数例如:给定12345输出54321;      给定   9870  输出  789

import java.util.Scanner;

public class Fan {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入一串数字");
        int number=sc.nextInt();
        while(number!=0) {
        	int b=number%10;
        	if(b!=0) {
        		System.out.print(b);
        	}
        	number=number/10;
        }
	}
}

数组练习题

一、定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值,最小值,平均值,和值,并输出出来

public class Array {
	public static void main(String[] args) {
		int [] array=new int [] {9,5,6,8,2,3,6,4,45,20};
		int max=array[0];
	    int min=array[0];
	    int total=array[0];
	    int avary = 0;
		for(int i=0;i<array.length;i++) {
			if(max<array[i]) {
				max=array[i];
			}
			if(min>array[i]){
				min=array[i];
			}
		}
		for(int i=1;i<array.length;i++) {
			total=array[i]+total;
		    avary=total/array.length;
		}
		
		System.out.println("数组中的最大值"+max);
		System.out.println("数组中的最小值"+min);
		System.out.println("数组中元素的和"+total);
		System.out.println("数组中元素的平均值"+avary);
	}
}

 二、定义一个int型的一维数组,包含10个元素,分别赋值为1~10,然后将数组中的元素都向前移一个位置,即,a[0]=a[1],a[1]=a[2],...最后一个元素的值是原来第一个元素的值,然后输出这个数组。

import java.util.Arrays;

public class Move {

	public static void main(String[] args) {
		    int array[]=new int [] {1,2,3,4,5,6,7,8,9,10};
		    int m=array[0];
		    for(int i=0;i<array.length-1;i++) {
		    	
		    	array[i]=array[i+1];
		    }
		    array[array.length-1]=m;
              System.out.println(Arrays.toString(array));
	}

}

三、定义一个int型的一维数组,包含40个元素,用来存储每个学员的成绩,循环产生40个0~100之间的随机整数,将它们存储到一维数组中,然后统计成绩低于平均分的学员的人数,并输出出来。

import java.util.Arrays;

public class Score {

	public static void main(String[] args) {
		int total=0;
		int flag=0;
		int [] array=new int [40];
		for(int i=0;i<array.length;i++) {
			array[i]=(int) (Math.random()*100);
			total=total+array[i];
		}
		  System.out.println(Arrays.toString(array));
       int average=total/array.length;
     System.out.println(average);
      for(int i=0;i<array.length;i++) {
    	  if(array[i]<average) {
    		  flag=flag+1;
    	  }
      }
      System.out.println("成绩低于平均成绩的学生人数:"+flag);
	}
}

四、承上题,将这40个成绩按照从高到低的顺序输出出来(运用冒泡排序解决问题)

import java.util.Arrays;

public class Score {

	public static void main(String[] args) {
		int total=0;
		int flag=0;
		int [] array=new int [40];
		for(int i=0;i<array.length;i++) {
			array[i]=(int) (Math.random()*100);
			total=total+array[i];
		}
		
		for(int i=0;i<array.length-1;i++) {
			for(int j=0;j<array.length-1-i;j++) {
				if(array[j]<array[j+1]) {
					int temp=array[j];
					array[j]=array[j+1];
				    array[j+1]=temp;
				}
			}
		}
		System.out.println(Arrays.toString(array))	;	
		}
}

五、编写程序,将一个数组中的元素倒排过来。例如原数组为1,2,3,4,5;则倒排后数组中的5,4,3,2,1。 

import java.util.Arrays;

public class Score {

	public static void main(String[] args) {
		int total=0;
		int flag=0;
		int [] array=new int [40];
		for(int i=0;i<array.length;i++) {
			array[i]=(int) (Math.random()*100);
			total=total+array[i];
		}
		System.out.println(Arrays.toString(array))	;	
		
		for(int j=0;j<(array.length)/2;j++) {
			int temp=array[j];
			array[j]=array[array.length-1-j];
			array[array.length-1-j]=temp;
		}
		System.out.println(Arrays.toString(array));
		}
}

方法练习题

1、写一个方法,求1+3+5+7...的前n项的和,n通过方法参数给定,和值通过方法返回值返回。

import java.util.Scanner;

public class new1 {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入n的值:");
		int n=sc.nextInt();
	     System.out.println("和的值为:"+sum(n));
	}
	public static  int sum(int n) {
		int total=0;
		int count=(n+1)/2;
		for(int i=0;i<count;i++) {
			total=2*i+1+total;
		}
		return total;
	}

}

2、写一个方法判断给定的年份是否是闰年。

import java.util.Scanner;

public class new2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入年份");
            int year=sc.nextInt();
            panDuan(year);
	}
	public static  void panDuan(int year) {
		 if(year%4==0&&year%100!=0||year%400==0) {
			 System.out.println("年份为闰年");
		 }else {
			 System.out.println("年份不是闰年");
		 }
	}

}

3、写一个方法,用来求一个整形数组中的最大元素,方法需要一个int[]类型的参数,返回一个整形值。


public class new3 {

	public static void main(String[] args) {
		int [] array=new int [] {1,5,6,7,2,100,4,9,8};
		System.out.println(Max(array));
	}
    public static int Max(int [] a ) {
    	int max=a[0];
    	for(int i=1;i<a.length;i++) {
    		if(a[i]>max) {
    			max=a[i];
    		}
    	}
       return max;
    }
}

4、写一个方法用来判断一个整数是否是素数,如果是则返回true,否则返回false,在主方法中调用这个方法,验证其是否正确。

import java.util.Scanner;

public class new4 {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入数字");
		int number=sc.nextInt();
        suShu(number);
	}
    public static void suShu(int a) {
    	boolean flag;
        int i=0;
        int j=0;
        flag=true;
        for(j=2;j<=a/2;j++){
            if(a%j==0){
                flag=false;
                break;
            }
        }
        if(j>a/2){
           System.out.println("是素数");
        }else{
           System.out.println("不是素数");
        }
    }
}

5、写一个方法用来生成一个整形数组,该方法返回一个int[]类型,需要一个int型参数,数组的大小由传进来的参数决定

import java.util.Arrays;
import java.util.Scanner;

public class new5 {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入需要生成的数组大小");
		int number=sc.nextInt();
        array(number);
	}
      public static int [] array(int n) {
    	  int [] a=new int[n];
    	  for(int i=0;i	<a.length;i++) {
    		  a[i]=(int)(Math.random()*10)+1;
    	  }
    	 System.out.println(Arrays.toString(a)); 
    	  return a;
      }
}

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值