C语言循环结构
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
⑤ 条件表达式可以是关系表达式、数值表达式。只要表 达式的值0。就执行循环语句。
如:for( i=0; (c=getchar())!= ‘\n’; i+=c);
14:49
第6页
⑥ 初始表达式、循环表达式可以是逗号表达式 如:for (sum=0, i=1; i<=100; i++, i++)
相当于:sum=0;
14:49
第1页
根据已有的知识,单独实现每一步都不难。 但是,由于需要经常使用这种重复计算结 构(称为循环结构),C语言提供了循环语 句来实现,以简化、并规范循环结构程序 设计。
在C语言中,可用以下语句实现循环:
(1)用for语句。
(2)用do-while语句。
(3)用while语句。
14:49
第2页
i++; } printf("sum=%d\n",sum); }
14:49
第14页
【例5-5】输入一个正整数n,求n!。
计 算 表 达 式 : n!=n*(n-1)*(n2)*…*2*1。用i代表循环变量, s代表n!的结果值。
编程时既可以采用for循环, 也可以采用while循环
求任意正整数n的阶乘的算 法流程图如图 :
§5.1 for语句
循环的意思就是让程序重复地执行某些语句 。 C语言提供的循环结构有三种:for语句、while语句和 do_while语句。 for语句既可以用于循环次数已知的情况,也可用于循 环次数预先不知道的情况。 for语句的一般形式为:
for (<初始表达式>);<条件表达式>;<循环表达式>) <循环体语句>
这是一个很有规律的图案, 可采用二重循环嵌套的方 式:第1层控制行数,第2 层控制列数。
算法流程图如下图:
14:49
第10页
/*exam5_3.c 打印图案*/ #include <stdio.h> main() {
int i,j; for(i=1;i<=8;i++) { for(j=1;j<=7;j++)
14:49
第12页
<循环语句体>:是用一对花括号括起来的复合语句。
注意:在<循环语句体>中要有使<表达式>的值为假 (或<表达式>的值为零)的语句,否则会使程序出现 无限循环而发生错误。
注意:由于while循环是先判断<表达式>的值,后决 定是否执行<循环语句>,因此,有可能一次也不执 行<循环语句>。
14:49
第5页
③ <循环表达式>亦可省略,但在循环语句体中必须有 语句来修改循环变量,以使条件表达式的值在某一时 刻为0,从而能正常结束循环。 如:for(sum=0, i=1; i<=100;)
{ sum = sum +i; i++;
}
④ 三个表达式均省略,即for(;;),为无限循环,程序 中要避免这种情况的发生。
14:49
第3页
功能:先计算<初始表达式>的值,然后判断<条件表达式> 的值,若该值为“假”,则退出循环,执行循环体下面的 语句;若该值为“真”,则执行<循环体语句>,然后计算 <循环表达式>的值,再判断<条件表达式>的值,重复以上 的操作。
for语句的流程图如图 :
一般情况下,<循环体 语句>是由一对花括括 起来的复合语句。
ia
14:49
第7页
这个问题与例5-1 类似,只是所求级 数和的初值和终值 不一样,是由键盘 任意输入的,为避 免计算机错误,要 求初值a要小于终 值b 。
算法流程图如右图:
14:49
第8页
/*exam5_2.c 求几何级数的和*/
#include <stdio.h>
main()
{ int i,j,a,b,sum=0;
printf("Please input two number:\n");
scanf("a=%d,b=%d",&a,&b);
i=a; j=b;
if(a>b)
{i=b;j=a;}
for(;i<=j;i++)
sum=sum+i;
printf("sum=%d\n",sum);
}
14:49
第9页
【例5-3】编写一个程序,在屏幕上打印出 具有8行7列的如下图案:
14:49
第13页
【例5-4】 将例5-1用while语句重写,求简单几何 级数的和 。
/*exam5_4.c 用while求简单几何级数的和*/ #include <stdio.h>
main()
{
int i=1,sum=0; while(i<=100) {
程序运行结果: sum=5050
sum=sum+i;
printf("*"); printf("\n"); } }
14:49
第11页
§5.2 while语句
While语句也是一种用于产生循环动作的语句, 一般形式为:
while(<表达式>) <循环体语句>
while语句的流程图
功能:先计算<表达式>的值,若 该值为“假”,则跳出循环,执 行循环体后面的语句;若该值为 “真”,则执行<循环体语句>, 然后回过头来再检查<表达式>的 值,重复以上的操作。
循环语句概述
问题:求1~100的累Байду номын сангаас和。 根据已有的知识,可以用“1+2+……+100”来求解,但 显然很繁琐。现在换个思路来考虑: 首先设置一个累计器sum,其初值为0,利用sum =sum+ i 来计算(i依次取1、2、……、100),只要解决以下3个问 题即可:
(1)将i的初值置为1; (2)每执行1次“sum = sum+ i”后,i增 1; (3)当n增到101时,停止计算。此时,sum的值就是 1~100的累计和。
for(i=1; i<=100; i=i+2) ⑦ for循环也可以嵌套,执行时是由外向里,逐层进行, 先执行外层循环,再进入内层循环;退出时相反,由 里向外逐层退出,先退出内层循环,然后退到上一层 循环。
【例5-2】任意从键盘输入两个整数a、b(a<b),求它
ib
们之间的几何级数的和,数学表达式为。 i
14:49
第4页
for循环语句注意: ① <初始表达式>可以省略,但须保留分号(;),同时在 for之前必须给循环变量赋值,如:
i=1; for ( ; i<=100; i+ +) sum=sum+i;
② <条件表达式>一般不可省略,否则为无限循环。 如:for(i=1;; i++)
sum =sum+i; 相当于条件总为真,程序会一直不停的执行直到“数据 溢出”。
如:for( i=0; (c=getchar())!= ‘\n’; i+=c);
14:49
第6页
⑥ 初始表达式、循环表达式可以是逗号表达式 如:for (sum=0, i=1; i<=100; i++, i++)
相当于:sum=0;
14:49
第1页
根据已有的知识,单独实现每一步都不难。 但是,由于需要经常使用这种重复计算结 构(称为循环结构),C语言提供了循环语 句来实现,以简化、并规范循环结构程序 设计。
在C语言中,可用以下语句实现循环:
(1)用for语句。
(2)用do-while语句。
(3)用while语句。
14:49
第2页
i++; } printf("sum=%d\n",sum); }
14:49
第14页
【例5-5】输入一个正整数n,求n!。
计 算 表 达 式 : n!=n*(n-1)*(n2)*…*2*1。用i代表循环变量, s代表n!的结果值。
编程时既可以采用for循环, 也可以采用while循环
求任意正整数n的阶乘的算 法流程图如图 :
§5.1 for语句
循环的意思就是让程序重复地执行某些语句 。 C语言提供的循环结构有三种:for语句、while语句和 do_while语句。 for语句既可以用于循环次数已知的情况,也可用于循 环次数预先不知道的情况。 for语句的一般形式为:
for (<初始表达式>);<条件表达式>;<循环表达式>) <循环体语句>
这是一个很有规律的图案, 可采用二重循环嵌套的方 式:第1层控制行数,第2 层控制列数。
算法流程图如下图:
14:49
第10页
/*exam5_3.c 打印图案*/ #include <stdio.h> main() {
int i,j; for(i=1;i<=8;i++) { for(j=1;j<=7;j++)
14:49
第12页
<循环语句体>:是用一对花括号括起来的复合语句。
注意:在<循环语句体>中要有使<表达式>的值为假 (或<表达式>的值为零)的语句,否则会使程序出现 无限循环而发生错误。
注意:由于while循环是先判断<表达式>的值,后决 定是否执行<循环语句>,因此,有可能一次也不执 行<循环语句>。
14:49
第5页
③ <循环表达式>亦可省略,但在循环语句体中必须有 语句来修改循环变量,以使条件表达式的值在某一时 刻为0,从而能正常结束循环。 如:for(sum=0, i=1; i<=100;)
{ sum = sum +i; i++;
}
④ 三个表达式均省略,即for(;;),为无限循环,程序 中要避免这种情况的发生。
14:49
第3页
功能:先计算<初始表达式>的值,然后判断<条件表达式> 的值,若该值为“假”,则退出循环,执行循环体下面的 语句;若该值为“真”,则执行<循环体语句>,然后计算 <循环表达式>的值,再判断<条件表达式>的值,重复以上 的操作。
for语句的流程图如图 :
一般情况下,<循环体 语句>是由一对花括括 起来的复合语句。
ia
14:49
第7页
这个问题与例5-1 类似,只是所求级 数和的初值和终值 不一样,是由键盘 任意输入的,为避 免计算机错误,要 求初值a要小于终 值b 。
算法流程图如右图:
14:49
第8页
/*exam5_2.c 求几何级数的和*/
#include <stdio.h>
main()
{ int i,j,a,b,sum=0;
printf("Please input two number:\n");
scanf("a=%d,b=%d",&a,&b);
i=a; j=b;
if(a>b)
{i=b;j=a;}
for(;i<=j;i++)
sum=sum+i;
printf("sum=%d\n",sum);
}
14:49
第9页
【例5-3】编写一个程序,在屏幕上打印出 具有8行7列的如下图案:
14:49
第13页
【例5-4】 将例5-1用while语句重写,求简单几何 级数的和 。
/*exam5_4.c 用while求简单几何级数的和*/ #include <stdio.h>
main()
{
int i=1,sum=0; while(i<=100) {
程序运行结果: sum=5050
sum=sum+i;
printf("*"); printf("\n"); } }
14:49
第11页
§5.2 while语句
While语句也是一种用于产生循环动作的语句, 一般形式为:
while(<表达式>) <循环体语句>
while语句的流程图
功能:先计算<表达式>的值,若 该值为“假”,则跳出循环,执 行循环体后面的语句;若该值为 “真”,则执行<循环体语句>, 然后回过头来再检查<表达式>的 值,重复以上的操作。
循环语句概述
问题:求1~100的累Байду номын сангаас和。 根据已有的知识,可以用“1+2+……+100”来求解,但 显然很繁琐。现在换个思路来考虑: 首先设置一个累计器sum,其初值为0,利用sum =sum+ i 来计算(i依次取1、2、……、100),只要解决以下3个问 题即可:
(1)将i的初值置为1; (2)每执行1次“sum = sum+ i”后,i增 1; (3)当n增到101时,停止计算。此时,sum的值就是 1~100的累计和。
for(i=1; i<=100; i=i+2) ⑦ for循环也可以嵌套,执行时是由外向里,逐层进行, 先执行外层循环,再进入内层循环;退出时相反,由 里向外逐层退出,先退出内层循环,然后退到上一层 循环。
【例5-2】任意从键盘输入两个整数a、b(a<b),求它
ib
们之间的几何级数的和,数学表达式为。 i
14:49
第4页
for循环语句注意: ① <初始表达式>可以省略,但须保留分号(;),同时在 for之前必须给循环变量赋值,如:
i=1; for ( ; i<=100; i+ +) sum=sum+i;
② <条件表达式>一般不可省略,否则为无限循环。 如:for(i=1;; i++)
sum =sum+i; 相当于条件总为真,程序会一直不停的执行直到“数据 溢出”。