P3-4.【结构化程序设计】第四节——知识要点:break、continue和goto辅助循环设计语句
知识要点:break、continue和goto辅助循环设计语句
视频:
P3-4.1.【结构化程序设计】第四节——知识要点:break、continue和goto辅助循环设计语句
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次。
原文地址:https://blog.csdn.net/m0_61712829/article/details/143807313
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!