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(""); } }