(头歌)Java程序设计---------循环嵌套

第1关:打印三角形

任务描述

本关任务:掌握循环语句嵌套的基本写法,并编写一个程序,输入一个正整数做为金字塔的层数,然后打印出指定形状的三角形。

相关知识

完成本关任务,你需要掌握以下知识:

  1. 循环嵌套结构;

  2. 循环嵌套中的控制变量。

循环嵌套结构

嵌套循环是由一个外层循环和一个或多个内层循环组成的。每当重复执行一次外层循环时,将再次进入内部循环,然后重新开始。

你可以这样理解,循环语句本身是一条语句,它可以出现在另一条语句的循环体中。

如下示例:

  1. /** 代码清单 1 */
  2. for(int i=1;i<=9;i++){ // 循环语句 A
  3. for(int j=1; j<=9; j++){ // 循环语句 B
  4. System.out.print("*");
  5. }
  6. System.out.println();
  7. }

代码清单 1 的输出效果如下:

  1. *********
  2. *********
  3. *********
  4. *********
  5. *********
  6. *********
  7. *********
  8. *********
  9. *********

代码清单 1中,包含两条循环语句AB,从控制结构中不难看出,AB的循环体都将执行 9 次,其中循环语句B的作用是打印一行********,并且B作为循环语句A的循环体被执行了 9 次。

循环嵌套中的控制变量

代码清单 1中,嵌套的循环语句使用的控制变量均没有出现在循环体中,实际上,外层循环的控制变量可以在内层循环中被访问和赋值。例如:

  1. /** 代码清单 2 */
  2. for(int i=1;i<=5;i=i+2){ // 循环语句 A
  3. for(int j=i; j<=5; j++){ // 循环语句 B
  4. System.out.println(String.format("%d %d",i,j));
  5. }
  6. }

代码清单 2的执行结果如下:

  1. 1 1
  2. 1 2
  3. 1 3
  4. 1 4
  5. 1 5
  6. 3 3
  7. 3 4
  8. 3 5
  9. 5 5

编程要求

根据提示,在右侧编辑器 Begin-End 区域补充代码,实现一个根据输入打印相应尺寸三角形的功能,具体要求如下:

  • 输入一个正整数表示打印等腰直角三角形的高(即行数);

  • 打印的最后一行不换行。具体输出示例见测试说明的输出样例。

测试说明

平台会对你编写的代码进行测试:

测试输入:7; 预期输出:

  1. *
  2. **
  3. ***
  4. ****
  5. *****
  6. ******
  7. *******

代码如下: 

package step1;

import java.util.Scanner;

public class Trangle 
{
    public static void main(String[] args) 
    {
        Scanner input = new Scanner(System.in);
        int line = input.nextInt();
        input.close();

        //请在指定位置填写代码。
        /********* Begin *********/
        for(int i=1;i<=line;++i)
        {
            for(int j=1;j<=i;++j)
            {
                System.out.print("*");
            }
            System.out.println();
        }

        /********* End *********/
    }
}

第2关:判断回文串

任务描述

本关任务:掌握在循环嵌套的过程中使用 break 关键字进行灵活控制的方法,并编写一个程序实现判断回文串的功能。

相关知识

break 关键字

当需要程序在某个时刻立即结束循环时,可以使用 break 语句立即跳出当前循环。

示例如下:

  1. /** 代码清单 1 */
  2. for(int i = 0; i<10; i++){
  3. System.out.print(i); // 打印迭代次数
  4. break; // 跳出当前循环
  5. }

输出:1 在循环体第一次被执行时,即执行到了 break 语句,跳出了循环,故只进行了 1 次迭代。

需要注意的是 break 关键字只会跳出当前循环语句,在有循环语句嵌套的情况下,内层循环中执行到 break 语句时,只会跳出内层循环,而不会跳出外层循环。

例如:

  1. /** 代码清单 2 */
  2. for(int i=0; i<=3; i++){
  3. for(int j=0; j<=9; j++){
  4. System.out.println(i);
  5. break;
  6. }
  7. }

输出:

  1. 0
  2. 1
  3. 2
  4. 3
回文串

回文串即是具有轴对称结构的字符串,即字符串的第 1 个字符与最后 1 个字符相同,第 2 个字符与倒数第 2 个字符相同,第 3 个字符与倒数第 3 个字符相同,以此类推。 例如以下字符串就是回文串:

  1. 123454321
  2. abccba

编程要求

根据提示,在右侧编辑器 Begin-End 区域补充代码,实现判断回文串的功能,具体要求如下:

  • 输入一个字符串,判断是否是回文串,如果是,则输出字符串 yes, 否则输出字符串 no, 空串认为是回文串;

  • 输出字符串末尾不换行。

测试说明

平台会对你编写的代码进行测试:

测试输入:12345654321         预期输出: yes

测试输入:;                         预期输出: yes

测试输入: 123456;             预期输出: no

代码如下: 

package step2;
import java.util.Scanner;

public class Symmetry 
{
    public static void main(String[] args) 
    {
        Scanner input = new Scanner(System.in);
        String str = input.nextLine();
        input.close();

        String result = "";

        //请在指定位置填写代码。
        /********* Begin *********/
        if (str.equals(new StringBuilder(str).reverse().toString())) 
        {
            System.out.print("yes");
        } else 
        {
            System.out.print("no");
        }
        /********* End *********/

        System.out.print(result);
    }
}

第3关:找出素数

任务描述

本关任务:巩固循环嵌套的使用,并编写一个程序,按要求输出指定范围内的的素数。

相关知识

完成本关任务,你需要掌握以下知识点:

  1. 素数;

  2. 判断素数。

素数

大于 1 的整数,如果它只能被 1 和自己本身整除,那么这个数就是素数。例如 10 以内的全部素数:

  1. 2
  2. 3
  3. 5
  4. 7
判断素数

为了测试某个数 number 是否是素数,就要检测它是否能被 2、3、4, 一直到 number/2 的整数整除。如果能被整除,那它就不是素数。

编程要求

根据提示,在右侧编辑器 Begin-End 区域补充代码,实现按指定格式打印出指定范围内的所有素数的功能。具体要求如下:

  • 输入一个正整数n表示打印范围,表示打印1n之间的所有素数;

  • 输出的格式要求为:一行 8 个数,每个数占 4 个字符位置,右对齐。

测试说明

平台会对你编写的代码进行测试:

测试输入: 1000

预期输出:

  1. 2 3 5 7 11 13 17 19
  2. 23 29 31 37 41 43 47 53
  3. 59 61 67 71 73 79 83 89
  4. 97 101 103 107 109 113 127 131
  5. 137 139 149 151 157 163 167 173
  6. 179 181 191 193 197 199 211 223
  7. 227 229 233 239 241 251 257 263
  8. 269 271 277 281 283 293 307 311
  9. 313 317 331 337 347 349 353 359
  10. 367 373 379 383 389 397 401 409
  11. 419 421 431 433 439 443 449 457
  12. 461 463 467 479 487 491 499 503
  13. 509 521 523 541 547 557 563 569
  14. 571 577 587 593 599 601 607 613
  15. 617 619 631 641 643 647 653 659
  16. 661 673 677 683 691 701 709 719
  17. 727 733 739 743 751 757 761 769
  18. 773 787 797 809 811 821 823 827
  19. 829 839 853 857 859 863 877 881
  20. 883 887 907 911 919 929 937 941
  21. 947 953 967 971 977 983 991 997

代码如下:

package step3;

import java.util.Scanner;

public class Prime 
{
    public static void main(String[] args) 
    {
        
        Scanner input = new Scanner(System.in);
        int range = input.nextInt();
        input.close();
        boolean ifPrime = false;
        String template = "%4d";
        int lineCount = 0;

        //请在指定位置填写代码。
        /********* Begin *********/
        for(int i=2;i<=range;i++)
        {
            int flag=0;
            for(int j=2;j<=i/2;j++)
            {
                if(i%j==0)
                {
                    flag=1;
                    break;
                }
            }
            if(flag==0)
            {
                System.out.print(String.format(template,i));
                lineCount++;
                if(lineCount==8)
                {
                    lineCount=0;
                    System.out.println();
                }
            }
        }
        /********* End *********/
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

失棉的羊 .

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值