C语言入门7-程序设计方法基础-循环结构
程序设计方法基础-循环结构
循环三要素: 初值 循环判断条件 步长(循环增量)
循环结构在有些书籍上也称为重复结构, 即反复执行某一部分的操作。
循环三要素: 初值 循环判断条件 步长(循环增量)
如何控制循环的结束呢?
第一种方式就是 条件控制的循环(Condition Controlled Loop),由一个给定的条件来控制,第二种方式就是 计数控制的循环(Counter Controlled Loop),重复处理的次数是已知的,
循环结构的两种实现方法如下图
“当”型循环如上图所示,它是先测试循环条件P,根据测试条件如果为真则执行循环体,否则退出循环,
“直到”型循环如上图所示,它是先执行循环体,然后再测试循环条件P,根据测试条件如果为真则再次执行循环体,否则退出循环,
循环体(Body of Loop):被重复执行的操作A
如果第一次测试循环条件为真的话,”当”型循环与”直到”型循环是一样的,两者没有区别;
当第一次测试循环条件就为假时,我们可以看出”当”型循环一次也不执行,而”直到”型循环执行一次。
(当型循环结构 跟 直到型循环结构 是可以互相转化的。)
选择 循环结构的 一般原则
循环 次数已知 |
计数控制的循环结构 |
循环次数未知,循环的次数由一个给定的条件来控制 |
条件控制的循环结构 |
循环体至少要执行一次 |
“直到”型循环 |
变量名: 内存存储单元的一个符号名。
通过 引用符号名来访问其 所对应的 存储单元,
总结 保证循环可终止的条件是:
1.证 经有限次重复后,循环控制条件i<=5 不再满足
2.执行循环体时,必须改一个或多个变量的值
循环结构正着计数:i = i + 1 i <= 循环的上界
循环结构倒着计数:i = i - 1 i >= 循环的下界
一、 Raptor之循环结构
循环结构(loop) 它的核心有以下三点:
1.重复运算动作(body)
2.重复运算的次数怎么定?(condition)
以 数字 设定执行次数
以某项条件的发生 而 停止重复运算
3.循环内的语句应 能改动 条件变量 以脱离循环
注意:Raptor图的循环分支是条件为 no的分支进行循环,为yes的分支退出循环。
注意:
1:字母是区分大小写的
2:Raptor的循环分支是 no分支
while循环语句
一、 循环结构的思想及意义:
循环结构的思想就是重复要做同样的事, 也就是程序中重复执行的语句,
我们只要控制好循环的 初值 ,条件 和步长 就可以轻松解决问题。
循环三要素: 初值 条件 步长
二、 while的基本格式*******
(1)While它的格式变形如下:(流程图如右图所示: 当型循环结构)
表达式1; //初值
while( 表达式2 ) //条件
{
执行语句;
表达式3; // 步长
}
其中表达式1代表了程序循环前的初始值,
表达式2代表了控制条件,
表达式3代表了增量变化 (步长)
while循环语句中,
while后一对圆括号中 表达式2的值 决定了循环体是否进行,
因此,进入while循环后,一定有能使表达式2的值变为( 0 / 假 ) 的操作,*******
否则,循环将会无限制地进行下去。
(3)其中表达式2代表了循环条件,整个复合语句为循环体。
do---while循环语句
在循环中有当型循环,还有直到型循环。
接下来我们就来学习下 直到型循环。
结合while循环结构, 分析 while do...while 的区别
While它的格式变形如下;
表达式1; //初值
while(表达式2) //条件
{
语句;
表达式3; // 步长
}
一、 do—while语句格式
do—while语句格式
表达式1; // 初始值
do
{
语句;
表达式3; //步长
}
while(表达式2); //判定条件
其中表达式1代表了程序循环前的 初始值,
表达式2代表了 控制条件,
表达式3代表了 增量变化
这种格式在程序中已经很少用了。
主要应用于下种变形格式:
do—while语句格式变形
do
{
语句;
} while (条件表达式);
do-while语句的思想及意义
do英文翻译成中文是 做 的意思,
那么从上面的结构我们也能看出,do语句后 判断条件表达式,
如果条件表达式成立,再次执行语句,直到条件表达式不成立,
往下继续执行。
所以do—while的中心思想是 至少执行一次循环语句。
但是,while循环结构, 至少执行0次循环语句。
do—while的流程图如下:
2 while 与do—while的相同与不同总结?
(1)while 语句是先计算表达式的值,再执行循环体, do…while是执行完一次循环体,再计算表达式的值
(2)当表达式的值第一次为假时,while的循环体一次都不执行,do…while则执行一次循环体;
(3)当表达式的值为真时,两者无区别
(4)在不确定 条件次数 的情况下, 程序一般用while比较多
for循环语句
一、 for 循环的思想及意义
for 循环为 当型循环。
for循环最容易实现计数控制循环方法。
for循环的使用最为灵活,且适合应用在循环次数确定的情况下。
for循环的思想是,
先分析清楚循环的初始值,
循环的控制条件,
循环变量的步长变化,
然后直接把语句再写到for的循环体里即可,
这样可以让问题想的很清楚,流程也很清楚。
二、 for循环语句的应用
for语句是c语言所提供的功能更强,使用更广泛的一种循环语句。
- 1. for语句的一般格式
第1种情况
for(表达式1;表达式2;表达式3)
初值 ; 条件 ; 步长
语句;
第2种情况
for(表达式1;表达式2;表达式3)
初值 ; 条件 ; 步长
{
语句块;
}
for语句的注意事项
(1)各表达式 之间分号 不能省略
(2)表达式1与表达式2与表达式3均可省略, 一般是不省略的。
当表达式1省略时,相当于省去了为循环变量赋初值,此时应在for语句之前给循环变量赋初值
当表达式2省略时,表示不判断循环条件,也就是认为表达式2始终为真, 这时应在循环体内设法结束循环,否则将成为死循环
当表达式3省略时,即省去 修改循环变量的值, 但此时应在循环体内设法结束循环
虽然说表达式可以省略,但是在使用for时,还是要正常使用的,也就是该有的都有。
循环中的跳转语句 以及 循环嵌套
一、 跳转的思想及意义:
break和continue都是循环 中途 退出语句,
其中break语句用来跳出 一层 循环结构;
continue语句用来结束 一次 循环。
跳转的思想就是在 循环过程中出现了特殊情况,
一是终止循环; break
二是跳过去了某次,还继续下次。 continue
二、 什么是循环跳转
循环跳转指的是在循环结构当中, 出现的 强制终止循环 或 跳过某些次的循环的 一种操作。
三、 循环中的特殊情况应用
for循环语句是循环结构中使用最多最灵活的语句。循环结构中用for语句也可以更好的体现出跳转及嵌套的思想的过程。
- 1. break语句
break语句可用于选择结构中的switch语句,也可能用于循环结构中
break可以用于switch中的case搭挡,跳出switch语句。 (请参考第六单元)
break可以用于循环结构中,中止循环
break在循环语句中的基本格式如下:
① do
{
break;
}while(条件);
② while(条件)
{
break;
}
③ for(初值;条件;增量)
{
break;
}
break可以用于任意循环结构语句中,使用最多的是for循环里
注意:break可以用于switch与循环语句中,不能单独用于if语句中.
Break直接与if运用是不可以的,但是可以嵌套在循环语句中,和If一起使用!!!,
- 2. continue
(1)continue语句是继续的意思 , 跳过本次循环,还继续下一个循环.只能用于循环结构中
(1) continue的基本格式
① do
{
continue;
}while(条件);
② while(条件)
{
continue;
}
③ for(初值;条件;增量)
{
continue;
}
大
注意:continue 只可以用于循环结构语句中.
一、 什么是嵌套循环
嵌套循环的 就是一个循环结构体内 还有另一个循环结构,也称为 多重循环。
嵌套循环中任何一种循环结构语句都可以嵌套三种循环结构语句中的任意一种或多种;常见for语句嵌套for语句
电影院观影代码
/* Note:Your choice is C IDE */
#include "stdio.h"
#include "string.h"
int i;
char arr[][]={"何以为家","圣杯骑士","小黄人","星球大战","金牌特工"};
char a1[]="何以为家",a2[]="圣杯骑士",a3[]="小黄人",a4[]="星球大战",a5[]="金牌特工";
void show_menu(){
printf("\n\t\t\t2019最美精彩预告片\n");
printf("\t\t\t1.查看预告简介\n");
printf("\t\t\t2.调查吸引度\n");
printf("\t\t\t3.购票观影\n");
printf("\t\t\t4.刷新\n");
printf("\t\t\t5.查看所有\n");
printf("\t\t\t0.退出\n");
}
/*查预告功能*/
void intro(){
char brr[];
printf("please input movie name\n");
scanf("%s",&brr);
if(strcmp(brr,a1)==){
printf("法庭上,十二岁的男孩赞恩向法官状告他的亲生父母,原因是,他们给了他生命。\n");
}else if(strcmp(brr,a2)==){
printf("马利克的哲学美学,广角的绝美影像.\n");
}else if(strcmp(brr,a3)==){
printf("超人气配角无理头登场.\n");
}else if(strcmp(brr,a4)==){
printf("全新特务间谍电影,独特的幽默将是亮点.\n");
}else{
printf("我们将尽快整合您需要的电影.\n");}
}
/*调查吸引度*/
void survey(){
int n[];//n为对象
float p;//吸引度
for(i=;i<;i++){
printf("请输入对第%d部电影感兴趣的人数:",i+);
scanf("%d",&n[i]);
}
for(i=;i<;i++){
p=(float)(n[i]*/);
printf("第%d部电影的吸引度是%.2f%%\n",i+,p);}
}
/*购票功能*/
void ticket(){
char m[];
int x,y,zong,a=;
printf("请输入购票名称:");
scanf("%s",&m);
for(i=;i<;i++)
{
if(strcmp(m,arr[i])>)
{
a=;
}
}
if(a==)
{
printf("请输入购票张数:");
scanf("%d",&x);//x为购票张数
printf("确认结算0/1:");
scanf("%d",&y);
zong=x*;
if (y==){
printf("本次影片%s需支付金额%d元",m,zong);
}else if(y==){
printf("欢迎选购其他影片,继续观影\n");
}else{
printf("error number!!!");
}
}else{
printf("今日暂无该影片上映!");
} }
void showt()
{
for(i=;i<;i++)
{
printf("\t\t\t\t%s\n",arr[i]);
} }
void main()
{
int q;//q代表功能编号
for (i=;i>;i++){
show_menu();
printf("请输入功能编号:");
scanf("%d",&q);
switch (q){
case :intro();break;
case :survey();break;
case :ticket();break;
case :system("cls");break;
case :showt();break;
case :exit();break;
default :printf("您输入的功能编号有误,请重新输入\n");
}
}
}
C语言入门7-程序设计方法基础-循环结构的更多相关文章
- Go 语言入门(一)基础语法
写在前面 在学习 Go 语言之前,我自己是有一定的 Java 和 C++ 基础的,这篇文章主要是基于A tour of Go编写的,主要是希望记录一下自己的学习历程,加深自己的理解 Go 语言入门(一 ...
- 使用Code First建模自引用关系笔记 asp.net core上使用redis探索(1) asp.net mvc控制器激活全分析 语言入门必学的基础知识你还记得么? 反射
使用Code First建模自引用关系笔记 原文链接 一.Has方法: A.HasRequired(a => a.B); HasOptional:前者包含后者一个实例或者为null HasR ...
- Go语言入门系列(五)之指针和结构体的使用
Go语言入门系列前面的文章: Go语言入门系列(二)之基础语法总结 Go语言入门系列(三)之数组和切片 Go语言入门系列(四)之map的使用 1. 指针 如果你使用过C或C++,那你肯定对指针这个概念 ...
- [Java基础]循环结构3
[Java基础]循环结构3 break 与 continue 中断循环... /** 文件路径:G:\JavaByHands\循环语句\ 文件名称:BreakTest.java 编写时间:2016/6 ...
- [java基础]循环结构2
[java基础]循环结构2 写了几个循环结构练习~记录一下~~ 1:99乘法表 /** 文件路径:G:\JavaByHands\循环语句\ 文件名称:GameForFor.java 编写时间:2016 ...
- [java基础]循环结构1
[java基础]循环结构1 循环结构:for循环,while循环,do_while循环在,增强型for循环 /** 文件路径:G:\JavaByHands\循环语句\ 文件名称:WhileTest.j ...
- 160809209_李梦鑫_C语言程序设计实验3 循环结构程序设计
<C语言程序设计>实验报告 学 号 160809209 姓 名 李梦鑫 专业.班 计科16-2班 学 期 2016-2017 第1学期 指导教师 黄俊莲 吉吉老师 实验地点 C05 ...
- 【C语言入门教程】3.4 循环控制语句
循环结构又称重复结构,是程序的 种基本结构之一.它反复执行循环体内的代码,解决需要大量重复处理的问题.循环结构由循环控制语句实现,其中内建有条件控制语句,用来判读是否继续执行循环操作.C 语言提供了 ...
- Java基础语法Day_02-03(数据类型、运算符、方法、循环结构)
第5节 数据类型转换 day02_01_数据类型转换_自动转换 day02_02_数据类型转换_强制转换 day02_03_数据类型转换_注意事项 day02_04_ASCII编码表 第6节 运算符 ...
随机推荐
- FireUI live Preview使用方法-Berlin
这是可以让开发者事先预览 mobile 画面的作法 1.先确定 Berlin IDE Tools\Option\Form Designer 中 FireUI live Preview broad ...
- Windows 上静态编译 Libevent 2.0.10 并实现一个简单 HTTP 服务器(图文并茂,还有实例下载)
[文章作者:张宴 本文版本:v1.0 最后修改:2011.03.30 转载请注明原文链接:http://blog.s135.com/libevent_windows/] 本文介绍了如何在 Window ...
- QML动画概述(几十篇相关博客)
QML提供了丰富的动画元素,说起动画,无非是给UI增光添彩罢了.在QML中,动画常常与State和Transition联系在一起,这几个概念(下面的例子中都用到了)都比较简单,相关介绍可查看Qt官方文 ...
- python中的基本数据类型之 int bool str
一.基本数据类型 1. int ==> 整数.主要用来进行数学运算. 2.str ==> 字符串.可以保存少量的数据,并进行相应的操作. 3.bool => 布尔值.判断 ...
- ajax,文件上传,分页器
一.Ajax简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用Javascript语言与服务器进行异步交互,传输 ...
- Spring的Bean的生命周期
一:生命周期执行的过程如下:1) spring对bean进行实例化,默认bean是单例.2) spring对bean进行依赖注入.3) 如果bean实现了BeanNameAware接口,spring将 ...
- 626. Exchange Seats-(LeetCode之Database篇)
问题表述 数据库表如下: id student 1 Abbot 2 Doris 3 Emerson 4 Green 5 Jeames 现在要通过SQL语句将表变换成如下: id student 1 D ...
- 《Effective Java》-——用私有构造器或者枚举类型强化Singleton属性
Singleton指仅仅被实例化一次的类.Singleton通常被用来代表那些本质上唯一的系统组件,比如窗口管理器或者文件系统.使类成为Singleton会使它的客户端测试变得十分困难,因为无法给Si ...
- 深入V8引擎-AST(2)
先声明一下,这种长系列的大块头博客只能保证尽可能的深入到每一行源码,有些代码我不乐意深究就写个注释说明一下作用.另外,由于本地整理的比较好,博客就随心写了. 整个Compile过程目前只看到asmjs ...
- spark 源码分析之二 -- SparkContext 的初始化过程
创建或使用现有Session 从Spark 2.0 开始,引入了 SparkSession的概念,创建或使用已有的session 代码如下: val spark = SparkSession .bui ...