第八章课后作业

1.编写程序打印如下图案,要求图案的行数由用户输入。
public static void test() {
		//打印图案
		Scanner input = new Scanner(System.in);
		System.out.print("请输入行数:");
		int lineNumber  = input.nextInt();  //键盘输入行数
//		int arr[][] = new int [lineNumber][lineNumber];
		for (int i = 1; i <= lineNumber; i++) {  //行数
			for (int j = 1; j <= i; j++) {   //第i行的第j列
				System.out.print(j+"  ");
			}
			System.out.println("");
		}
	}

2." 百钱百鸡"的问题,题意是:5文钱可以买一只公鸡,3文钱可以买一只母鸡,1文钱可以买3只雏鸡。现在用100文钱买100只鸡,那么公鸡,母鸡,雏鸡各有多少只?编程实现。

public static void test2() {
		//百钱买百鸡
		for (int i = 0; i <20; i++) {  //循环公鸡的数量
			for (int j = 0; j < 33; j++) {   //循环母鸡的数量
				for (int j2 = 0; j2 < 300; j2++) {  //循环小鸡的数量
					if (((5*i)+(3*j)+(j2/3))==100 && (i+j+j2)==100) {
						System.out.println("公鸡有:"+(i+1)+"\t"+"母鸡有:"+(j+1)+"\t"+"小鸡有:"+(j2+1));
					}
				}
			}
		}
	}

3.有三个班级各四名学员参赛,从控制台输入每个班级参赛学员的成绩,要求统计出三个班级所有参赛学员中成绩大于85分的学员的平均分,如何编程实现?

public static void test3() {
		int [][] arr = new int [3][4]; //定义二维数组,分别接受3个班的每个班上的4位同学的成绩
		int count = 0; //平均分大于85的人数
		double avg2 = 0.0;//平均分大于85的同学的平均分
		int totalScore = 0; //平均分大于85分的同学的总成绩
		for (int i = 0; i < arr.length; i++) {
			int sum = 0;//初始化成绩和
			double avg = 0.0;//初始化平均分
			System.out.println("第"+(i+1)+"个班的"+"成绩");
			for (int j = 0; j < arr[i].length; j++) {
				Scanner scanner = new Scanner(System.in);
				System.out.print("请输入第"+(j+1)+"位同学的成绩为:");
				int score = scanner.nextInt();
				arr[i][j] = score;
				sum += arr[i][j];
				if (score>=85) {
					count++;
					totalScore += arr[i][j];
				}
			}
			avg2 = totalScore/(count*1.0);
			
		}
		System.out.println("成绩大于85分的学员的平均分的人数为:"+count);
		System.out.println("成绩大于85分的学员的平均分为:"+avg2);
	}
4.假设在一个ATM机上取款的过程,首先输入密码(password),最多只能输入三次,超过三次则提示用户“ 密码错误,请取款卡”,结束交易。如果输入正确,在提示用户输入金额(amount),ATM只能输出100元的纸币,一次取钱要求最低0元,最高1000元。如果用户输入的金额符合上述要求,则打印输出用户取钱的钱数,最后“提示用户交易完成,请取卡!”

否则提示用户从新输入金额。

public static void test4() {
		Scanner scanner = new Scanner(System.in);
		for (int i = 0; i < 3; i++) { // 循环3次,即给用户3次输错的机会
			System.out.print("请输入密码:");
			int password = scanner.nextInt();
			if (password == 111111) { // 判断用户是否密码输入正确,密码为:111111;
				System.out.print("请输入金额:");
				int money = scanner.nextInt();
				while ((money % 100 == 0 && money > 0 && money <= 1000) == false) { // 循环判断用户输入的金额是否符合银行的出钱条件
					System.out.print("您输入的金额不合法,请重新输入:");
					money = scanner.nextInt();
				}
				System.out.print("您取出了" + money + "元\n");
				break; // 如果满足了银行的出钱的条件则跳出if条件判断。
			} else {  //用户密码输入错误的时候
				if (i == 2) {  //判断用户是否已经输出3次
					System.out.println("您已输错3次,请下次再来!");
				}
				continue;
			}
		}
		System.out.println("交易完成,请取卡!");
	}
6.输入行数,打印菱形,要求如下:

从控制台输入菱形的高度(行数)。如果用户输入的行数合法(奇数),则打印出菱形;否则提示用户输入奇数。

假设用户输入的行数为rows,则每行字符 * 的个数依次为1.、3、5、7、......、rows、7.、5、3、1,。

public static void test5() {
		Scanner scanner = new Scanner(System.in);
		System.out.print("请输入行数:");
		int row = scanner.nextInt();
		while (row%2==0) {
			System.out.print("请输入奇数:");
			row = scanner.nextInt();
		}
		int n  = (row+1)/2;
		for (int i = 1; i <=n ; i++) {
			for (int j = 0; j <n-i ; j++) {
				System.out.print(" ");
			}
			for (int k = 1; k <= 2*i-1; k++) {
				System.out.print("*");
			}
			System.out.println("");
		}
		int x = row-n;
		for (int i =1 ; i <= x; i++) {
			for (int j = 1; j <= i; j++) {
				System.out.print(" ");
			}
			for (int j = 0; j < row-2*i; j++) {
				System.out.print("*");
			}
			System.out.println("");
		}
	}



猜你喜欢

转载自blog.csdn.net/suixincaesar/article/details/79857267