JAVA 入门程序练习(2)

JAVA 基础程序练习题(2)

28. 输出三角形图形

package day05;

/**
 * @author TaoTianye 
 输出图形:
    *           行数i=1   空格数=4   *的个数=1
   ***          行数i=2   空格数=3   *的个数=3   
  *****         行数i=3   空格数=2   *的个数=5
 *******        行数i=4   空格数=1   *的个数=7
*********       行数i=5   空格数=0   *的个数=9
 */
public class lianxi02 {
	public static void main(String[] agre) {
		for(int i=1;i<=5;i++) {
			//输出空格
			for(int j=1;j<=5-i;j++) {
				System.out.print(" ");
			}
			//输出*
			for(int j=1; j<=2*i-1;j++) {
				System.out.print("*");
			}
			System.out.println();
		}
		
	}
}

29.输出三角形图形

package day05;

/**
 * @author TaoTianye
 
 3)输出图形:
    *                行数i=1   空格数j=4   *的个数k=1
   * *               行数i=2   空格数j=3   *的个数k=2
  * * *              行数i=3   空格数j=2   *的个数k=3
 * * * *             行数i=4   空格数j=1   *的个数k=4
* * * * *            行数i=5   空格数j=0   *的个数k=5
 
 */
public class lianxi03 {
	public static void main(String[] args) {
		// 行
		for (int i = 1; i <= 5; i++) {
			// 空格打印
			for (int j = 1; j <= 5 - i; j++) {
				System.out.print(" ");
			}
			// *的打印
			for (int j = 1; j <= i; j++) {
				if (j != i) {
					System.out.print("* ");
				} else {
					System.out.println("*");
				}
			}
		}
	}
}

30.制作九九乘法表

形如:

1X1=1
1X2=2 2X2=4
1X3=3 2X3=6 3X3=9
1X4=4 2X4=8 3X4=12 4X4=16
1X5=5 2X5=10 3X5=15 4X5=20 5X5=25
1X6=6 2X6=12 3X6=18 4X6=24 5X6=30 6X6=36
1X7=7 2X7=14 3X7=21 4X7=28 5X7=35 6X7=42 7X7=49
1X8=8 2X8=16 3X8=24 4X8=32 5X8=40 6X8=48 7X8=56 8X8=64
1X9=9 2X9=18 3X9=27 4X9=36 5X9=45 6X9=54 7X9=63 8X9=72 9X9=81

package day05;

public class lianxi04 {
	public static void main(String[] args) {
		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();
		}
	}
}

31.输出100 到 1000之间的所有素数

package day05;

/**
 * @author TaoTianye
 *
 *输出100 到 1000之间的所有素数
 *思路:1.找出100~1000的所有数
 *     2.判断这些数是不是素数。
 *
 */
public class lianxi05 {
	public static void main(String[] args) {
	//找出100~1000的所有数
		for(int i=100;i<=1000;i++) {
			//判断素数
			for(int j=2;j<=i;j++) {
				if(i%j==0) {
					if(i==j) {
						System.out.println(i);
					}else {
						break;
					}
				}
			}
		}
	}
}
		

32.输入两个数a,n,求s=a+aa+aaa+aaaa+aa…a的值,共n个数。

例如a=2,n=5,2+22+222+2222+22222(此时共有5个数相加)。

方法一:

package day05;

import java.util.Scanner;

/**
 * @author TaoTianye
 *题目:输入两个数a,n,求s=a+aa+aaa+aaaa+aa...a的值,共n个数。
例如a=2,n=5,2+22+222+2222+22222(此时共有5个数相加)。
            2                    
            22=2*10+2            
            222=22*10+2          
            2222=222*10+2        
 */
public class lianxi06 {

	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		System.out.println("请输入一个数a:");
		int a = s.nextInt();
		System.out.println("请输入个数n:");
		int n = s.nextInt();
		int sum = 0;
		//次数n
		int m=a;
		for (int i = 1; i <= n; i++) {
		sum += m;
			m=m*10+a;
		}
		
		System.out.println("s=a+aa+aaa+aaaa+aa...a的值为:"+sum);
	}

}

方法二:

package day05;
/**
 * @author TaoTianye
 *题目:输入两个数a,n,求s=a+aa+aaa+aaaa+aa...a的值,共n个数。
例如a=2,n=5,2+22+222+2222+22222(此时共有5个数相加)。
 当a=9时           9           99         999        9999       99999     ......
                10^1-1       10^2-1     10^3-1      10^4-1     10^5-1    ......
                   通项公式:f(n) =(10^n-1 )
      
 当a=2时           2                 22               222                2222        ...      
              (2/9)(10^1-1)      (2/9)(10^2-1)     (2/9)(10^3-1)    (2/9)(10^4-1)    ...            
                    通项公式:f(n) =(10^n-1 )*(2/9)                                                                   
 */
import java.util.Scanner;

public class lianxi07 {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		System.out.println("请输入一个数a:");
		int a = s.nextInt();
		System.out.println("请输入个数n:");
		int n = s.nextInt();
		int sum = 0;
		//m表示10的次方幂      cf用于存储10^m的结果  (m=1,2,3,4……n)
		int m = 1;
		int cf = 1;
		//通项公式:f(n) =(10^n-1 )*(a/9) 求出每一个f(1)、f(2)、f(3)、f(4)、f(5)再求和放在sum中
		for (int i = 1; i <= m; i++) {
			cf *= 10;
			m++;
			sum += (a * (cf - 1)) / 9;
			if (m == (n + 1)) {
				break;
			}
		}
		System.out.println(sum);

	}
}

输出:

请输入一个数a:
2
请输入个数n:
5
24690

33.产生一个1-100之间的随机数,请猜出这个数是多少。

 10次机会,输入0提前结束。(数字炸弹游戏)
package day05;

import java.util.Random;
import java.util.Scanner;

/**
 * @author TaoTianye 
        题 目:系统产生一个1-100之间的随机数,请猜出这个数是多少。
     10次机会,输入0提前结束。(数字炸弹游戏)
             思路:
         1.系统生成 2.用户输入 3.比较 4.做其他的额外功能...
 */
public class lianxi08 {

	public static void main(String[] args) {
		Random random = new Random();
		int b = random.nextInt(100) + 1;
		System.out.println("开始游戏,已经准备好了一个1~100之间的数,结束游戏请输入0;现在请猜一个数:");
		Scanner s = new Scanner(System.in);

		int max = 100;
		int min = 1;
		int n = 9;
		while (true) {
			int a = s.nextInt();
			if(a<min || a>max) {
				System.out.println("猜的数字不合理。请猜" + min + "到" + max + "之间的数,还有" + n + "次机会");
				n--;
			}else if (a >= 100) {
				System.out.println("猜的数字不合理。请猜" + min + "到" + max + "之间的数,还有" + n + "次机会");
			} else if (a == 0) {
				System.out.println("游戏结束。");
				break;
			} else {
				if (a == b) {
					System.out.println("恭喜你猜对了,游戏结束。");
					break;
				} else if (a > b) {
					max = a;
					System.out.println("猜大了,请猜" + min + "到" + max + "之间的数,还有" + n + "次机会");
				} else {
					min = a;
					System.out.println("猜小了,请猜" + min + "到" + max + "之间的数,还有" + n + "次机会");
				}
				if (n == 0) {
					System.out.println("次数用完,游戏结束");
					break;
				}
			}
			n--;
		}
	}

}

34. String a = “12 34 56 7”; 去掉字符串中的所有空格,并且倒着输出

package day05;

/**
 * @author TaoTianye
 
String a = "12   34    56       7";  去掉字符串中的所有空格,并且倒着输出

 */
public class lianxi10 {

	public static void main(String[] args) {
		String a = "12   34    56       7";
		int L = a.length();
		for (int i = L-1; i >=0; i--) {
			char b = a.charAt(i);
			if (b == ' ') {
				continue;
			} else {
				System.out.print(b);
			}
		}
	}
}

打印输出:7654321

35.有3个班,每班m个学生的成绩,求每个班的总分和平均分

package day05;

import java.util.Scanner;

/**
 * @author TaoTianye
 *         题目:有3个班,每班m个学生的成绩,求每个班的总分和平均分
 */
public class lianxi11 {

	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		int sum = 0;
		double average = 0;
		int n=3;
		
		// 输入每一个班级的成绩
		for (int i = 1; i <= n; i++) {
			System.out.println("请输入第"+i+"班级人数m=");
			int m = s.nextInt();// m表示班级里的人数
			// 输入每一位学生的成绩
			for (int j = 1; j <= m; j++) {
				System.out.println("请输入该班级的第" + j + "个学生的成绩=");
				int a = s.nextInt();// a表示个人的成绩
				sum += a;
				average = sum / m;	
			}
			System.out.print("第" + n + "个班级       总分为:" + sum+"\t");
			System.out.println("平均分为:" + average);
		}
		System.out.println();
	}
}

输出:

请输入第1班级人数m=
4
请输入该班级的第1个学生的成绩=
2
请输入该班级的第2个学生的成绩=
3
请输入该班级的第3个学生的成绩=
2
请输入该班级的第4个学生的成绩=
3
第3个班级 总分为:10 平均分为:2.0
请输入第2班级人数m=
4
请输入该班级的第1个学生的成绩=
2
请输入该班级的第2个学生的成绩=
4
请输入该班级的第3个学生的成绩=
2
请输入该班级的第4个学生的成绩=
4
第3个班级 总分为:22 平均分为:5.0
请输入第3班级人数m=
5
请输入该班级的第1个学生的成绩=
3
请输入该班级的第2个学生的成绩=
4
请输入该班级的第3个学生的成绩=
2
请输入该班级的第4个学生的成绩=
4
请输入该班级的第5个学生的成绩=
3
第3个班级 总分为:38 平均分为:7.0

36. 题目:输入按照如下案例输入一个数n,并输出三角形。

    输入:5 
    输出:
     1 
     22 
     333 
     4444 
     55555
package day05;

import java.util.Scanner;

/**
 * @author TaoTianye
 * 
       题目:输入按照如下案例输入一个数n,并输出三角形。 
        输入:5 
        输出:
         1 
         22 
         333 
         4444 
         55555
 * 
 */
public class lianxi13 {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		int n = s.nextInt();

		// i表示行数
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= i; j++) {
				System.out.print(i);
			}
			System.out.println();
		}
	}
}

37. 输入按照如下案例输入一个数n,并输出三角形。 输入:5

输出:
54321
5432
543
54
5

package day05;

import java.util.Scanner;

/**
 * @author TaoTianye 
 * 题目:5.输入按照如下案例输入一个数n,并输出三角形。
 *  输入:5 
 *  输出: 
 *  54321 
 *  5432 
 *  543 
 *  54 
 *  5
 * 
 */
public class lianxi14 {

	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		int n = s.nextInt();
		for (int i = 0; i < n; i++) {
			for(int j=n;j>i;j--) {
				System.out.print(j);
			}
			System.out.println();
		}
	}
}

38.输入一批整数,使用循环求出最大值与最小值,输入0时结束。

package day05;

import java.util.Scanner;

/**
 * @author TaoTianye 
 * 6.输入一批整数,使用循环求出最大值与最小值,输入0时结束。
 *  
 */
public class lianxi15 {

	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		int max = 0;//预先定义一个max
		int min = 0;//预先定义一个min
	   boolean flage=true;
	   
		for (;;) {
			int a = s.nextInt();
			if(a==0) {
				break;
			}
			if(flage) {
				max = a;
				min = a;
				flage= false;
			}
			if(a>max) {
				max=a;
			}
			if(a<min) {
				min=a;
			}
		}
		
		System.out.println(max);
		System.out.println(min);
	}
}

打印输出:

2 3 4 12 1 1 3 3 30
0
30
1

39.给20块钱买可乐,每瓶可乐3块钱,喝完之后退瓶子可以换回1块钱,问最多可以喝到多少瓶可乐。

方案一:数学思维

package day05;

/**
 * @author TaoTianye 7.给20块钱买可乐,每瓶可乐3块钱,喝完之后退瓶子可以换回1块钱,问最多可以喝到多少瓶可乐。 
 *  
 *  思路整理:
 *         1、预先定义:max=0 最多喝到max瓶;
 *          2、分析:           瓶数                                  剩余的钱 
 *          第一轮              20/3=6           20%3=2      余 2
 *          第二轮          (6+2)/3=2        (6+2)%3=2   余2 
 *          第三轮             (2+2)/3=1       (2+2)%3=1    余1 
 *           第四轮         (1+1)/3=0       (1+1)%3=2    余2 
 *         规律: (取整之后的数+取余的余数)/3= 此轮的瓶数
 *  
 */
public class lianxi16 {

	public static void main(String[] args) {
		int max = 0;
		int a = 20;
		for (;;) {
			int x = a / 3;
			int y = a % 3;
			a = x + y;
			if (x == 0) {
				break;
			}
			max=max+x;
		}
		System.out.println("最多可以喝到     "+max+"  瓶可乐");
		
	}

}

打印输出:

最多可以喝到 9 瓶可乐

方案二:编程思维

package day05;

/**
 * @author TaoTianye
 	题目:给20块钱买可乐,每瓶可乐3块钱,喝完之后退瓶子可以换回1块钱,
 	问最多可以喝到多少瓶可乐。 
 
 */
public class caogao {

	public static void main(String[] args) {
	
		int money = 20;	//钱数
		int sum = 0;	   //瓶数
		while (money >= 3) {
			sum++;
			money -= 2;
		}
		System.out.println(sum);

	}

}

40. 题目:编写一个程序,将下面的一段文本中的各个单词的字母顺序翻转,

“To be or not to be",将变成"oT eb ro ton ot eb."。
package day05;

/**
 * @author TaoTianye

        题目:编写一个程序,将下面的一段文本中的各个单词的字母顺序翻转,
    “To be or not to be",将变成"oT eb ro ton ot eb."。


 */
public class lianxi17 {

	public static void main(String[] args) {
		String str = "To be or not to be";
		String result = "";		//	最终的结果字符串
		String temp = "";		//	中间临时字符串
		for(int i = 0;i < str.length();i ++) {
			//如果字符不为空格,就加到临时字符串中(往前加)
			if(str.charAt(i) != ' ') {
				temp = str.charAt(i) + temp;
			}else {	
				//如果字符为空格,就把temp临时字符串存入result结果字符串,并加空格
				result += temp + ' ';
				//将temp临时字符串置为空,方便下一次加入新单词
				temp = "";
			}
			//如果是最后一个字符,也需要将它存入result结果字符串
			if(i == str.length() - 1) {
				result = result + temp + ".";
			}
		}
		System.out.println(result);
	}
}

41.翻转一个字符串

package day05;

//题目:翻转一个字符串

public class lianxi18 {
	public static void main(String[] args) {
		String s = "abcdefg";
		int L=s.length();
		for (int j = L - 1; j >= 0; j--) {
			char b = s.charAt(j);
			System.out.print(b);
		}
	}
}

42. 题目:1.输入一个数n,输出三角形。例如:

输入:n=4

1

121
12321
1234321

package week2day01;

import java.util.Scanner;

/**
 * @author TaoTianye
 题目:1.输入一个数n,输出三角形。例如:
输入:n=4
   1
  121
 12321
1234321
 思路:1、先输出                      1       行       k=1   数字:1      空格数:3    
                    12			 k=2	   12           2
                   123           k=3      123           1
                  1234           k=4     1234           0
                                             
      2、在输出
                                        空格                        
                 1   
                 21  
                 321 
      */
public class lianxi01 {

	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		int n = s.nextInt();

		for (int k = 1; k <= n; k++) {
			for (int i = n - k; i > 0; i--) {
				System.out.print(" ");

			}
			for (int j = 1; j <= k; j++) {
				System.out.print(j);
			}

			for (int x = k - 1; x > 0; x--) {
				if (k==1) {
					System.out.print(" ");
				}else {
				System.out.print(x);
				
				}
			}
			System.out.println();
		}
	}

}


43输入一个数n,输出正方形。例如:

输入:n=4
1 2 3 4
8 7 6 5
9 10 11 12
16 15 14 13

package week2day01;

import java.util.Scanner;

/**
 * @author TaoTianye
2.输入一个数n,输出正方形。例如:
输入:n=4
1 2 3 4
8 7 6 5
9 10 11 12
16 15 14 13

 */
public class lianxi02 {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		int n = s.nextInt();
		for (int i = 1; i <= n; i++) {
			if (i % 2 != 0) {
				for (int j = (i - 1) * n+1; j <= i * n; j++) {
					System.out.print(j + " ");
				}
				
			} else {
				for (int j = i * n; j >= (i - 1) * n+1; j--) {
					System.out.print(j + " ");
				}
			}
			System.out.println();
		}
	}
}

44.找出一组数据中的最大值与最小值 (使用数组)

package week2day01;

public class lianxi04 {

	public static void main(String[] args) {
		int[] a= {1,2,4,-1,2,3,56,78,99};
		int max=a[0];
		int min=a[0];
		for(int i=1;i<a.length;i++) {
			if(a[i]>max) {
				max=a[i];
			}
			if (a[i]<min){
				min=a[i];
			}
		}
		System.out.println("最大值="+max);
		System.out.println("最小值="+min);
	}

}

45.去参加青年歌手大奖赛,有10个评委打分,(去掉一个最高一个最低)求平均分? 使用数组

package week2day01;

import java.util.Scanner;

/**
 * @author TaoTianye
题目:去参加青年歌手大奖赛,有10个评委打分,(去掉一个最高一个最低)求平均分?  

运用数组

 */
public class lianxi05 {

	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		//输入数组
		int[] a= new int[10];
		for(int i=0;i<10;i++) {
			int b=s.nextInt();
			a[i]=b;
		}
		//比较出最大值和最小值,并求出总和
		int max=a[0];
		int min=a[0];
		double sum=0.0;
		for(int i=0;i<a.length;i++) {
			if(a[i]>max) {
				max=a[i];
			}
			if (a[i]<min){
				min=a[i];
			}
			sum +=a[i];
		}
		System.out.println("最高分="+max);
		System.out.println("最低分="+min);
		System.out.println("平均分="+(sum+a[0]-max-min)/8);
		}

	}


输入:9 7 8 6 4 5 1 4 5 7 9 0

输出:最高分=9
最低分=1
平均分=6.875

注意:在输入数据时,采用空格来分隔,因为程序里只要求10个数,无论输入多少数据,值识别钱10 个

46.题目:可以定义两个数组,一个数组a存放[A,2,3,4,5,6,7,8,9,10,J,Q,K],另一个数组b存放[♠,♥,♣,♦ ]

输出:
♠A ♠2 ♠3 ♠4 ♠5 ♠6 ♠7 ♠8 ♠9 ♠10 ♠J ♠Q ♠K
♥A ♥2 ♥3 ♥4 ♥5 ♥6 ♥7 ♥8 ♥9 ♥10 ♥J ♥Q ♥K
♣A ♣2 ♣3 ♣4 ♣5 ♣6 ♣7 ♣8 ♣9 ♣10 ♣J ♣Q ♣K
♦A ♦2 ♦3 ♦4 ♦5 ♦6 ♦7 ♦8 ♦9 ♦10 ♦J ♦Q ♦K

package week2day01;

/**
 * @author TaoTianye
题目:可以定义两个数组,一个数组a存放[A,2,3,4,5,6,7,8,9,10,J,Q,K],另一个数组b存放[♠,♥,♣,♦ ]
输出:
♠A ♠2 ♠3 ♠4 ♠5 ♠6 ♠7 ♠8 ♠9 ♠10 ♠J ♠Q ♠K   
♥A ♥2 ♥3 ♥4 ♥5 ♥6 ♥7 ♥8 ♥9 ♥10 ♥J ♥Q ♥K
♣A ♣2 ♣3 ♣4 ♣5 ♣6 ♣7 ♣8 ♣9 ♣10 ♣J ♣Q ♣K
♦A ♦2 ♦3 ♦4 ♦5 ♦6 ♦7 ♦8 ♦9 ♦10 ♦J ♦Q ♦K


 */
public class lianxi06 {

	public static void main(String[] args) {
		String[] a = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
		String[] b = {"♠","♥","♣","♦" };
		for(int i=0;i<b.length;i++) {
			
			for(int j=0;j<a.length;j++) {
				System.out.print(b[i]+a[j]+" ");
			}
			System.out.println();
		}
	}

}

47.键盘录入一个字符串,用数组统计各个字母出现的次数:

例如: str = “helloujiuyehelloworldhellojava”;
结果:字母–个数
a–2 b–0 c–0 d–1
e–4 f–0 g–0 h–3
i–1 j–2 k–0 l–7
m–0 n–0 o–4 p–0
q=0 r–1 s–0 t–0
u–2 v–1 w–1 x–0
y–1 z–0
提示:
① 将字符串转换为char类型的数组char[] ch = str.toCharArray();
② 每个字符对应的ASCII码值可以当作ch数组的下标进行累加。
int[] c=…
c[0] ----’a’的个数
c[1] ----’b’的个数

package week2day01;

import java.util.Scanner;

/**
 * @author TaoTianye
需求实现
键盘录入一个字符串,用数组统计各个字母出现的次数:
例如: str = “helloujiuyehelloworldhellojava”;
结果:字母--个数
a--2	b--0	c--0	d--1
e--4	f--0	g--0	h--3
i--1	j--2	k--0	l--7
m--0	n--0	o--4 	p--0
q=0		r--1	s--0	t--0 
u--2	v--1	w--1 	x--0
y--1 	z--0
提示:
① 将字符串转换为char类型的数组char[] ch = str.toCharArray();
② 每个字符对应的ASCII码值可以当作ch数组的下标进行累加。
int[] c=........
c[0] ----’a’的个数
c[1] ----’b’的个数



 */
public class lianxi07 {

	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		String str = s.nextLine();
		
		char[] ch = str.toCharArray();
	int[] a = new int[26];// a[0]表示字母a出现的个数 a[1]表示字母b出现的个数
		for (int i = 0; i < ch.length; i++) {
			for (int j = 0; j < a.length; j++) {
				if (ch[i] - 97 == j) {
					a[j]++;
				}
			}

		}
		char[] b=new char[26];
		for (int i = 0; i < a.length; i++) {
			b[i]=(char)(i+97);
			System.out.println("字母"+b[i]+"的个数为:"+a[i]);
		}
	}
}

结果:

输入:helloujiuyehelloworldhellojava
输出:
字母a的个数为:2
字母b的个数为:0
字母c的个数为:0
字母d的个数为:1
字母e的个数为:4
字母f的个数为:0
字母g的个数为:0
字母h的个数为:3
字母i的个数为:1
字母j的个数为:2
字母k的个数为:0
字母l的个数为:7
字母m的个数为:0
字母n的个数为:0
字母o的个数为:4
字母p的个数为:0
字母q的个数为:0
字母r的个数为:1
字母s的个数为:0
字母t的个数为:0
字母u的个数为:2
字母v的个数为:1
字母w的个数为:1
字母x的个数为:0
字母y的个数为:1
字母z的个数为:0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值