- 1.分析以下需求,并用代码实现:
- (1)打印1到100之内的整数,但数字中包含9的要跳过
- (2)每行输出5个满足条件的数,之间用空格分隔
- (3)如:1 2 3 4 5
- /*
- 思路:
- 1.因为是打印1~100之间的整数,所以要用一个for循环将1~100全部遍历一遍。
- 2.因为要将包含9的数给跳过,所以要对当前被遍历的数进行判断。判断是否包含9。这里我用%10 和 /10 分别判断个位和10位是否为9。
- 3.因为每行要只能输出5个数据,所以我用一个count变量来记录已经打印了多少次,如果count的值%5为0就打印一个换行符。
- */
- class Task1 {
- public static void main(String[] args) {
- for (int x = 1, count = 0; x <= 100; x++) {
- if (x % 10 != 9 && x / 10 != 9) {
- count++;
- System.out.print(x + "\t");
- if (count % 5 == 0) {
- System.out.println();
- }
- }
- }
- }
- }
- 2.分析以下需求,并用代码实现:
- (1)打印1-100之间的所有素数及个数
- (2)每行输出5个满足条件的数,之间用空格分隔
- (3)如果一个大于1的自然数,这个数只能被1和其本身整除,这个数就叫素数。
- (4)如:2 3 5 7 11
- /*
- 思路:
- 1.因为是1~100之间的数,所以要用for循环遍历1~100的数。
- 2.又因为是求素数,所以1直接排除在外。只需要遍历2~100即可。
- 3.判断是否为素数的办法就是将这个数除以2~自身减1的所有数。
- 一旦这个数能被整除,那么这个数就不是素数,就继续遍历下一个数,否则就将这个数打印出来。我这里用for循环 2~自身减1。
- 4.要统计个数就要用计数器思想。定义一个变量count在for循环外。没判断出一个素数count自身就加1。
- 5.因为每行只能输出5个数字,所以我用count变量%5来判断是否已经成功打印出5个素数。如果是就插入一个换行符。
- 6.外循环执行完以后将count也打印出来。
- */
- class Task2 {
- public static void main(String[] args) {
- int count = 0;
- w:for (int x = 2; x <= 100; x++) {
- for (int y = 2; y < x; y++) {
- if (x % y == 0) {
- continue w;
- }
- }
- System.out.print(x+"\t");
- if (++count % 5 == 0) {
- System.out.println();
- }
- }
- System.out.println("素数的个数为:"+count);
- }
- }
- 3.分析以下需求,并用代码实现:
- (1)按照从大到小的顺序输出四位数中的个位+百位=十位+千位(3553,2332,1166,8228,3773)的数字及个数
- (2)每行输出5个满足条件的数,之间用空格分隔
- (3)如:9999 9988 9977 9966 9955
- /*
- 思路:
- 1.因为是计算4位数,所以值的范围是在1000~9999之间,这里我用for语句进行遍历。
- 2.对遍历出来的数字进行拆位,例如:4352拆位后得出:4 3 5 2,拆位后分别存入ge,shi,bai,qian 四个变量。这里用/ 和 % 运算符。
- 3.判断ge+bai是否等于shi+qian。如果相等就输出这个数。并在for语句外定义一个count变量用来存放已经找出了多少个。
- 4.因为每行只能输出5个,所以在输出完以后对count变量进行判断,如果%5=0就插入一个换行符。
- 5.最后在循环外将count变量打印输出。
- */
- class Task3 {
- public static void main(String[] args) {
- int count = 0;
- for (int x = 1000; x <= 9999; x++) {
- int ge, shi, bai, qian; //定义四个变量用来存放个位,十位,百位和千位的数。
- ge = x % 10;
- shi = x / 10 % 10;
- bai = x / 100 % 10;
- qian = x / 1000;
- if (ge + bai == shi + qian) {
- System.out.print(x + "\t");
- if (++count % 5 == 0) {
- System.out.println();
- }
- }
- }
- }
- }
- 4.分析以下需求,并用代码实现:
- (1)珠穆朗玛峰高度为8848米,有一张足够大的纸,厚度为0.001米。
- (2)请问,我折叠多少次,可以折成珠穆朗玛峰的高度。
- /*
- 思路:
- 1.一张纸折叠一次厚度增加一倍,折叠第二次,厚度有增加一倍,他的规律是 1 变 2, 2 变 4, 4 变 8 。
- 2.从分析可以看出,每次的厚度都增加了一倍;这个要用循环来实现。在循环内用thickness=thickness*2,记录当前的厚度。
- 但是循环多少次不知道。因为n是未知的。所以这里我用死循环来做。在循环外定义一个count来记录折叠的次数。
- 3.在循环内每次算出thickness的值后判断是否等于8848,如果相等跳出循环。
- 4.最后输出count的值。
- */
- class Task4 {
- public static void main(String[] args) {
- double altitude = 8848;
- double thickness = 0.001;
- int count = 0;
- while (true) {
- count++;
- thickness = thickness * 2;
-
- if (thickness >= altitude) {
- break;
- }
- }
- System.out.println(count);
- }
- }
- 5.分析以下需求,并用代码实现:
- (1)倒着打印九九乘法表
- class Task5 {
- public static void main(String[] args) {
- for (int x = 9; x >= 1; x--) {
- for (int y = 1; y <= x; y++) {
- System.out.print(y + "*" + x + "=" + x * y + "\t");
- }
- System.out.println();
- }
- }
- }
- 6.分析以下需求,并用代码实现:
- (1) 计算15+25+35+....+1005的和
- /*
- 思路:
- 1.从上面的要求中可以看出要将15~1005遍历一遍,而每个数都比上个数多10。所以循环的跳距是10。
- 2.对每个遍历的数据累加求和。
- */
- class Task6 {
- public static void main(String[] args) {
- int sum = 0;
- for (int x = 15; x <= 1005; x += 10) {
- sum += x;
- }
- System.out.println("15+25+35+....+1005的和为:"+sum);
- }
- }
-
- 7.分析以下需求,并用代码实现:
- (1)打印倒直角三角形
- *****
- ****
- ***
- **
- *
- (2)打印等边三角形(题目较难,可作为扩展)
- *
- * *
- * * *
- * * * *
- class Task7 {
- public static void main(String[] args) {
- //打印第一个三角形。
- for (int x = 1; x <= 5; x++) {
- for (int y = x; y <= 5; y++) {
- System.out.print("*");
- }
- System.out.println();
- }
- System.out.println("----------------");
-
- //打印第二个三角形。
- for (int x = 1; x <= 4; x++) {
- for (int y = x; y <= 3; y++) {
- System.out.print(" ");
- }
- for (int z = 1; z <= x; z++) {
- System.out.print("* ");
- }
- System.out.println();
- }
- }
- }
复制代码
|
|