C语言 5(5.1-5.5) 循环结构程序设计
合集下载
C语言第5章-循环结构程序设计PPT课件
sum=sum+i i++
当i<=10 (直到i>10) 输出sum
#include "stdio.h" int main() {
int i,sum; i=1; sum=0; do { sum=sum+i; i++; }while(i<=10);
至少执 行一次
循环体语句
真 表达式 假
说明
printf("sum=%5d\n",sum); return 0;
7
举例
例5.2 设s=1×2×3×……×n,求s不大于400000时 最大的n。
#include <stdio.h>
int main( )
{ int n=1; long int s=1;
前n项的乘积
P81
while(s<=400000)
{
n=n+1;
s=s*n;
}
printf("不大于400000时的最大n为:%d\ns值为:%ld\n",n-1,s/n);
输入:1 输出:sum=55 输入:11 输出:sum=0
sum=55 sum=11
什么情况下两 者结果相同?
11
§5.3 for语句
P87
格式 for (表达式1;表达式2;表达式3) 语句
for (循环变量赋初值;循环条件;循环变量增值) 语句
执行 过程
求解表达式1
假 表达式2
真 循环体语句
求解表达式3
一、实现循环结构的控制语句 二、循环嵌套 三、循环结构程序举例
1
• while语句 • do-while语句 • for语句 • break、continue语句 • 几种循环的比较
当i<=10 (直到i>10) 输出sum
#include "stdio.h" int main() {
int i,sum; i=1; sum=0; do { sum=sum+i; i++; }while(i<=10);
至少执 行一次
循环体语句
真 表达式 假
说明
printf("sum=%5d\n",sum); return 0;
7
举例
例5.2 设s=1×2×3×……×n,求s不大于400000时 最大的n。
#include <stdio.h>
int main( )
{ int n=1; long int s=1;
前n项的乘积
P81
while(s<=400000)
{
n=n+1;
s=s*n;
}
printf("不大于400000时的最大n为:%d\ns值为:%ld\n",n-1,s/n);
输入:1 输出:sum=55 输入:11 输出:sum=0
sum=55 sum=11
什么情况下两 者结果相同?
11
§5.3 for语句
P87
格式 for (表达式1;表达式2;表达式3) 语句
for (循环变量赋初值;循环条件;循环变量增值) 语句
执行 过程
求解表达式1
假 表达式2
真 循环体语句
求解表达式3
一、实现循环结构的控制语句 二、循环嵌套 三、循环结构程序举例
1
• while语句 • do-while语句 • for语句 • break、continue语句 • 几种循环的比较
C语言 第五章-循环结构程序设计
执行过程如图所示。其中i为外循环的控制变 量,j为内循环的控制变量。
i =0 当 i <=10
j=0 当 j<=10
printf(“%d ”, i*j ) j++ i++
例4 编程打印“九九乘法表”。
分析:九九乘法表 1×1=1 1×2=2 1×3=3 … 2×1=2 2×2=4 2×3=6 … 3×1=3 3×2=6 3×3=9 … …… 9×1=9 9×2=18 9×3=27 …
i ++ ; } while ( i <= 100 ) ; printf ( " %d " , sum ) ; }
结果相同
同样是下列程序,但如果while后面的表达式结果一开始就是 假时,两种循环结果会不一样。
main ( ) /*程序1*/
{ int i , sum = 0 ; i = 101 ;
所以程序需要设计成二重循环。由于题目只 要求找到一组解,所以在循环过程中只要找到一组 满足条件的x, y, z就可以跳出循环。
跳出循环的方法可以采用break语句,但是, 因为是二重循环,所以要考虑使用break是否方便。
程序 百钱买百鸡问题。 void main ( ) { int x , y , z ;
打印第2行 ( i = 2 ) for (j=1;j<=9;j++) printf(“%5d”,i*j) ; printf ( “ \n ” ) ; /*换行打印*/
…… 打印第9行 ( i = 9 )
for (j=1;j<=9;j++) printf(“%5d”,i*j) ; printf ( “ \n ” ) ; /*换行打印*/
循环结构程序设计(C语言实验报告)
循环结构程序设计(C语言实验报告)实验目的:1. 掌握循环结构程序设计流程2. 熟悉while、do-while和for循环语句的使用3. 掌握循环语句的嵌套应用实验原理:循环结构是一种非常重要的程序设计结构,其目的是为了让程序可以重复执行一段代码块,从而达到省去大量代码重复编写的目的,也可以是让程序能够按照用户的需求反复执行一段代码块。
在C语言中,常用的循环结构有while、do-while和for三种,这三种循环语句的基本语法结构是:while(循环条件){循环体语句;}其中,while循环和do-while循环的区别在于:while循环条件成立时,不一定会执行一次循环体,但do-while循环条件成立时,会先执行一次循环体,然后判断循环条件是否成立;至于for循环,则是将循环条件、循环初值和循环增量三个要素集成在一起,使用比较方便。
另外,循环结构也可以进行嵌套应用,即在循环体内部再嵌套一个循环,这样可以实现多个变量的循环控制。
应用实例包括如下:1. 打印九九乘法表2. 对一个数组进行排序3. 多重循环实现字谜游戏实验内容:1. while循环:目的是求出1~100的整数和,并在程序运行过程中输出1~100的所有整数。
目的是输入若干个数字,计算它们的平均值。
3. for循环:目的是输入一个数n,求1~n中可以被3或5整除的所有整数和。
4. 循环嵌套:目的是打印九九乘法表。
实验总结:本次实验通过三种常用的循环结构,并结合实例进行学习掌握,同时还熟悉了循环嵌套的应用。
相信这对于日后的程序设计和代码优化应用会非常有帮助。
C语言程序设计_05循环结构程序设计
5.2 DO…WHILE循环结构 5.2.1 DO…WHILE语句的格式 DO…WHILE语句的一般格式为: DO 语句 WHILE(表达式); DO…WHILE语句中的表达式表示循环的条件,可 以是任何表达式,常用的是关系表达式和逻辑表达 式。表达式必须加圆括号。语句是重复执行的部分, 称作循环体。
由亍循环体在表达式2乊后表达式3乊前执行所以把循环体语句放在表达式3的开头循环体语句不原来的i构成逗号表达式作为循环语句新的表达式3从而也就没有循环体语句了
第5章 循环结构程序设计
5.1 WHILE循环结构 5.2 DO…WHILE循环结构 5.3 FOR循环结构 5.4 与循环有关的控制语句 5.5 3种循环语句的比较 5.6 循环的嵌套 5.7 循环结构程序举例 本章小结
图5-6 FOR语句执行过 程
FOR语句的执行过程如图5-6所示。具体由以下几步 完成: (1)求表达式1。 (2)求表达式2,并判定其值为0或非0。若值为非0, 转步骤(3);否则结束FOR语句。 (3)执行语句,然后求表达式3。 (4)转向步骤(2)。 由FOR语句的执行流程可知,表达式1的作用是为循 环控制的有关变量赋初值,表达式2是循环控制条件, 表达式3用于修正有关变量,语句是重复执行部分。
【例5.7】输入20个数,求出其中的最大值与最小值。
5.3.3 FOR语句的各种变形 1.在FOR语句中省略表达式 FOR语句中的3个表达式可以部分或全部省略,下面 给出语句的4种基本变形。 (1)表达式1移至FOR语句前,但它后面的分号必 须保留。这时FOR语句的形式为: 表达式1; FOR(; 表达式2; 表达式3) 语句
(2)表达式3移至循环体语句之后,但它前面的分 号必须保留。FOR语句的形式为: FOR(表达式1; 表达式2;) { 语句; 表达式3; } 对于求P=5!的程序段,省略表达式3,将其放在循环 体中,则程序段写成:
第5章 循环结构1
说明:
(3)最简单的应用形式: for(循环变量赋初值;循环条件;循环变量增值) 例如:for(i=1;i<=10;i++) sum=sum+i; (4)三个表达式均可缺省,但起分割作用的两个分号 不可省略。 例如:for( ; ; ) i=1;for(;i<=10;i++) sum=sum+i; 或 for(i=1;i<=10;) {sum=sum+i;i++;} • 表达式1省略,应在for之前对循环变量赋初值 • 表达式2省略,则不判断条件,循环无终止进行下去 • 表达式3省略,则应另设法保证循环的结束
5.4
循环的嵌套
一个循环体内又包含另一个完整的循环结构称为循 环的嵌套。
① while() {… while() {…} } ② do {… do {…} while(); } while() ; ③ for(;;) { for(;;) {…} }
5.4
④ while() {… do {…} while(); … } 说明:
在许多问题中都需要用到循环结构,如
要求计算全校每个学生的平均成绩,计算两 个正整数的最大公约数和最小公倍数等都需
要用到循环控制。C语言中有三种循环语句, 分别是while语句、do…while语句和for语 句。
5.1 while循环语句
while循环语句是用来实现“当型”循环结构的。 它的特点是先判断表达式,后执行语句。 格式: while(表达式) 语句; 该语句的执行顺序是:先计算表达式的值,再判 断其值是否为“真”(即非0)。若结果为“真”, 则执行语句;此过程重复执行,直到表达式的值为 “假”(即为0)时,结束循环。其流程图和N-S图 分别如图5-1和5-2所示。
循环结构程序设计C语言程序
输入:n=2
n--=2 a++ a=1 a++*2 输出:2 n=1 a=2
n=1 a=2 a++ a=2 a++*2 输出:4 n--=0 a=3
2. do_while语句
一般形式:
do 循环体语句; while(表达式);
执行流程:
其中: while后面的括号( )不能省。 while最后面的分号;不能省。 while后面的表达式可以是任意类型的表达式,但一般是条件表达式或逻辑表达式。 表达式的值是是循环的控制条件。 语句部分称为循环体,当需要执行多条语句时,应使用复合语句。
表达式1、表达式2、和表达式3可以是任何类型的表达式。比方说,这三个表达式都可以是逗号表达式,即每个表达式都可由多个表达式组成。
逗号表达式
逗号表达式
for语句注意事项:
#include <stdio.h> void main ( ) { int i, sum = 0; i = 1; for ( ; i <= 100; i++) sum += i; printf("sum = %d\n", sum); }
例5.3 while和do~while比较
#include <stdio.h> main() { int i,sum=0; scanf("%d",&i); do { sum+=i; i++; }while(i<=10); printf("%d",sum); }
F
T
expr
循环体
do
while
特点:先执行循环体,再判断表达式
n--=2 a++ a=1 a++*2 输出:2 n=1 a=2
n=1 a=2 a++ a=2 a++*2 输出:4 n--=0 a=3
2. do_while语句
一般形式:
do 循环体语句; while(表达式);
执行流程:
其中: while后面的括号( )不能省。 while最后面的分号;不能省。 while后面的表达式可以是任意类型的表达式,但一般是条件表达式或逻辑表达式。 表达式的值是是循环的控制条件。 语句部分称为循环体,当需要执行多条语句时,应使用复合语句。
表达式1、表达式2、和表达式3可以是任何类型的表达式。比方说,这三个表达式都可以是逗号表达式,即每个表达式都可由多个表达式组成。
逗号表达式
逗号表达式
for语句注意事项:
#include <stdio.h> void main ( ) { int i, sum = 0; i = 1; for ( ; i <= 100; i++) sum += i; printf("sum = %d\n", sum); }
例5.3 while和do~while比较
#include <stdio.h> main() { int i,sum=0; scanf("%d",&i); do { sum+=i; i++; }while(i<=10); printf("%d",sum); }
F
T
expr
循环体
do
while
特点:先执行循环体,再判断表达式
C语言程序设计第5单元
例5.2流程图
N
8
5.1 while语句
程序代码: #include<stdio.h> main() { int i=1,n;
float fac=1; printf("please input an integer>=0:\n"); scanf("%d",&n); if(n==0||n==1)
printf("factorial is 1.\n"); else
int i,sum=0,score; float ave=0; printf("\n计算学生总成绩和平 均成绩\n"); printf("请输入10名学生的成 绩:\n");
for(i=1;i<=10;i++) { scanf("%d",&score); sum=sum+score; } ave=sum/10.0; printf("总成绩为%d 平均成绩为
1. break语句
出现在循环体中的break语句使循环结束。若在多层循环体 中使用break语句,则只结束本层循环。
【例5.11】使用for语句输出50个“*”,使用break控制数量。
#include <stdio.h>
main()
{
int i;
for(i=1;;i++)
{
if(i>50) break;
方法三:
#include "stdio.h"
int main()
{
int i=1;
for(;i<=10;)
{
C语言程序设计第5章-循环结构程序设计ppt课件
分析:循环进行的条件是:i≤k和flag=0。因为在i>k时, 显然不必再去检查n是否能被整除,此外如果flag=1, 就表示n已被某一个数整除过,肯定是非素数无疑, 也不必再检查了。只有i≤k和flag=0两者同时满足才 需要继续检查。循环体只有一个判断操作:判断n 能否被i整除,如不能,则执行i=i+1,即i的值加1, 以便为下一次判断作准备。如果在本次循环中n能 被i整除,则令flag=1,表示n已被确定为非素数了, 这样就不再进行下一次的循环了。如果n不能被任 何一个i整除,则flag始终保持为0。因此,在结束 循环后根据flag的值为0或1,分别输出n是素数或非 素数的信息。
while(i<=k && !flag)
if(n % i==0) flag=1;
else i=i+1;
if(!flag)
printf("%d is a prime
number.\n",n);
else
printf("%d is not a prime
number.\n",n);
}
.
返回本章首页
第5章 循环结构程序设计
【例5_1】用while语句求p=n!
#include<stdio.h>
int main()
{ int i=1,p=1; //循环初始化部分 while(i<=5) //循环控制部分
{ p=p*i; //循环体语句 i++; //循环修改部分
}
printf("5!=%d\n",p);
return 0;
10-3,则再执行循环体,把 term 值赋给term1.然后再累加 到s中去。可以看出:程序中 term1代表当前要累加的项, term代表下一项,如果这两项 之差未超过10-3,就将下一项 加到s 中。
while(i<=k && !flag)
if(n % i==0) flag=1;
else i=i+1;
if(!flag)
printf("%d is a prime
number.\n",n);
else
printf("%d is not a prime
number.\n",n);
}
.
返回本章首页
第5章 循环结构程序设计
【例5_1】用while语句求p=n!
#include<stdio.h>
int main()
{ int i=1,p=1; //循环初始化部分 while(i<=5) //循环控制部分
{ p=p*i; //循环体语句 i++; //循环修改部分
}
printf("5!=%d\n",p);
return 0;
10-3,则再执行循环体,把 term 值赋给term1.然后再累加 到s中去。可以看出:程序中 term1代表当前要累加的项, term代表下一项,如果这两项 之差未超过10-3,就将下一项 加到s 中。
C语言第5章循环结构程序设计1
(2)在循环体中应有使循环趋向于结束的语句。 比如上例中,循环结束的条件是“score>=0”, 那么当我们把这个班的成绩全部输入完后, 一定要输入一个负数,才能使程序往下执行。 (3)循环体语句有可能一次也不执行。比如说上 例中,当第一次输入的分数就为负数时,则 循环体一次也不执行。
§5.3 do …while语句
① ② ④ ③
for(i=1; i<100; i++) s=s+i; printf(″s=%d″, s); }
/*循环体语句*/
对于for循环,有一点非常重要,即条件测 试永远是在循环开始时进行,如果在循环开 始时条件为假,那么循环体语句就不会被执 行。如: int i=10; for (k=10;k!=i;k++) printf(″%d″,k); printf(″%d″,k);
2、循环控制变量必须在循环体内有所改变,才 能使while和do-while语句的循环控制条件表达 式的值不断改变,直至循环结束。否则会造 成死循环。例如: i=1; while(i<=100) putchar(′*′); i++; 这个循环永远不会结束,因为“i++;”语句 不属于循环体中的语句,循环控制变量i没有 在循环体内被改变。 程序应该作如下改变:
在使用while语句的时候,我们要注意以下 两个问题: (1)循环体如果包含一个以上的语句,应该用花 括号括起来,以复合语句的形式出现。如果 不加花括号,则while语句的范围只到while后 面的第一个分号处。比如上例中,while语句 中如无花括号,则while语句范围只到 “average+=score;”。
#include <stdio.h> main() {int i,n;long fac; Scanf(―%d‖,&n); i=1 while (i<=n) fac=fac*i; i++; } Printf(―%d!=%ld‖,n,fac); }
第5章 循环结构程序设计
运行结果:
printf("%d\n",sum);
sum = 5050
}
while语句和用do-while语句的比较:
一般情况,用while循环语句和用do -while循环语句处理问 题时,若循环体部分一样,结果也一样。但是如果while循 环语句循环条件一开始为“假”,则循环结果不同。while 循环语句一次也不执行,而do -while循环语句不论条件是 否成立,先执行一次循环体语句。
循环变量不增值。无终止地执行循环体。
例5-7用for语句求1 + 2 + 3 + … + 100
#include <stdio.h> void main() {
int i,sum=0; /*将累加器sum初始化为0*/ for(i=1; i<=100; i++) sum += i;/*实现累加*/ printf("sum=%d\n",sum); } 程序运行的结果为: sum=5050 解析:先执行变量赋初值,然后判定循环继续条件, 如果为“真”,执行循环体语句,i 为运算项目和循 环变量,执行完一次,增加一次,最后累加和。
if(n%3!=0) /*循环体*/
printf("%5d",n);
}
§5.4 多重循环
• 当循环中的内嵌语句是循环语句时,称为循 环的嵌套使用。内嵌的循环中嵌套循环,称 为多重循环。
C语言程序设计技术基础
第5章 循环结构程序设计
第5章 循环结构程序设计
5.1 while 循环语句 5.2 do while循环语句 5.3 for循环语句 5.4 多重循环 5.5 break语句与continue语句 5.6 几种循环语句的比较 5.7 循环结构程序举例
c语言第5章循环结构程序设计课件
6
第五章 循环结构程序设计
典型例题(例5-8) :求两个整数的最大公约数、最小公倍数
12 8 4 mn r
84
0
mn r
最大公约数 4 最小公倍数 12*8/4=24
求最大公约数的N-S流程图
辗转相除法
7
第五章 循环结构程序设计
void main( )
{ int n, m, nm, r, t; printf( " Enter m, n= ? " ) ; scanf( " % d% d" , & m, & n) ; nm= n* m; if ( m< n)
例如: for(i=1;i<=n;) { t=t*i; i++; } (4)可以省略表达式1和表达式3,只有表达式2 , 即只给循环条件。
i=1; for(;i<=n;)
{t=t*i; i++;}
14
第五章 循环结构程序设计
(5) 3个表达式都可省略。 例如: for(;;) 语句 相当于 while(1)语句。
3
第五章 循环结构程序设计
例: 编程序求: s=1+2+3+……+100
main()
{ int s=0,i=1;
while (i<=100) { s=s+i;
思考:如何求n!
i++; }
printf("S=%d",s); }
4
第五章 循环结构程序设计 二、 do...while语句
Do-while语句的一般形式为:
(1) while( ) {… while( ) {…}
第五章 循环结构程序设计
典型例题(例5-8) :求两个整数的最大公约数、最小公倍数
12 8 4 mn r
84
0
mn r
最大公约数 4 最小公倍数 12*8/4=24
求最大公约数的N-S流程图
辗转相除法
7
第五章 循环结构程序设计
void main( )
{ int n, m, nm, r, t; printf( " Enter m, n= ? " ) ; scanf( " % d% d" , & m, & n) ; nm= n* m; if ( m< n)
例如: for(i=1;i<=n;) { t=t*i; i++; } (4)可以省略表达式1和表达式3,只有表达式2 , 即只给循环条件。
i=1; for(;i<=n;)
{t=t*i; i++;}
14
第五章 循环结构程序设计
(5) 3个表达式都可省略。 例如: for(;;) 语句 相当于 while(1)语句。
3
第五章 循环结构程序设计
例: 编程序求: s=1+2+3+……+100
main()
{ int s=0,i=1;
while (i<=100) { s=s+i;
思考:如何求n!
i++; }
printf("S=%d",s); }
4
第五章 循环结构程序设计 二、 do...while语句
Do-while语句的一般形式为:
(1) while( ) {… while( ) {…}
C语言程序设计循环结构程序设计
假
体现式
真
语句
假如体现式旳值一开始就为0,则语 句一次也不会被执行。
上一页
下一页
while语句举例
问题: 求学生旳平均成绩,以输入负数成绩为结束
算法分析:
1. 定义变量score存储学生成绩,定义s=0存储累加旳成绩,
定义n=0统计录入旳成绩数目。
2. 输入第一种学生旳score
3. 若score>=0,执行第4步,不然执行第7步
上一页
下一页
例: 求 1+2 +…+99
分析:用变量i从1到99循环, 把i旳值累加到变量s中,最 终输出s旳值。
程序如下:
#include<stdio.h> main( ) { int i,s=0;
for(i=1;i<=99;i++) s=s+i;
printf(“s=%d”,s); }
上一页
下一页
在某些情况下,for语句中旳体现式1、2、3都能够 省略,而改用其他旳方式来实现这些功能。我们还用 上面旳例子阐明for语句省略体现式旳情形。
上一页
下一页
1.省略体现式1: #include<stdio.h> main( ) { int i=1,s=0;
for(;i<=99;i++) s=s+i;
因为do-while语句至 少要被执行一次,特
别要注意n和s旳取值 问题!
s=s+score;
}while(score>=0);
if(n>1) printf (“ \n %f” ,(s-score)/(n-1));
else printf(“no student score!”);
C语言程序设计课件第5章 循环结构程序设计
完整版ppt
19
➢break语句的一般形式为: break;
只能用于循环语句和switch 语句之中,而不能单独使用
完整版ppt
20
5.5.2 用continue语句提前结束 本次循环 P126
➢ continue语句的一般形式为:
continue;
➢其作用为结束本次循环,即跳过循环体 中下面尚未执行的语句,接着进行下一 次是否执行循环的判断。
循环体
完整版ppt
7
while语句的一般形式如下:
while (表达式) 语句
循环条件表达式
“真”时执行循环体语句 “假”时不执行
表达式
0(假)
while循环的特点是: 先判断条件表达式 后执行循环体语句
非0(真) 语句
完整版ppt
8
P117
5.2.2 用do…while语句实现循环
➢do---while语句的特点:先无条件地执
第5章 循环结构程序设计 P115
5.1 程序中需要用循环结构
5.2 用while语句和do…while语句实现循环 5.3 用for语句实现循环
5.4 循环的嵌套
5.5 提前结束循环
5.6 几种循环的比较
5.7 程序举例
5.8 提高部分
完整版ppt
1
5.1 程序中需要用循环结构 P115
➢现实生活中许多问题是需要重复处理
➢for语句的一般形式为 for(表达式1;表达式2;表达式3) 语句
作为循环的调整器,例如 使循环变量增值,它是在 执行完循环体后才进行的
完整版ppt
14
➢for语句的执行过程:
(1) 先求解表达式1 (2) 求解表达式2,若其值为真,执行循环体, 然后执行下面第(3)步。若为假,则结束循环, 转到第(5)步 (3) 求解表达式3 (4) 转回上面步骤(2)继续执行 (5) 循环结束,执行for语句下面的一个语句
《C语言程序设计》课件 《C语言程序设计》课件 第5章-循环结构程序设计
Page 28
参考代码
#include<stdio.h> void main() {
char ch; int char_num=0,int_num=0,other_num=0; while((ch=getchar())!=‘\n’) //回车键结束输入 {
if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z') char_num++;
printf("************\n ");
printf("************\n ");
printf("************\n ");
printf("************\n "); printf("************\n "); 等价 for(int i=1;i<=8;i++)
{ s=s+i;
i++; //表达式3移至循环体末尾
}
printf("s=%d",s);
}
<<C语言程序设计>>
Page 19
随堂练习
例 编程计算n的阶乘。
n!=1 2 3 ……〔n-1〕 n
思路:
类似于累加求和,每一次循环乘上一个数字,求和 将和初始化为0,这里应把积初始化为?
<<C语言程序设计>>
#include "stdio.h" void main( ) { int i,sum=0;
C语言程序设计第5章-5.5
else continue ; printf(“#”);} printf(“$\n”); } A *#*#*#$ B #*#*#*$ C *#*#$ D #*#*$
5.5.2 练习题
一.选择题 6.若有如下语句
int x=3; do{printf(""%d\n",x-=2);}while(!(--x)); 则上面程序段______。 (A)输出的是1 (B)输出的是1和-2 (C)输出的是3和0 (D)是死循环 7.下面程序的运行结果是_______。 #include “stdio.h” main( ) { int y=10; do {y--;} while(--y); printf(“%d\n”,y--);} A –1 B 1 C 8 D 0
{s=1; for(j=k;j<6;j++) s+=j; } printf("%d\n",s); getch();}
(A)9 (B)1 (C)10 (D)12
5.5.2 练习题
一.选择题
11.以下程序的输出结果是_______。 #include "stdio.h"
main() {int i=5; for(;i<15;) { i++; if(i%4==0)
if(t<3) break; } 下面描述正确的是_______。 A 其中循环控制表达式与0等价 B 其中循环控制表达式与‘0’等价 C 其中循环控制表达式是不合法的 D 以上说法都不对
5.5.2 练习题
一.选择题
3.执行语句for(i=1;i++<4; );后变量i的值是______. (A)3 (B)4 (C)5 (D)不定 4.以下for循环的执行次数是_______。 for(x=0,y=0 ; (y=ห้องสมุดไป่ตู้23)&&(x<4) ; x++); (A) 是无限循环 (B )循环次数不定 (C) 执行4次 (D )执行3次 5.下面程序的运行结果是_______。 #include “stdio.h” main( ) { int j; for(j=1 ; j<=5 ; j++) {if(j%2) printf(“*”);
5.5.2 练习题
一.选择题 6.若有如下语句
int x=3; do{printf(""%d\n",x-=2);}while(!(--x)); 则上面程序段______。 (A)输出的是1 (B)输出的是1和-2 (C)输出的是3和0 (D)是死循环 7.下面程序的运行结果是_______。 #include “stdio.h” main( ) { int y=10; do {y--;} while(--y); printf(“%d\n”,y--);} A –1 B 1 C 8 D 0
{s=1; for(j=k;j<6;j++) s+=j; } printf("%d\n",s); getch();}
(A)9 (B)1 (C)10 (D)12
5.5.2 练习题
一.选择题
11.以下程序的输出结果是_______。 #include "stdio.h"
main() {int i=5; for(;i<15;) { i++; if(i%4==0)
if(t<3) break; } 下面描述正确的是_______。 A 其中循环控制表达式与0等价 B 其中循环控制表达式与‘0’等价 C 其中循环控制表达式是不合法的 D 以上说法都不对
5.5.2 练习题
一.选择题
3.执行语句for(i=1;i++<4; );后变量i的值是______. (A)3 (B)4 (C)5 (D)不定 4.以下for循环的执行次数是_______。 for(x=0,y=0 ; (y=ห้องสมุดไป่ตู้23)&&(x<4) ; x++); (A) 是无限循环 (B )循环次数不定 (C) 执行4次 (D )执行3次 5.下面程序的运行结果是_______。 #include “stdio.h” main( ) { int j; for(j=1 ; j<=5 ; j++) {if(j%2) printf(“*”);
C语言-循环结构程序设计课件
{
int i=1,sum=0;
while (i<=100)
{少
不能 复合语句
sum= sum+ i;
i++; }
不能丢,否则循环 永不结束
printf("sum=%d“,sum);
return 0;
}
6
5 . 1 用 while 语 句 实 现 循 环
• 要求输出 100 ~ 200 之间的能被 3 整除的数。
n+ + ; } return 0;
}
7
思考和总结:循环必须包含的几个要素?
int main()
表达式1:初始化
{
int i=1,sum=0;
表达式2:判断循环是 否继续的条件
while (i< =100) {
✓循环变量初始化
sum= sum+ i; i++; } printf("sum=%d“, sum);
l一个表达式内可以包含多 个,用逗号隔开。
(1) for(sum=0, i=1; i<=100; i++) sum=sum+i;
(2) int i,j; for(i=0,j=100 ; i<=j; i++,j-- ) k=i+j;
l表 达 式 可 省 略 ( 1 至 3 ) , 但“; ”不能省略。
编程思路:
① 对100到200之间的每一个整 数进行检查
② 如果能被3整除,输出,否 则不输出
③ 直到200为止
# include< stdlib. h> int main( )
{
int n=100; while( n< = 2 0 0 ) {
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
i++;
putchar(‘*’); i++; { putchar(‘*’);
i++; }
8
资料仅供参考
5.2 do--while语句
1、do--while语句 常称为“直到型” 循环语句。
循环体
非零
表达式 零
9
2、do--while的形资式料仅供参:考
#incdluode <stdio.h>
main() 循环体; { winht iil,esu(表m=达0;式);
(1,1,2,3,5,8, …)
fibonacci数列满足下面递归关系:
F1=1
(n=1)
F2=1
(n=2)
Fn=Fn-1+Fn-2 (n≥3)
分析:
1 1 2 3 5 8 13‥ a+ ba
b+ a b a + b a b + a b ‥‥
a=1,b=1
for i=1 to 10 输出a,b
a=a+b b=b+a
当i=3时,结束本次
循环pr体in的t执f("行\n%d",i
资料仅供参考
break与continue的区别
break语句 continue语句
for( e1;e2;e3) {…
if(e) break; … }
for( e1;e2;e3) {…
if(e) continue;
计算e1
计算e1
0
e2
0 e2
6即为24c)求2个整数的最大公约数
#include <stdio.h> main() { int a,b,t;
scanf(“%d,%d”,&a,&b); while(b<=10)
{ t=a%b; a=b;
运行过程: tab =========
24
}
资料仅供参考
循环终止条件的种类:
1.关系表达式: 如前几例 2.逻辑表达式: for (; a>b && x<y ;) 3.字符表达式:
for (; (c=getchar()) != ‘\n’;) printf(“%c”,c);
25
资料仅供参考
5.4 goto语句
1、 无条件转移语句; 形式:goto 标号; 满足标识符的规定
main () { int i,sum=0;
i=1; while(i<=100) { sum=sum+i;
i++ ; } printf(“%d\n”,sum); }
11
main() { int i,sum=0;
i=1; do { sum=sum+i;
i++; }while(i<=100); printf(“%d\n”,sum); }
循环变量 控制
说明:
– for语句中expr1, expr2 ,expr3 类型任意,都 可省略,但分号;不可省
– 无限循环: for(;;) – for语句可以转换成while结构
14
资料仅供参考
sum=0;
for(i=1;i<=100;i++)
sum=sum+i;
它相当于以下语句:
i=1;
表达式1;
输入abcdefg.输出abcdefg.
while(putchar(getchar( ) )!=’.’ ) ;
19
资料仅供参考
例:#include<stdio.h> main( ) { int i;=0; for(i;=i<01;i0<;1i+0+;i)++) putchar(‘a’+i); }
例运:行#结inc果lu:dea<bstcddioe.fhg>hij
10*10=100
5
资料仅供参考
例 (ch5_03.c)求2个整数的最大公约数
思考:24和42的最大公约数=? 公式:gcd(a,b)=gcd(b,a%b)
则 gcd(42,24) =gcd(24,42%24)=gcd(24,18) =gcd(18,24%18)=gcd(18,6) =gcd( 6, 18%6 )=gcd(6,0)
main( ) { int i=0;
for(;i<10;)putchar(‘a’+i),i++) ; putchar(‘a’+(i++));
}
20
main()
资料仅供参考
{ int i,j,k;
for(i=1,j=100;i<=j;i++,j--)
{ k=i+j;
printf("%d+%d=%d\n",i,j,k);
如: sum=0,i=1;
for(;;)
{ if(i>100) break;
sum=sum+i; i++;
}
18
(6)循环体为空语资料句仅供参考 对for语句,循环体为空语句的一般形式为: for (表达式1;表达式2;表达式3) ;
如:for(sum=0,i=1;i<=100;sum+=i, i++) ; 又如: 要在显示器上复制输入的字符,输入的字符为‘.’ 时, 结束循环。
如: for(sum=0,i=1;;i++)
{ if(i>100) break; sum=sum+i;
16
}
(3)表达式3也可以资料仅供省参考 略,但此时保证循环能 正常结束。
如:for(sum=0,i=1;i<=100;)
{ sum=sum+i;
i++;
}
(4) 可以省略表达式1和表达式3,只有表达 式2。
while (i<=100) while(表达式2)
{ sum=sum+i; { 语句;
i++;
表达式3;
}
}
15
资料仅供参考
3、for语句中表达式的省略
(1)for语句一般形式中的“表达式1”可以 省略;
如: sum=0;i=1;
for ( ; i<=100;i++)
sum=sum+i;
(2)表达式2省略,即不判断循环条件,循 环无终止地进行下去;
3
资料仅供参考
例 (ch5_01.c)求1+2+3+4+5+···+100。
#include <stdio.h>
main()
循环条件
{ int i,sum=0;
循环初值
i=1;
while(i<=100)
循环变量增值
{ sum=sum+i; i++;
循环终值
}
printf("%d",sum);
}
循环体
4
思考:求10!
资料仅供参考
例 (ch5_02.c)显示1~10的平方
#include <stdio.h> main() { int i=1;
while(i<=10) {
printf("%d*%d=%d\n",i,i,i*i);
i++; } }
运行结果: 1*1=1 2*2=4 3*3=9 4*4=16 5*5=25 6*6=36 7*7=49 8*8=64 9*9=81
main()
{ int i;
{ int i;
for(i=1;i<=5;i++)
for(i=1;i<=5;i++)
{ printf("\n%5d",
i);
1 2
p12rintf("%125d1"2,i);
}3 3
3
44
} 55
44 55
30
{ printf("\n%5d"
,i);
if(i==3) continue;
资料仅供参考
循环结构
循环:就是在给定的条件成立时反复
执行某一程序段,被反复执行的程序
段称为循环体。
在C语言中可以用以下语句来实现循 环:
1、用while语句; 2、用do--while语句; 3、用for语句;
1
资料仅供参考
5.1 while语句
1、while 语句 常称为“当型”循环语句。
表达式 零 非零
解法二:
资料仅供参考
分析: 1 1 2 3 5 8 13‥
a+ bc a+ b c a + b c
a + b c ………… 程序:main()
{ int i,a,b;
a=b=1;
printf("%10d%10d",a,b);
for(i=3;i<=20;i++)
{c=a+b; printf("%10d",c);}
{ printf("\n%5d", { printf("\n%5d",i
i); 1 1
);
prin2 tf(2"%5d",i);
if(i==1 3) 1break;
} }
29
33 44 55
22 3
printf("\n%d",i); 当} i=3时,结束循环