首页 > 编程语言 >P3-4.【结构化程序设计】第四节——知识要点:break、continue和goto辅助循环设计语句

P3-4.【结构化程序设计】第四节——知识要点:break、continue和goto辅助循环设计语句

时间:2024-11-15 20:50:20浏览次数:3  
标签:语句 P3 goto 结构化程序 循环 orange 100 apple

知识要点:break、continue和goto辅助循环设计语句

视频:

<iframe allowfullscreen="true" data-mediaembed="bilibili" frameborder="0" id="FQFumpmp-1731675478834" src="https://player.bilibili.com/player.html?aid=113487028294734"></iframe>

P3-4.1.【结构化程序设计】第四节——知识要点:break、continue和goto辅助循环设计语句

<iframe allowfullscreen="true" data-mediaembed="bilibili" frameborder="0" id="kzwKUnXI-1731675501421" src="https://player.bilibili.com/player.html?aid=113487028229249"></iframe>

P3-4.2.【结构化程序设计】第四节——知识要点:break、continue和goto辅助循环设计语句

 

目录

一、任务分析

二、必备知识与理论

三、任务实施


一、任务分析

苹果2.5元1个,橘子0.6元1个,香蕉0.8元1个, 100元买苹果、橘子和香蕉共100个,每种水果各买多少?

基本思路为:假设apple、orange和banana分别代表苹果、橘子和香蕉的数量,则有:

       apple+orange+banana=100

       2.5*apple+0.6*orange+banana*0.8=100

有3个未知数,只有两个方程,要解决此类问题,可用穷举的方法。

二、必备知识与理论

1. 循环的嵌套

一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环。

【例3.8】打印九九乘法表。程序代码如下:

#include <stdio.h>

   main( )

   {  int  i,j;

      for(i=1;i<=9;i++)

      { for(j=1;j<=i;j++)

          printf("%d×%d=%-3d",i,j,i*j);

        printf("\n");}

   }

运行结果:

1×1=1  

2×1=2  2×2=4

3×1=3  3×2=6   3×3=9    

4×1=4  4×2=8   4×3=12  4×4=16

5×1=5  5×2=10  5×3=15  5×4=20  5×5=25

6×1=6  6×2=12  6×3=18  6×4=24  6×5=30 6×6=36

7×1=7  7×2=14  7×3=21  7×4=28  7×5=35 7×6=42 7×7=49

8×1=8  8×2=16  8×3=24  8×4=32  8×5=40 8×6=48 8×7=56 8×8=64

9×1=9  9×2=18  9×3=27  9×4=36  9×5=45 9×6=54 9×7=63 9×8=72 9×9=81

【例3.9】输出下边的图形。

分析:

(1)确定输出行数。

(2)确定每行输出的字符个数。

(3)确定图形每行第一个字符输出的位置,即输出多少个空格。

(4)此图形可看作两个三角形的合成,也可看作一个菱形。下面的程序按一个菱形输出。

程序代码如下:

#include <stdio.h>

#include <math.h>

main()

{ int i,j;

  for(i=-3;i<=3;i++)         /* 图形由7行组成 */

  { for(j=1;j<=abs(i)+1;j++) /* 每行前面输出的空格数 */

    printf(" ");    

    for(j=1;j<=7-2*abs(i);j++)/*图形中每行的字符个数与行号i有关*/

    printf("*");

    printf("\n");   }         /* 每行后换行 */

 }

2.break语句

在前面介绍switch结构中已经使用过break语句,实际上,break语句还可以用来从循环体内跳出循环体,即提前结束循环。

break语句的一般形式为:break;

功能:当break用于switch语句中时,可使程序跳出switch而执行switch以后的语句;当break语句用于while、do…while和for循环语句中时,可使程序终止本层循环而执行循环后面的语句。

3.continue语句

continue语句的作用是结束本次循环,即跳过循环体中下面尚未执行的语句,直接进行下一次是否执行循环的判断。

continue语句的一般形式为:

continue;

4. goto语句

goto语句是一种无条件转移语句,它与if语句配合使用可以构成循环结构。一般形式为:

goto 语句标号;

其中“语句标号”是一个有效的标识符(这个标识符加上冒号“:”出现在某条语句前,用于标识程序中某个语句的位置)。

使用goto语句时应注意以下两个问题:

(1)goto语句虽然也可以构成循环结构,但在结构化程序设计中,不提倡使用goto语句,因为滥用goto语句将使程序流程无规律,可读性差。因此在编写程序时应尽量避免使用goto语句。

(2)goto语句主要有两个用途:一是与if语句一起构成循环结构,二是从循环体内跳到循环体外,一般不宜采用,只有在不得已时才使用。

三、任务实施

现在来完成本节任务。假设apple、orange和banana分别代表苹果、橘子和香蕉的数量,则有:       apple+orange+banana=100

       2.5*apple+0.6*orange+banana*0.8=100

分析:(1)每种水果的数量在1到100之间,苹果2.5元一个,100元最多买40个。

(2)若apple和orange各取一个值,则:banana=100-apple-orange。

程序代码如下:

#include <stdio.h>

main()

{ int apple,orange,banana,m,n;

printf("请输入购买数量,钱数:");

scanf("%d,%d",&n,&m);

  printf("%s\t%s\t%s\n","apple","orange","banana");

  apple=1;

  while(apple<40)

    { orange=1;

       while(orange<100)

         { banana=n-apple-orange;

           if(2.5*apple+0.6*orange+banana*0.8==m)

                printf("%d\t%d\t%d\n",apple,orange,banana);

            orange=orange+1; }

       apple=apple+1; }

 }

外循环变量apple每取一个值,内循环变量orange都要从1取到100,内循环体中的语句if(2.5*apple+0.6*orange+banana*0.8==100)共执行40*100次。

标签:语句,P3,goto,结构化程序,循环,orange,100,apple
From: https://blog.csdn.net/m0_61712829/article/details/143807313

相关文章

  • 玩转Mixly之ESP32的舵机
    SG90舵机舵机参数产品类型:SG90舵机产品扭矩:2.0kg/cm(4.8V),2.2kg/cm(6V)产品速度:0.09秒/60°(4.8V),0.08秒/60°(6V)转动角度:180°工作电压:4.8~6V齿轮形式:塑料齿轮死区设定:7us(微秒)产品重量:10.5g产品尺寸:22.8mm×12.2mm×28.5mm舵机实物图线序图始终记住......
  • luogu P3853 路标设置
    [TJOI2007]路标设置题目背景B市和T市之间有一条长长的高速公路,这条公路的某些地方设有路标,但是大家都感觉路标设得太少了,相邻两个路标之间往往隔着相当长的一段距离。为了便于研究这个问题,我们把公路上相邻路标的最大距离定义为该公路的“空旷指数”。题目描述现在政府决......
  • ESP32-S3模组上跑通esp32-camera(15)
    接前一篇文章:ESP32-S3模组上跑通esp32-camera(14) 本文内容参考:esp32-camera入门(基于ESP-IDF)_esp32camera-CSDN博客OV5640手册解读-CSDN博客ESP32_CAMCameraWebServer例程源码解析笔记(一)_voidstartcameraserver();-CSDN博客esp32-cam驱动程序阅读-哔哩哔哩特此致谢!......
  • 【嵌入式】ESP32开发(一)ESP-IDF概述
    文章目录1前言2IDF环境配置3在VSCode中使用IDF3.1使用ESP-IDF例程3.2底部按钮的作用【重要!】3.3高级用法4ESP-IDF框架分析5从零开始创建一个项目5.1组件(component)6主要参考资料7遇到的一些问题与解决办法8对于ESP-IDF开发的一些感受......
  • 【ESP32】DIY一个电子测光仪
    这里写目录标题0前言1开箱2过程2.1下载固件2.2烧录固件2.3编程环境Thonny2.4点灯大师2.5TFT屏幕2.6BH1750传感器成果展示0前言开发板:ESP32-S3-5691开发环境:circuitpython+thony1开箱2过程2.1下载固件使用circuitpython的方式开发,需要先安装......
  • [题解]P3119 [USACO15JAN] Grass Cownoisseur G
    P3119[USACO15JAN]GrassCownoisseurG显然我们可以先跑强连通分量,由\(x\)个点缩成的新点\(u\)权值为\(v[u]=x\)。下文中的节点\(1\)均表示缩点后节点\(1\)所在的节点。我们在缩点后的DAG上跑拓扑排序,预处理出\(fa[i]\)和\(fb[i]\),分别表示“\(1\)到\(i\)路径的点权和”,“\(i......
  • POP3、SMTP、FTP、HTTP、BGP、DNS、DHCP、RIP、Ping、Traceroute
    POP3全称:PostOfficeProtocol3,即邮局协议第3版。作用:主要用于电子邮件系统中从邮件服务器检索电子邮件至本地客户端应用程序。它是互联网中最传统的邮件接收协议之一。工作方式:允许用户通过客户端软件(如Outlook、Thunderbird等)连接到邮件服务器并下载其邮箱中的新邮件......
  • ESP32串口通信
    基于ArduinoIDE开发环境编写的ESP32程序示例:通过串口与电脑通信,按下boot按键开始以1Hz的频率发送学号,再次按下则停止发送//引入ESP32的相关库#include<Arduino.h>//定义学号,这里假设学号是123456,你需要替换成你自己的真实学号constchar*studentID="123456";......
  • [题解]P3225 [HNOI2012] 矿场搭建
    P3225[HNOI2012]矿场搭建挖煤点坍塌相当于把该点和与其相连的边在图上删掉。借用wjyyy的题解,我们定义“叶子连通块”为“只包含\(1\)个割点的点双连通分量”,“非叶子连通块”为“包含\(\ge2\)个割点的点双连通分量”。如下图,橙色点是割点,红色框圈出的是点双,加粗的是叶子连通......
  • 洛谷P3654
    P3654FirstStep(ファーストステップ)-洛谷|计算机科学教育新生态FirstStep(ファーストステップ)题目背景我们Aqours,要第一次举办演唱会啦!虽然学生会长看上去不怎么支持我们的样子,可是有了理事长的支持,我们还是被允许在校内的篮球场里歌唱!歌曲也好好地准备过了,名......