Java流程控制小作业

题目一:

已知判断闰年的规则是:能被4整除,但是不能被100整除。或者能被400整除。打印从1900年至2050年期间所有的闰年。
题目思路:对1900年至2050年进行遍历,遍历过程中对当前年份进行判断,看是否符合闰年要求。
代码如下:

public static void main(String[] args) {
		for (int i = 1900 ; i <= 2050 ; i++) {	//从年份区间遍历
			if ((i%4 == 0 && i%100 != 0) || i%400 == 0)	//判断是否满足闰年规则
				System.out.println(i);
		}
}

题目二:

使用while/do-while/for循环三种方式打印100以内4的倍数
题目思路:对100以内数字进行遍历,并对当前数字进行判断(即此数对4进行取余如为0则是4的倍数)
代码如下:

public static void main(String[] args) {
		int i=1,j=1;	//设置while的循环标识
		while (i < 100) {	//while结构
			if(i%4 == 0)
				System.out.println(i);
			i++;
		}
		do {	//do-while结构
			if (j%4 == 0)
				System.out.println(j);
			j++;
		} while (j < 100);
		for (int m=1;m < 100;m++) {	//for结构
			if(m%4 == 0)
				System.out.println(m);
		}
	}

题目三:

输入数量不确定的正数和负数(一次输入一个),然后打印正数和负数的个数,当输入0时,程序停止
题目思路:无限循环对当前输入进行判断,如为0则跳出,正数负数分别计数。
代码如下:

import java.util.Scanner;	//导入输入扫面器包
public class Test3 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);	//创建扫描器对象
		int z=0,f=0;	//创建标记变量
		while (true) {
			int x=sc.nextInt(); 	//获取输入
			if (x == 0)
				break;			
			if (x > 0) {
				z++;
			} else {
				f++;
			}		
		}
		System.out.println("正数的个数为:"+ z +" 负数的个数为:" + f);
	}
}

题目四:

输入序号选择不用的功能,效果如下图
在这里插入图片描述
题目思路:此题目为简单分支结构,对输入数值进行分支判断即可。
代码如下:

import java.util.Scanner;
public class Test4 {
	public static void main(String[] args) {	//简单选择程序
		Scanner sc = new Scanner(System.in);
		System.out.println("****************");
		System.out.println("1.管理员 2.顾客 3.退出");
		System.out.println("****************");
		System.out.println("请输入数字选择登录:");
		int key = sc.nextInt(); 
		switch (key) {
		case 1:
			System.out.println("管理员已登录");
			break;
		case 2:
			System.out.println("顾客已登录");
			break;
		case 3:
			System.out.println("系统已退出");
			break;
		default:
			System.out.println("数字非法");
		}
	}
}

题目五:

编写程序,设计一个图平面积计算,选择不同的图形输入数字计算面积,选择4退出程序,效果如下:
在这里插入图片描述
题目思路:思路同上题。
代码如下:

import java.util.Scanner;
public class Test5 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);				
		while ( true ) {
			System.out.println("计算面积");
			System.out.println("1.矩形 2.三角形 3.圆 4.退出");
			System.out.println("请输入数字对应功能:");
			int key=sc.nextInt();
			switch (key) {	//利用switch来选择功能
			case 1:
				System.out.println("你选择了矩形");
				System.out.println("请输入矩形的长:");
				int x=sc.nextInt(); 
				System.out.println("请输入矩形的宽:");
				int y=sc.nextInt();
				System.out.println("矩形的面积为:"+x*y);
				break;
			case 2:
				System.out.println("你选择了三角形");
				System.out.println("请输入三角形的底:");
				int s=sc.nextInt(); 
				System.out.println("请输入三角形的高:");
				int h=sc.nextInt();
				System.out.println("矩形的面积为:"+s*h);
				break;
			case 3:
				System.out.println("你选择了圆");
				System.out.println("请输入圆的半径:");
				int r=sc.nextInt(); 
				System.out.println("圆的面积为:"+Math.PI*r*r);
				break;
			case 4:
				return;
			default:
				System.out.println("数字非法");
			}
		}		
	}
}

题目六:

要求用户输入用户名和密码,只要不是admin和111就提示用户名或密码不正确,请重新输入。正确时结束循环,提示登陆成功
题目思路:无限循环对所输入两串进行判断,正确时跳出。
代码如下:

import java.util.Scanner;
public class Test6 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while ( true ) {
			System.out.println("请输入用户名:");
			String user = sc.next();
			System.out.println("请输入密码:");
			String pwd = sc.next();
			if ( user.equals("admin") && pwd.equals("111")) {	//将输入进行对比
				System.out.println("登陆成功!");
				return;
			}else{
				System.out.println("用户名或密码不正确,请重新输入");
			}
		}
	}
}

题目七:

使用for循环方式计算2+4+6+…+100的值
题目思路:此为简单循环程序。
代码如下:

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

题目八:

编写Java程序,在控制台上打印出九九乘法表(两种),效果如下:
在这里插入图片描述
在这里插入图片描述
题目思路:观察结果,确定循环起止即可。
代码如下:

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

	}

题目九:

不断要求用户输入一个数字(假定用户输入的数字都是正整数),当用户输入end的时候显示刚才输入数字中的最大值。
题目思路:无限循环对所输入串进行比对,如为end则跳出,否则转为整形与当前最大值进行对比。
代码如下:

import java.util.Scanner;
public class Test9 {
	public static void main(String[] args) {
		Integer s = null;
		Scanner sc = new Scanner(System.in);
		while (true) {
			String num = sc.next();
			if (num.equals("end"))
				break;
			int n = Integer.parseInt(num);	//此处调用方法将字符串转为整形
			if(s==null)
				s=n;
			if (n > s)
				s = n;
		}
		System.out.println("最大值为" + s);
	}
}

题目十:

输入一个整数,判断这个数字是不是质数。
题目思路:只需遍历此数之前所有整数如可被除此数本身与一整除便不为质数。
代码如下:

import java.util.Scanner;
public class Test10 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个数:");
		int n = sc.nextInt();
		for (int i = n - 1; i > 1; i--) {
			if (n % i == 0) {
				System.out.println("此数不是质数");
				return;
			}
		}
		System.out.println("此数是质数");
	}
}

题目十一:

打印出100以内的质数,一行显示5个,(质数是只能被1跟自身整除的数,1不是质数)。
题目思路:思路同上,可利用双重for循环并设置标记如if为真则不为质数。
代码如下:

public static void main(String[] args) {
		int count = 0, tage = 0;
		for (int i = 2; i < 100; i++) {
			tage = 0;
			for (int j = i - 1; j > 1; j--) {
				if (i % j == 0) {
					tage = 1;
				}
			}
			if (tage == 0) {
				System.out.print(i + "\t");
				count++;
				if (count % 5 == 0)
					System.out.println();
			}
		}
	}

题目十二:

某城市出租车计费问题:
1.每日06:00-22:00,起步价6元,当日22:00-次日06:00,起步价7元,时间范围为0~23。
2.起步价包含2公里,超出部分按照每公里1.5元收费。
3.每次乘车加收1元的燃油附加税。
输入打车的时间和距离,计算本次打车的费用。
题目思路:此为简单分支题目。
代码如下:

import java.util.Scanner;
public class Test12 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入打车时间:");
		int time = sc.nextInt();
		System.out.println("请输入打车距离:");
		int s = sc.nextInt();
		if (time >= 6 && time < 22) {	//判断时间范围
			if (s <= 2) {	//判断公里数是否超过两公里
				System.out.println("本次打车费用为:" + (6 + 1));
			} else {
				System.out.println("本次打车费用为:" + (6 + (s - 2) * 1.5 + 1));
			}
		} else if ((time >= 22 && time < 0) || (time >= 0 && time < 6)) {
			if (s <= 2) {
				System.out.println("本次打车费用为:" + (7 + 1));
			} else {
				System.out.println("本次打车费用为:" + (7 + (s - 2) * 1.5 + 1));
			}
		} else {
			System.out.println("输入时间非法!");
		}
	}
}

题目十三:

有一只猴子摘了一堆桃子,每天吃掉一半桃子还不过瘾再多吃一个,吃到第十天的时候发现还剩下一个桃子,问猴子第一天一共摘了多少个桃子?
题目思路:
第10天:桃子数是:1
第9天:桃子数是:(1+1)*2=4
第8天:桃子数是:(4+1)*2=10

总结:前一天的桃子数=(后一天的桃子数+1)*2。
可从后往前递推。
代码如下:

public static void main(String[] args) {
		int x = 1, s = 0;
		for (int i = 0; i <= 10; i++) {
			s += x;
			x = (x + 1) * 2;
		}
		System.out.println(s);
}

题目十四:

使用for循环实现:根据用户输入的正整数n,求n!,即n!=n*(n-1)(n-2)…*1。
题目思路:此题为简单循环题目。
代码如下:

import java.util.Scanner;
public class Test14 {
	public static void main(String[] args) {
		int s = 1;
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入一个正整数:");
		int n = sc.nextInt();
		System.out.print("则n的阶乘为:");
		for (int i = 1; i <= n; i++) {
			s *= i;
		}
		System.out.println(s);
	}
}

题目十五:

使用循环打印圣诞树,要求输入树的高度,打印树根高度为1的圣诞树。
题目思路:
1、双层循环
2、高度:h
3、当前行:n
4、空格数:当前行h-n
5、星星数:2n-1
综上可判断循环范围。
代码如下:

import java.util.Scanner;
public class Test15 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入圣诞树高度:");
		int h = sc.nextInt();
		for (int i = 1; i <= h; i++) {
			for (int m = h - i; m >= 0; m--) {
				System.out.print(" ");
			}
			for (int n = 1; n <= 2 * i - 1; n++) {
				System.out.print("*");
			}
			System.out.println();
		}
		for (int m = h - 1; m >= 0; m--) {
			System.out.print(" ");
		}
		System.out.println("*");
	}
}

题目十六:

(百元钱买百只鸡问题)一只公鸡5元钱,一只母鸡3元钱,三只小鸡1元钱。要求100元买100只鸡,请给出所有可行的结果?
题目思路:可利用三重循环遍历所有情况,并对当前情况进行判断。
代码如下:

public static void main(String[] args) {
		for (int g = 1; g <= 100; g++) {
			for (int m = 1; m <= 100; m++) {
				for (int x = 1; x <= 100; x++) {
					if (((g + m + x) == 100) && ((g * 5 + m * 3 + x / 3) == 100))
						System.out.println("此时" + g + "只公鸡" + m + "只母鸡" + x + "只小鸡");
				}
			}
		}
}

题目十七:

所谓回文数是指正着数和倒着数一样大,比如1001,5005,8228,9999。请打印出1000-9999之间所有的回文数
题目思路:可对1000-9999所有数字进行遍历,并拆出此数各个位,反乘位数判断即可。
代码如下:

public static void main(String[] args) {
		for (int i = 1000; i <= 9999; i++) {
			int g = i % 10;
			int s = i / 10 % 10;
			int b = i / 100 % 10;
			int q = i / 1000;
			if (i == (g * 1000 + s * 100 + b * 10 + q))
				System.out.println(i);
		}
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值