一、while 语句二、do-while 语句三、for 语句四、goto和if语句.
第四章。循环结构(while、do-while、for)

第四章。
循环结构(while、do-while、for)Top1.循环结构(while、do…while、for)1. 循环结构(while、do…while、for)1.1. 什么是循环结构在日常生活中,会有很多需要反复执行的事情,比如:每一年的4个季节,每一周的7天,每日的3餐,打印机每份文档打印50份,一圈跑道400米跑3圈,都是在反复执行的。
再看软件系统中的需求:问题1:输出100行语句,每行语句都一样,即:行动是成功的阶梯,行动越多,登得越高!行动是成功的阶梯,行动越多,登得越高!行动是成功的阶梯,行动越多,登得越高!…问题2:输出100行语句,每行语句都类似,即:第1,行动是成功的阶梯,行动越多,登得越高!第2,行动是成功的阶梯,行动越多,登得越高!第3,行动是成功的阶梯,行动越多,登得越高!…第100,行动是成功的阶梯,行动越多,登得越高!问题3:计算1到50乘以8.88的结果1×8.88 =8.882 ×8.88 =17.763 ×8.88 =26.644 ×8.88 =35.52…50 ×8.88 =444诸如此类问题都是在反复执行的,在软件系统中可以通过循环这种语法结构来解决。
循环是程序设计语言中反复执行某些代码的一种计算机处理过程,是一组相同或相似语句被有规律的重复性执行。
对于循环来说,需要考虑两个要素,其一要素为循环体,也就是被反复执行的相同或相似的语句,其二要素为循环的条件,也就是循环得以继续执行下去的条件,常常以循环次数的方式体现。
常用的循环结构有:while、do-while、for。
1.2. while语句1.2.1. while语句的执行逻辑while语句是循环的一种常见语法结构,语法如下:1.while(boolean表达式){语句块;2.}while语句的执行过程为,首先计算boolean表达式的值,而后进行判断,若值为true则执行语句块,语句块执行完后再次判断boolean表达式的值,如果为true则继续执行语句块,如此循环往复,直到boolean表达式的值为false时退出while循环而执行while之后的语句。
循环语句的三种语句体

循环语句的三种语句体
循环语句是计算机编程中常用的语句体之一。
它能够重复执行某段代码,直到满足停止条件为止。
循环语句包括三种语句体:for、while和do-while。
1. for语句体
for语句体是最常用的循环语句体之一。
它的语法形式如下:
for (初始化表达式; 循环条件; 循环后操作) {
// 循环体代码
}
初始化表达式在循环开始前执行一次,用于初始化循环变量。
循环条件判断每次循环是否继续执行。
循环后操作在每次循环结束后执行,用于更新循环变量。
2. while语句体
while语句体是另一个常用的循环语句体。
它的语法形式如下: while (循环条件) {
// 循环体代码
}
while语句体的循环条件只有一个,它会在每次循环开始前进行判断。
只有循环条件满足才能进入循环体,否则直接跳出循环。
3. do-while语句体
do-while语句体与while语句体有点类似,但是它的循环条件是在循环体执行之后判断的。
它的语法形式如下:
do {
// 循环体代码
} while (循环条件);
do-while语句体会先执行一次循环体,然后再判断是否继续循环。
即使循环条件一开始就不满足,do-while语句体也会执行一次循环体。
以上就是循环语句的三种语句体的介绍。
在实际编程中,我们可以根据具体场景选择不同的循环语句体,以达到最优的效果。
循环结构

printf("%d ",n);
}
}
编程小结
如何按要求输出几项后换行; 在程序设计中,常引入标志变量(或称开 关变量)来表征某个量“是”或“不是”; 课后习题6.1如何求最大公约数和最小公 倍数的算法:辗转相除法; 课后习题6.2,针对“输入一行字 符,……”的题目处理判断条件 while((c=getchar())!=„\n‟)
重要注意:
请认真阅读课本
P359—P363 P371—373
附录中关于上机事项的介绍;
作业
NO1: 编写程序,求1-3+5-7+…-99+101的值; 按正序和反序输出字母表;(只是一道题) 1 1 1 1 1 编写程序,求e≈ 1 ! 2 ! 3 ! n! ①用while循环,要求直到最后一项的值小 于10-4。 ②用for循环,计算前50项; ——此题目的:看哪种方法精度高。
(注意:赋初值时刻及{}包括的范围) 另:为考虑阅读的方便,请务必 注意书写时的缩进及层次
例:打印各种形状图形
***** ***** ***** * ***** *** *** ***** * 考虑:采用双重循环,一行一行输出。 每一行输出步骤:一般3步。 1)光标定位 2)输出图形 3)每输完一行光标换行(\n)
说明(此部分可自学,P111)
for语句使用非常灵活,可以省略“表达 式1”、“表达式2”、“表达式3”中的 几个或全部表达式,但2个“;”不
可省;
①省略“表达式1”:表达式1”的作用 是设定循环初始条件,“表达式1”省略 后,应在for语句前面设置循环初始条件; ②省略“表达式2” (即循环条件), 不判别循环条件,认为循环循环条件始
C++9种控制语句

9种控制语句:goto语句:无条件转向;if语句:判断语句;while循环语句;do-while语句:先执行循环体,然后判断循环条件是否成立. 之后继续循环;for语句:循环,可替代while语句; 只是用法不同;break语句跳出本层的循环;(只调处包含此语句的循环)continue语句:继续(一般放到循环语句里,不在执行它下面的语句,直接跳到判断语句例:for语句,就直接跳到第二个分号处,while语句,就直接跳到while()的括号里;switch语句:多相选择;return语句:返回;32个关键字:auto :声明自动变量一般不使用double :声明双精度变量或函数int: 声明整型变量或函数struct:声明结构体变量或函数break:跳出当前循环else :条件语句否定分支(与if 连用)long :声明长整型变量或函数switch :用于开关语句case:开关语句分支enum :声明枚举类型register:声明积存器变量typedef:用以给数据类型取别名(当然还有其他作用)char :声明字符型变量或函数extern:声明变量是在其他文件正声明(也可以看做是引用变量)return :子程序返回语句(可以带参数,也看不带参数)union:声明联合数据类型const :声明只读变量float:声明浮点型变量或函数short :声明短整型变量或函数unsigned:声明无符号类型变量或函数continue:结束当前循环,开始下一轮循环for:一种循环语句(可意会不可言传)signed:生命有符号类型变量或函数void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)default:开关语句中的“其他”分支goto:无条件跳转语句sizeof:计算数据类型长度volatile:说明变量在程序执行中可被隐含地改变do :循环语句的循环体while :循环语句的循环条件static :声明静态变量if:条件语句32个运算符:1级优先级左结合() 圆括号[] 下标运算符-> 指向结构体成员运算符. 结构体成员运算符2级优先级右结合! 逻辑非运算符~ 按位取反运算符++ 前缀增量运算符-- 前缀增量运算符+ 正号运算符- 负号运算符(类型) 类型转换运算符* 指针运算符& 地址与运算符sizeof 长度运算符3级优先级左结合* 乘法运算符/ 除法运算符% 取余运算符4级优先级左结合+ 加法运算符- 减法运算符5级优先级左结合<< 左移运算符>> 右移运算符6级优先级左结合<、<=、>、>= 关系运算符7级优先级左结合== 等于运算符!= 不等于运算符8级优先级左结合& 按位与运算符9级优先级左结合^ 按位异或运算符10级优先级左结合| 按位或运算符11级优先级左结合&& 逻辑与运算符12级优先级左结合|| 逻辑或运算符13级优先级右结合? : 条件运算符14级优先级右结合= += -= *= /= %= &= ^= |= <<= >>= 全为赋值运算符15级优先级左结合,逗号运算符。
[工学]第05章 循环结构程序设计 (2)
![[工学]第05章 循环结构程序设计 (2)](https://img.taocdn.com/s3/m/90d7833fff00bed5b9f31d37.png)
22
i=i+c
2019/2/17
例:#include<stdio.h> 例:#include<stdio.h> main( ) main( ) { int i=0; { int i=0; for(;i<10;i++) for(i=0;i<10;i++) putchar(‘a’+i); putchar(‘a’+i); } } 运行结果:abcdefghij
2019/2/17
21
(7)表达式2一般是关系表达式(如 for语句说明4 i<=100)或逻辑 表达式(如a<b&&x<y),但也可以是数值表达式 或字符表达式,只要其值为非零,就执行循环体。分 析下面两个例子: ①for ( i=0;(c=getchar( ))!=‘\n’;i+ =c); i=0 此 for语句的执行过程见图 ,它的作 用是不断输入字符,将它们的ASCII 取一个字 码相加,直到输入一个“换行”符为 符=>c 止。 F ② for( ;(c=getchar( ))!=‘ \ n’;) C≠换行符 printf(“%c”,c);
15
思考:该程序是什么功能?
2019/2/17
5.3 for语句
for循环语句是C语言中功能最强的循环语句,它有
多个变化形式,并且可以很方便的代替其它的循环语
16
句。 for语句的一般形式
for(表达式1;表达式2;表达式3)循环体语句
2019/2/17
17
for执行流程
①先计算初值表达式1,它主要 用于循环开始前设置变量初值; ②接着计算循环控制逻辑表达式 2,它控制循环条件,决定循环 次数; ③如果表达式2为真,则执行循 环体语句,否则结束for循环; ④求解表达式3,它主要是对循 环控制变量进行修改。 ⑤转步骤②执行。
C51单片机循环语句

C51单片机循环语句循环语句是几乎每个程序都会用到的,它的作用就是用来实现需要反复进行多次的操作。
如一个12M 的51 芯片应用电路中要求实现1 毫秒的延时,那么就要执行1000 次空语句才能达到延时的目的(当然能使用定时器来做,这里就不讨论),如果是写1000 条空语句那是多么麻烦的事情,再者就是要占用很多的存储空间。
我们能知道这1000 条空语句,无非就是一条空语句重复执行1000 次,因此我们就能用循环语句去写,这样不但使程序结构清晰明了,而且使其编译的效率大大的提高。
在 C 语言中构成循环控制的语句有while,do-while,for 和goto 语句。
同样都是起到循环作用,但具体的作用和使用方法又大不一样。
我们具体来看看。
goto 语句这个语句在很多高级语言中都会有,记得小时候用BASIC 时就很喜欢用这个语句。
它是一个无条件的转向语句,只要执行到这个语句,程序指针就会跳转到goto 后的标号所在的程序段。
它的语法如下:goto 语句标号; 其中的语句标号为一个带冒号的标识符。
示例如下void main(void){unsigned char a;start: a++;if (a==10) goto end;goto start;end:;}上面一段程序只是说明一下goto 的使用方法,实际编写很少使用这样的手法。
这段程序的意思是在程序开始处用标识符“start:”标识,表示程序这是程序的开始,“end:”标识程序的结束,标识符的定义应遵循前面所讲的标识符定义原则,不能用C 的关键字也不能和其它变量和函数名相同,不然就会出错了。
程序执行a++,a 的值加1,当 a 等于10 时程序会跳到end 标识处结束程序,不然跳回到start 标识处继续a++,直到 a 等于10。
上面的示例说明goto 不但能无条件的转向,而且能和if 语句构成一个循环结构,这些在 C 程序员的程序中都不太常见,常见的goto 语句使用方法是用它来跳出多重循环,不过它只能从内层循环跳到外层循环,不能从外层循环跳到内层循环。
项目五 循环结构程序设计

图5-10 多循环的并列与嵌套
任务4 掌握循环结构程序设计实例
【例5-7】输出10~100之间的全部素数。所 谓素数n,是指除1和n之外,不能被2~(n-1) 之间的任何整数整除。 算法设计要点: (1)显然,只要设计出判断某数n是否是素 数的算法,外面再套一个for循环即可。
(2)判断某数n是否是素数的算法:根据素数 的定义,用2~(n-1)之间的每一个数去整除n, 如果都不能被整除,则表示该数是一个素数。 判断一个数是否能被另一个数整除,可通过判 断它们整除的余数是否为0来实现。
二、continue语句 continue语句的一般形式为: continue; continue只能用在循环语句中,它的功能是 结束本次循环,跳到循环体中下面尚未执行的语 句,接着进行下次是否执行循环的判定。
continue语句的功能:对于for循环,跳过循环 体其余语句,转向循环变量增量表达式的计算;对 于while和do-while循环,跳过循环体其余语句,但 转向循环继续条件的判定,也就是说continue语句 用在循环中时不会强制退出循环,但它会跳过循环 体中剩余的部分而转去循环的结尾部分,强制开始 下一轮循环。
普通高等教育“十二五”规划教材·计算机专业
C语言程序设计
主编 刘孟强 李思广
兴趣是最好的老师
知识有限创意无限 欢迎大家学习
C语言程序设计
项目五 循环结构程序设计
任务1 掌握循环结构语句
任务2 掌握break与continue语句
任务3 掌握多重循环
任务4 掌握循环结构程序设计实例
任务1 掌握循环结构语句
由于循环结构在现实生活中和数学运算中比 较常用,并且较之顺序结构和选择结构比较难, 所以要认真学习这一项目。
C语言32个关键字九种控制语句34种运算符

第一个关键字:auto用来声明自动变量。
可以显式的声明变量为自动变量。
只要不是声明在所有函数之前的变量,即使没加auto关键字,也默认为自动变量。
并且只在声明它的函数内有效。
而且当使用完毕后,它的值会自动还原为最初所赋的值。
自动变量使用时要先赋值,因为其中包含的是未知的值。
例:auto int name=1;第二个关键字:static用来声明静态变量。
可以显式的声明变量为静态变量。
也为局部变量。
只在声明它的函数内有效。
它的生命周期从程序开始起一直到程序结束。
而且即使使用完毕后,它的值仍旧不还原。
即使没有给静态变量赋值,它也会自动初始化为0.例:static int name=1.第三个关键字:extern用来声明全局变量。
同时声明在main函数之前的变量也叫全局变量。
它可以在程序的任何地方使用。
程序运行期间它是一直存在的。
全局变量也会初始化为0.例:extern int name;第四个关键字:register用来声明为寄存器变量。
也为局部变量,只在声明它的函数内有效。
它是保存在寄存器之中的。
速度要快很多。
对于需要频繁使用的变量使用它来声明会提高程序运行速度。
例:register int name=1;第五个关键字:int用来声明变量的类型。
int为整型。
注意在16位和32位系统中它的范围是不同的。
16位中占用2个字节。
32位中占用4个字节。
还可以显式的声明为无符号或有符号:unsigned int signed int .有符号和无符号的区别就是把符号位也当作数字位来存储。
也可用short和long来声明为短整型,或长整行。
例:int num;第六个关键字:float用来声明变量的类型。
float为浮点型,也叫实型。
它的范围固定为4个字节。
其中6位为小数位。
其他为整数位。
例:float name;第七个关键字:double用来声明为双精度类型。
它的范围为8个字节。
14位为小数位。
也可使用更高精度的long double 它的范围则更大,达到10字节。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
表达式 0 (假)
执行过程:
执行内嵌语句A,在判断表达式(条件)若为真,则 继续执行内嵌语句A,再判断表达式(条件)· · · ,直到表 达式的值为假时,执行do-while后面的语句。
与while语句的不同:
do-while语句至少执行循环体一次,但while语句当 条件为假时不执行循环体语句。
循环条件改变语句
printf("s=%ld\n", s);
输 出s
}
注意:
如果循环体中包含一个以上的语句,应该用花括弧 括起来,以复合语句的形式出现。如果不加花括弧,则 while语句的范围只到while后的第一个分号处。 在循环体中应该有使循环趋向结束的语句,否则会 导致死循环。 如上例中的语句改写 成如下形式:
求和表达式: 初值: 循环次数 i :
S=S+i S=0 1~100
流程图:
定义 变 量 s , i
程序: main ( ) { int s, i;
s=0, i=1;
s = 0,i = 1;
N
i≤ 100
while ( i < = 100 )
Y
s+=i;
{ s+=i;
i++; }
循环条件控制语句
i++;
6.4 for 语句
for 语句格式:
for ( [ 表达式 1] ;表达式2 ;[ 表达式3])
初值。 表达式2 :判断循环条件,若省略,则认为循环条件恒为"真"。
表达式3 :修改循环变量的值。
语句 :循环体
流程图:
表达式1
表达式2 真 语句
假
表达式3
则while语句的循环体语句为:
s+=i; 循环变量i的值没有改变,循 环不能终止,陷入死循环
i=1;
while ( i < = 100 ) s+=i; i++;
6.4 do-while 语句
do-while 语句格式: do < 语句A ;>
while ( < 条件 > ); 流程图:
语句 A
非 0 (真)
while语句的说明:
(1) while语句属当型循环,即先 判断条件(表达式),再执行循环体。
0 (假)
(2) 表达式为一条件,用于控制循 环是否可继续执行,故称控制表达式。 (3) 语句A为内嵌式语句,是循环结 构的循环体。它可以是单语句也可以 是复合语句,且该语句中必须包含有 对循环条件进行修改的语句。
Y s *= i
i++
printf("s=%ld\n", s);
}
输 出 s
例6.6:求 水仙花数,即这个数等于它的百位、十 位和个位数的立方和。 3 3 3 如153是一个水仙花数,因为153=1 5 3 分别用三种循环语句编写该程序。
求阶乘表达式: 初值: 循环次数 i :
S=S×i S=1 1~n
流程图:
定 义 符号 常量 N
程序:
#define N 10
定义 变 量 n, i, s
main ( )
{ int n , i;
N
s=1; i=1
i≤ N
long int s=1; for ( i=1; i<=N; i++ ) s *= i;
如:for (i=1; ;i++) sum=sum+i;
它相当于:i=1;
while (1)
该循环是死循环
{sum=sum+i;
i++;}
如:for (i=1; i<100; 如:for (
; i<100;
)
{sum=sum+i; i++;}
)
在循环体内修改循环变 量,循环可以正常终止
{sum=sum+i; i++;} 相当于: while (i<100)
表达式
非0 (真)
语句A
例6.1 求 1 + 2 + · · · · · ·+ 100
分析: 求和的过程为:
1) S=1 2) S=1+2 3) S=1+2+3 · · · · · · 100) S=1+2+ · · · +100 S0 = 0 S1 = S0 + 1 S2 = S1 + 2 S3 = S2 + 3 · · · · · · S100 = S99+100
例:while与do-while区别
#include <stdio.h> main( ) {int i=65; #include <stdio.h> main( ) {int i=65;
while(i<‘A’)
{putchar(i); }
无输出
do{putchar(i);
i++; } }
输出A
i++;}while(i<‘A’);
{sum=sum+i;
(1)在循环语句前给循环变 量赋初值 (2)循环体内修改循环变量
i++;}
例6.5:求 n!
分析: 求阶乘的过程为:
1) S=1 2) S=1×2 3) S=1×2×3 · · · · · · n) S=1×2× · · · ×n S0 = 1 S1 = S0 × 1 S2 = S1 × 2 S3 = S2 × 3 · · · · · · Sn = Sn-1×100
6.1 概述
一、while 语句 二、do-while 语句 三、for 语句 四、goto和if语句
6.2 goto语句以及用goto语句构成循环
goto语句格式: goto 语句标号 ;
· · · · · ·
标号:语句 ; 作用: 1)与 if 语句构成循环结构。 2)从循环体中强制退出。
说明: 1)goto语句为无条件转向语句。 goto语句可 以从循环体内跳出循环,尤其在多层循环中, 使用goto语句可以跳到任意一层循环体内。
2)标号的命名规则同变量名。
3)goto语句不符合结构化程序设计原则,一 般不主张使用。
6.2 while 语句
while 语句格式:
while (< 表达式 >) 语句A; 流程图:
表达式 0 (假)
非 0 (真) 语句 A
若表达式(条 件)的值为真,则 执行内嵌语句A, 再判断表达式(条 件)· · · ,当表达式 的值为假时,执行 while后面的语句。
For循环的 下一语句
说明:
for语句的一般形式中的“表达式1”可以省略。 此时应该在for语句之前给循环变量赋初值。 如果表达式2省略,即不判断循环条件(认为表达 式始终为真),循环会无终止的运行下去。
表达式3省略时,应另外设置条件保证循环能正常 结束。如在循环体内修改循环变量。
表达式1和表达式3可以是简单的表达式,也可以 是一个逗号表达式;它可以与循环变量有关,也可以与 循环变量无关。