【Java编程强化练习】-流程控制(1)

流程控制

1.需求说明:综合运用嵌套if选择结构、switch选择结构实现商品换购功能。
【Java编程强化练习】-流程控制(1)_第1张图片

public class Practice01 {
	public static void main(String[] args) {		
		Scanner input = new Scanner(System.in);
		
		System.out.print("请输入消费金额:");	
		double money = input.nextDouble();
		double sumMoney = 0.0;
		
		if(money >= 50) {
			System.out.println("是否参加优惠换购活动:");
			System.out.println("1:满50元,加2元换购百事可乐饮料一瓶");
			System.out.println("2:满100元,加3元换购500ml可乐一瓶");
			System.out.println("3:满100元,加10元换购5公斤面粉");
			System.out.println("4:满200元,加10元换购1个苏波尔炒菜锅");
			System.out.println("5:满200元,加20元换购欧莱雅爽肤水一瓶");
			System.out.println("0:不换购");
			
			System.out.print("请选择:");
			int index = input.nextInt();
			
			switch(index) {
				case 1:
					sumMoney = money + 2;
					System.out.println("本次消费总金额:" + sumMoney);
					System.out.print("成功换购:百事可乐饮料一瓶。");
					break;
				case 2:
					sumMoney = money + 3;
					System.out.println("本次消费总金额:" + sumMoney);
					System.out.print("成功换购:500ml可乐一瓶。");
					break;
				case 3:
					sumMoney = money + 10;
					System.out.println("本次消费总金额:" + sumMoney);
					System.out.print("成功换购:5公斤面粉。");
					break;
				case 4:
					sumMoney = money + 10;
					System.out.println("本次消费总金额:" + sumMoney);
					System.out.print("成功换购:1个苏波尔炒菜锅。");
					break;
				case 5:
					sumMoney = money + 20;
					System.out.println("本次消费总金额:" + sumMoney);
					System.out.print("成功换购:欧莱雅爽肤水一瓶。");
					break;
				case 0:
					System.out.println("不换购。");
					break;
				default:
					break;
			}
			
		}else {
			System.out.println("不参与优惠换购活动");
		}
		
		input.close();
	}

}

2.输入赵本山的考试成绩,显示所获奖励。
成绩==100分,爸爸给他买辆车
成绩>=90分,妈妈给他买MP4
90分>成绩>=60分,妈妈给他买本参考书
成绩<60分,什么都不买
(分别用if-else和switch两种方式实现)

public class Practice02 {
	public static void main(String[] args) {
		//1.if-else实现
		Scanner input = new Scanner(System.in);
		System.out.print("请输入赵本山考试成绩:");
		double score = input.nextDouble();

		if (score == 100) {
			System.out.println("爸爸给他买车");
		} else if (score >= 90) {
			System.out.println("妈妈给他买MP4");
		} else if (score >= 60) {
			System.out.println("妈妈给他买本参考书");
		} else {
			System.out.println("什么都不买");
		}		
		input.close();
	}
}
public class Practice02 {
	public static void main(String[] args) {
		//2.switch方式
		Scanner input = new Scanner(System.in);
		System.out.println("请输入赵本山考试成绩:");
		double score = input.nextDouble();
		
		switch((int)score/10) {
			case 10:
				System.out.println("爸爸给他买车");
				break;
			case 9:
				System.out.println("妈妈给他买MP4");
				break;
			case 8:
			case 7:
			case 6:
				System.out.println("妈妈给他买本参考书");
				break;
			case 5:
			case 4:
			case 3:
			case 2:
			case 1:
			case 0:
				System.out.println("什么都不买");
				break;
			default:
				System.out.println("超出0-100范围,输入有误");
				break;				
		}	
		input.close();
	}
}

3.使用while实现:输出摄氏温度与华氏温度的对照表,要求它从摄氏温度0度到250度,每隔20度为一项,对照表中的条目不超过10条。
转换关系:华氏温度 = 摄氏温度 * 9 / 5.0 + 32
提示:
1、循环操作:计算摄氏温度,并输出对照条目
2、循环条件:条目<=10 && 摄氏温度 <= 250
【Java编程强化练习】-流程控制(1)_第2张图片

public class Practice03 {
	public static void main(String[] args) {
		System.out.println("温度\t华氏");
		int ss = 0;
		int hs;
		int count = 1;
		while (ss <= 250 && count <= 10) {
			hs = (int) (ss * 9 / 5.0 + 32);
			System.out.println(ss + "\t" + hs);
			ss += 20;
			count++;
		}
	}
}

4.计算100以内偶数之和。
编程实现:计算100以内(包括100)的偶数之和。

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

5.小红今年12岁,她父亲比她大20岁,编一程序,计算出她父亲在几年后比她的年龄大1倍,那时他们两人的年龄各为多少?

public class Practice05 {
	public static void main(String[] args) {
		int hong = 12;
		int baba = 32;
		int i=1;
		while(i<=100){
			if((hong+i)*2==(baba+i)){
				break;
			}
			i++;
		}
		System.out.println(i);
	}
}

6.需求说明:用户登录验证。验证次数最多3次
【Java编程强化练习】-流程控制(1)_第3张图片

public class Practice06 {
	public static void main(String[] args) {		
		Scanner input = new Scanner(System.in);
		
		int i = 3;	//循环初始化
		while (i > 0) {	//循环条件
			System.out.print("请输入用户名:");
			String userName = input.next();

			System.out.print("请输入密码:");
			String passWord = input.next();
			
			if ("jim".equals(userName) && "123456".equals(passWord)) {
				System.out.println("欢迎登陆MyShopping系统!");
				break;	//跳出循环
			} else {
				i--;	//循环迭代
				System.out.println("输入错误!您还有" + i + "次机会");
				// System.out.println(i);
			}
		}
		if (i == 0) {
			System.out.println("对不起,您3次均输入错误!");
		}
		input.close();
	}
}

7.一辆以固定速度行驶的汽车,清晨司机看到里程表上从左到右的读数和从右到左的计数是一样的,这个数是95859,2小时后,里程表上又出现一个新的对称数,问此车的时速是多少?这个新的对称数是什么?设里程表为5位数字.

public class Practice07 {
	public static void main(String[] args) {
		int speed = 1;
		int lc = 0;
		while(lc<=100000&&speed<=200){
			lc = 95859 + 2*speed;
			if(lc/10000==lc%10 && lc/1000%10==lc/10%10){
				System.out.println("速度为:"+speed+"\t里程为:"+lc);
			}
			speed++;
		}
	}
}

8.求n!,n由键盘输入, 范围要求3-15之间,如果用户输入的数不满足条件,则提示重新输入,直到输入了正确的n, 计算阶乘并输出结果。

import java.util.Scanner;
public class Practice08 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int num;
		while(true){
			System.out.print("请输入3-10之间的数字:");
			num = input.nextInt();
			if(num>=3&&num<=10){
				break;
			}else{
				System.out.println("输入错误,再来!!");
			}
		}
		int sum = 1;
		for(int i=1;i<=num;i++){
			sum *= i;
		}
		System.out.println(sum);
	}
}

9.从键盘输入a,b,c三个值,检查能否构成三角形.如能构成三角形,则计算三角形的面积.

import java.util.Scanner;
public class Practice09 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int a,b,c;	
		System.out.print("请输入第一条边的长度:");
		a = input.nextInt();
		System.out.print("请输入第二条边的长度:");
		b = input.nextInt();
		System.out.print("请输入第三条边的长度:");
		c = input.nextInt();
		if(a+b>c&&a+c>b&&b+c>a){
			System.out.println("可以构成三角形");
		}else{
			System.out.println("不能构成三角形");
		}				
	}
}

10.编程,任意输入15个数,找出最小数.

import java.util.Scanner;
public class Practice10 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.print("请输入第1个数字:");
		int min = input.nextInt();
		for(int i=2;i<=15;i++){
			System.out.print("请输入第"+i+"个数字:");
			int num = input.nextInt();
			if(min>num){
				min = num;
			}
		}
		System.out.println("最小值:"+min);
	}
}

11.编程,任意输入n个数, 当输入-1时结束,找出其中最大数和最小数.

import java.util.Scanner;
public class Practice11 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);		
		System.out.print("请输入数字:");
		int num = input.nextInt();
		if(num!=-1){
			int max,min;
			max = num;
			min = num;
			while(true){
				System.out.print("请输入数字:");
				num = input.nextInt();
				if(num==-1){
					break;
				}
				if(max<num){
					max = num;
				}
				if(min>num){
					min = num;
				}
			}
			System.out.println("最大值:"+max+"\t最小值:"+min);
		}		
	}
}

12.小猴子摘来一些桃.它吃掉了一半,觉得不过瘾,又吃掉了一只.第二天,它也这样,先吃了剩下的一半,再多吃一只.第三天也如此.第十天小猴子一看,就剩一个桃子了.问小猴子那天共摘来多少只桃?

public class Practice12 {
	public static void main(String[] args) {
		int s = 1;
		for(int i=9;i>0;i--){
			s = (s+1)*2;
		}
		System.out.println(s);
	}
}

13.找出1~10000之间的全部同构数.
同构数指一个数出现在它的平方的右端.
如:5的平方是25,5是25右端的数,5和25就是一对同构数.

public class Practice13 {
	public static void main(String[] args) {
		int i=0,j;
		int w=10;
		while(i<=10000){
			i++;
			if(i==w){
				w*=10;
			}
			j=i*i;
			if ((j%w)==i){
				System.out.println(i+"和"+j+"为同构数");
			}		
		}
	}
}

14.如果一个数等于它的每一位数的立方和,则称为水仙花数,如153=1+125+27
求100-999之间的全部水仙花数.

public class Practice14 {
	public static void main(String[] args) {
		for(int i=100;i<=999;i++){
			int gw = i%10;
			int sw = i/10%10;
			int bw = i/100;
			if(i == gw*gw*gw+sw*sw*sw+bw*bw*bw){
				System.out.println(i);
			}
		}
	}
}

15.输出3~100之间的全部素数.

public class Practice15 {
	public static void main(String[] args) {
		for (int i = 3; i <= 100; i++) {
			// 从2开始到i-1,对i进行整除
			int j = 2;
			for (; j < i; j++) {
				if (i % j == 0) {
					break;
				}
			}
			if (i == j) {
				System.out.print(i + "  ");
			}
		}
	}
}

16.计算1+3!+5!+…+(2n-1)! 前10 项和.

public class Practice16 {
	public static void main(String[] args) {
		long sum = 0;
		for(int i=1;i<=10;i++){
			long num =1;
			for(int j=1;j<=2*i-1;j++){
				num *=j;
			}
			sum += num;
		}
		System.out.println(sum);
	}
}

17.编程计算 S=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)

import java.util.Scanner;
public class Practice17 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.print("请输入n:");
		int n = input.nextInt();
		int he=0;
		int sum=0;
		for (int i=1;i<=n;i++){
			he+=i;
			sum+=he;
		}	
		System.out.println("结果为:"+sum);
	}
}

18.用子程序求级数的前n项和,级数为 s=1+(1+3)+(1+3+5)+…+(1+3+5+…+2n-1)

import java.util.Scanner;
public class Practice18 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.print("请输入n:");
		int n = input.nextInt();
		int he = 0;
		int sum = 0;
		for(int i=1;i<=2*n-1;i++){
			if(i%2==1){
				he+=i;			
			}else{
				continue;
			}
			sum+=he;
		}
		System.out.println("结果为:"+sum);
	}
}

19.雨淋湿了小学生算术本上一道题,8个数字只能看清3个(第一个数字虽然模糊不清楚,但可看出不是1):
[□×(□3+□)]2=8□□9,
确定方框中应是什么数.

public class Practice19 {
	public static void main(String[] args) {
		int x,y,z,i,j;
		for(x=2;x<=9;x++){
			for(y=1;y<=9;y++){
				for(z=1;z<=9;z++){
					for(i=0;i<=9;i++){
						for(j=0;j<=9;j++){
							int first=(x*((10*y+3)+z))*(x*((10*y+3)+z));
							int second=8000+100*i+10*j+9;
							if(first==second){
								System.out.println("x="+x+"\ty="+y+"\tz="+z+"\ti="+i+"\tj="+j);
							}
						}
					}
				}
			}
		}
	}
}

20.求100之内的所有完备数.完备数是其各因子之和等于其本身的正整数.

public class Practice20 {
	public static void main(String[] args) {
		for(int i=1;i<=100;i++){
			int sum=0;
			for (int j=1;j<i;j++){
				if(i%j==0){
					sum +=j;
				}
		    }
			if(sum==i){
					System.out.println(i+"为完备数");
		    }
	    }
	}
}

你可能感兴趣的:(编程基础强化)