第5章循环结构
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 ” ) ; /*换行打印*/
循环结构及其应用
【编程思路】
定义变量i表示圆的半径,使其从1递增到10。循环中计算并判断每个圆的面积 值是否大于100,不大于100时,输出圆面积,如果大于100,则使用break 跳出循环即可。
【程序代码】
#include "stdio.h"
#define PI 3.14159
main( )
{
int r;
float area;
{
sum=sum+i; /*累加*/
i++;
/*变为下一个加数*/
} printf("sum=%d\n",sum); /*输出计算结果*/
}
5.2.2 do-while语句
❖ do-while语句属于直到型循环,其一般形式为:
do {
循环体语句 }while (表达式);
❖ do-while语句的执行过程是:
printf("%d is a prime number\n”,m); /* m是素数 */
else printf("%d is not a prime number\n”,m); /* m不是素数 */
}
本例中用到了breakБайду номын сангаас句。在switch语句中我们已 经接触过break语句,它的功能是终止选择执行, 跳出switch语句,那么在循环结构中使用break 语句,其作用是终止循环的执行,即跳出循环语 句。
main( )
{
int n;
for (n=100;n<=200;n++)
{ if (n%3!=0) /*判断n是否能被3整除*/ printf("%d ”,n); /*不能整除时输出n的值 */
循环结构
第5章 循环----三类循环
for语句的一般形式为: for (<初始表达式>;<条件表达式>;<循环表达式>) { <循环体语句> } 1.计算<初始表达式>的值。该表达式是对循 环控制变量进行初始化。 2.判断<条件表达式>的值。该表达式就是循 环条件,若该表达式的值为“假”,则退出循 环,执行循环结构外的语句;若该表达式的值 为“真”,则执行<循环体语句>。 3.计算<循环表达式>的值。该表达式更新循 环控制变量的值。 4.转第2步。
课堂练习: 求1,1+2,1+2+3...... 数列中前n项的值
第5章 循环---数列问题
【例5-3】编写程序,从键盘输入x的值, x x , 直到最后一项 求 sin x x x 3! 5! 7! 绝对值小于le−7(即10−7)为止 (注:x为弧度值)。
3 5 7
开始
计算机导论A
第5讲 循环结构
第5章循环结构
1. for循环语句结构 2. while循环语句结构 3. do-while循环结构 4. break和continue语句的作用 5. 循环结构的嵌套 6. 案例分析
第5章 循环----导引
例5-1:计算10道简单的加、减、乘、除和取余的运算题
/*6-1 分支程序-----循环*/ #include<stdio.h> main() { int a,b,i,n; char op; printf("please input express:"); scanf("%d%c%d",&a,&op,&b); switch(op) { case '+':printf("%d+%d=%d\n",a,b,a+b); break; case '-':printf("%d-%d=%d\n",a,b,a-b); break; case '*':printf("%d*%d=%d\n",a,b,a*b); break; case '%':printf("%d%%%d=%d\n",a,b,a%b); break; case '/':if(b!=0) printf("%d/%d=%d\n",a,b,a/b); else printf("error\n"); break; }}
第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所示。
第5章-循环结构程序设计PPT优秀课件
5.3.1 前测型Do…Loop循环语句
格式:
Do [While | Until <条件表达式>] <语句块> [Exit Do] <语句块>
Loop
18
5.3.1 前测型Do…Loop循环语句
前测型Do…Loop循环的流程图
Do While…Loop流程图
Do Until…Loop流程图
条件表达式 值为真?
格式:
Do <语句块> [Exit Do] <语句块>
Loop [While | Until <条件表达式>]
23
5.3.1 后测型Do…Loop循环语句
说明:
后测型Do…Loop循环语句与前测型Do…Loop循环语句的主 要区别在于:
后测型要先执行一次循环体,再判断条件;而前测型要 先判断条件,然后根据判断结果决定是否执行循环体。因此 对于后测型,不管条件是否满足,循环体至少有一次执行机 会。
16
5.3 Do…Loop循环语句
导入:
Do…Loop循环也属于条件型循环,即根据条件的 成立与否来决定是否执行循环。Do…Loop循环的应 用具有很强的灵活性,主要体现在:它既能指定循环 开始条件,又能指定循环结束条件;既能构成前测型 Do…Loop循环语句,又能构成后测型Do…Loop循 环语句。
25
5.3.1 后测型Do…Loop循环语句 【例5-10】将400~600间能够被3整除的数 输出(上机练习)
【例5-11】(略)
26
5.4 循环嵌套
介绍:
一个循环结构中又包含一个或多个循环结构被称为 循环嵌套,或称多重循环。 多重循环对嵌套的层数没有限制。有几层嵌套,就 称为几重循环,如二重循环、三重循环、四重循环 等。一般地,把嵌套在一个循环体内部的另一个循 环结构称为内循环;这样,嵌套了其他内循环部分 的循环结构就称为外循环。 为了使多重循环结构具有较好的可读性,通常用缩 进方式书写相应的源代码。
C语言程序设计:第5章 循环结构
12
do...while语句(cont...)
课堂练习: 1.输出1---n之间的数,其中n从键盘输入。
int main(void) {
//1.定义变量i和n //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:输出i的值 return 0; }
} 相当于 while(1) {
}
26
小结
❖for(i=m;i<n;i++)//循环次数:n-m次 ❖for(i=m;i<=n;i++)//循环次数:n-m+1次
27
循环语句的练习
课堂练习: 1.输出n---1之间的数,其中n>1且n从键盘输入。 2.计算1*2*3*...*n的值(n的阶乘n!), 其中n从键盘输入。 3.计算10- 1/2 - 1/3 -....1/n的值 以上练习分别以while、do...while、for语句实现
int main(void) {
//1.定义变量i,n,sum //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:累加i的值 //7.输出计算结果 return 0; }
24
for语句(cont...)
{
sum = sum + i;
if(sum > 100)break;
5循环结构及其应用
5.2 实现循环结构的语句
do-while语句的执行过程是: 首先执行一次循环体语句,然后计算表达式(循环条件)的值,若结 果为“真”(非零),返回执行循环体语句,重复上述过程,直到表 达式的值为“假”(零)时结束循环,流程控制转到while语句的下 一语句。 do-while语句执行流程如图5-3所示。
执行程序后得到的输出结果为: 程序分析: 从本例可以看到,循环就是重复执行某些操作,本例用while语句来 实现这一循环过程,其中条件i<=30成立与否,决定着循环是否继续 进行,因此称之为循环条件,程序中被重复执行的语句称为循环体语 句,比如语句{ printf(“*”);i++; }。图5-1是本例的循环结构执行流程。 循环结构是程序的第三种基本结构。用循环结构解决问题的关键就是 找出循环继续与否的条件和需要重复执行的操作即循环体语句。 程序设计中任何循环都必须是有条件或有限次的循环,一定要注意避 免循环一直进行无法正常结束的情况(即死循环)发生。
上一页
下一页
返 回
5.2 实现循环结构的语句
【例5-2】显示1~10的平方。 【编程思路】 (1)定义变量i,并赋初始值1,用i来表示底数和行数,让i在循环体 中递增加。 (2)循环结束条件为i<=10,即底数增加到10的时候进行最后一个循 环。 (3)循环体中使用printf函数输出平方数。 【程序代码】 #include "stdio.h" main( ) { int i=1; while (i<=10) /* 循环条件*/ 上一页 下一页 返 回
上一页
下一页
返 回
5.2 实现循环结构的语句
【例5-5】求n!,即求n的阶乘,n由键盘输入。 【编程思路】 求阶乘实际上是求累乘,即求1*2*3*……*n。累乘与累加除运算类型 不同外,其执行过程相同。 程序代码】 #include "stdio.h" main( ) { int i=1,n; long s=1; printf("please input n:"); scanf(“%d”,&n); 上一页 下一页 返 回
Python语言程序设计第五章循环结构程序设计
14
第5章
循环结构程序设计
5.2 for语句 结构
1. for语句一般形式: for 目标变量 in 序列对象: 循环体语句 说明:
for语句的首行定义了目标变量和遍历的序 列对象,后面是需要重复执行的语句块。语 句块中的语句要向右缩进,且缩进量要一致。
15
第5章
循环结构程序设计
注意:
(1)for语句是通过遍历任意序列的元素来建立 循环的。 (2)for 语句也支持一个可选的else块,一般格 式如下: for 目标变量 in序列对象: 语句块 else: 语句
5
第5章
循环结构程序设计
在while语句中使用else子句
while exp: 循环体 else: 语句
Python可以在循环语句中使用else子句,即构 成了while.......else循环结构。
6
第5章
循环结构程序设计
例 :求
100
n 1
n
开始 sum,n=0,1 n<=100
1)问题分析:
29
第5章
循环结构程序设计
5.4 循环控制语句
有时候我们需要在循环体中提前跳 出循环,或者在某种条件满足时,不执行 循环体中的某些语句而立即从头开始新的 一轮循环,这时就要用到循环控制语句 break、continue和pass语句。
30
第5章
循环结构程序设计
(1) break语句
一般格式 break 功能
371printdddijk40728python语言程序设计第5章循环结构程序设计第5章循环结构程序设计循环结构程序设计51while语句当型循环52for语句结构53循环的嵌套54循环控制语句55循环结构程序举例2第5章循环结构程序设计循环结构的基本类型exptaf
cyu第5章循环(新)
for( ; ; ) { printf("这将一直进行下去 这将一直进行下去"); 这将一直进行下去 i = getchar(); if(i == 'X' || i == 'x') break; }
int i=1;s=0; while(i<1) ( ) { s=s+i; i=i+1; } printf("s=%d\n",s); ( ) }
17
int i=1,s=0; do { s=s+i; i=i+1; } while(i<1); printf("s=%d\n",s);
左边的程序结果为:s=0,而右边的程序结果为 而右边的程序结果为:s=1。 左边的程序结果为 而右边的程序结果为 。
折扣(y) 无 1% 2% 5% 10%
3
本章目标
理பைடு நூலகம்为什么使用循环结构 熟练掌握while循环的使用 熟练掌握do-while循环的使用 理解while 和 do-while 循环的区别
4
循环的必要性
int a1,a2,a3, a4,a5; a1 = 1 * 10; printf("1 × 10 = %d a2 = 2 * 10; printf("2 × 10 = %d a3 = 3 * 10; printf("3 × 10 = %d a4 = 4 * 10; printf("4 × 10 = %d a5 = 5 * 10; printf("5 × 10 = %d \n",a1); \n",a2); \n",a3); \n",a4); \n",a5);
第5章 循环结构程序设计
输入学生2的三门课成绩,并计算平均值后输出
scanf(“%f,%f,%f”,&s1,&s2,&s3);
aver=(s1+s2+s3)/3;
printf(“aver=%7.2f”,aver); 要对50个学生进行相同操作
重复50次
大多数的应用程序都会包含循环结构
循环结构和顺序结构、选择结构是结构 化程序设计的三种基本结构,它们是各 种复杂程序的基本构造单元
(1) 先求解表达式1 (2) 求解表达式2,若其值为真,执行循环体, 然后执行下面第(3)步。若为假,则结束循环, 转到第(5)步 (3) 求解表达式3 (4) 转回上面步骤(2)继续执行 (5) 循环结束,执行for语句下面的一个语句
5.4用for 语句实现循环
for(i=1;i<=100;i++) sum=sum+i; 等价于 用for语句更简单、方便 i=1; while(i<=100) { sum=sum+i; i++; }
要向计算机输入全班50个学生的成绩
分别统计全班50个学生的平均成绩 求30个整数之和 教师检查30个学生的成绩是否及格
5.1为什么需要循环控制
例如:全班有50个学生,统计各学生 三门课的平均成绩。
输入学生1的三门课成绩,并计算平均值后输出 scanf(“%f,%f,%f”,&s1,&s2,&s3); aver=(s1+s2+s3)/3; printf(“aver=%7.2f”,aver);
n 1
100
5.3用do---while语句实现循环
解题思路:
sum=0 i=1 sum=sum+i i=i+1
单元五:循环结构
while循环
Java的循环语句有while、do-while、for循环, 这些语句实现了通常所称的循环。
一个循环重复执行同一套指令直到一个结束条 件出现
5
while循环格式
while语句是Java最基本的循环语句。当它的控 制表达式是真时,while语句重复执行一个语句 或语句块
7
示例
能把j++去掉吗?
//不再重复劳动 int i = 3,j=0; while( j<5){ //条件
//要做的事
System.out.println(++i);
j++; //变化 }
8
循环四要素
起点 终点 做什么事 起点到终点如何变化
int i = 3,j=0;//起点 while( j<5){ //条件
2
本章目标
理解循环四要素 掌握while循环 掌握do-while循环 掌握for循环
3
为什么要使用循环
问题:打印某个数字后的5个数字
int i = 3; System.out.println(++i); System.out.println(++i); System.out.println(++i); System.out.println(++i); System.out.println(++i);
Java 初学者
第5章:循环结构
上节回顾
if-else语句根据判定条件的真假来执行两种操 作中的一种
嵌套if语句是指该if语句为另一个if或者else 语句的对象
第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 循环结构程序举例
5.循环结构
补充说明: 补充说明: (2) 如果表达式2省略,即不判断循环条件,循环无终 止地进行下去.也就是认为表达式2始终为真. 例如: 例如:for(i=1; ;i++) sum=sum+i; 表达式1是一个赋值表达式,表达式2空缺.它相当于: i=1; while(1) {sum=sum+1;i++;}
补充说明: 补充说明: (7) 表达式一般是关系表达式(如i<=100)或逻辑表达式 (如a<b && x<y),但也可以是数值表达式或字符表达 式,只要其值为非零,就执行循环体.
5.5 用for 语句实现循环
补充说明: 补充说明: ① for(i=0;(c=getchar())!=′\n′;i+=c); 在表达式2中先从终端接收一个字符赋给c,然后判 断此赋值表达式的值是否不等于′\n′(换行符),如 果不等于′\n′,就执行循环体.即不断输入字符, 将它们的ASC∏码相加,直到输入一个"换行"符为止. . 注意: 注意:此for语句的循环体为空语句,把本来要在循环 体内处理的内容放在表达式3中,作用是一样的.可见 for语句功能强,可以在表达式中完成本来应在循环体 内完成的操作.
5-5. 用for 语句实现循环
补充说明: 补充说明: (5) 3个表达式都可省略,如: 如 for(; ;) 语句 相当于 while(1) 语句 即不设初值,不判断条件(认为表达式2为真值), 循环变量不增值.无终止地执行循环体.
5-5. 用for 语句实现循环
补充说明: 补充说明: (6) 表达式1可以是设置循环变量初值的赋值表达式, 也可以是与循环变量无关的其他表达式.如: 如 for (sum=0;i<=100;i++) sum=sum+i; 表达式3也可以是与循环控制无关的任意表达式.
C08第5章 循环结构
return
新编C语言程序设计教程
5.2.2 for循环结构用法
输出100以内奇数之和与偶数之和。 100以内奇数之和与偶数之和 例5-6 输出100以内奇数之和与偶数之和。
新编C语言程序设计教程
例5-7 输入两个正整数m和n , 求它们的最小公倍数。
分析:用穷举法。循环变量i的可能取值为: 分析:用穷举法。循环变量i的可能取值为:m, 2*m, n*m。 3*m, ..., n*m。
新编C语言程序设计教程
清华大学出版社
周二强
zeq@ 软件学院
计算机科学与工程系
配套视频: 配套视频: 博客: 博客:/stunt
第5章 循环结构
while循环结构 5.1 while循环结构
5.1.1 while循环结构分析 5.1.2 while循环结构用法
return
新编C语言程序设计教程
break语句和continue语句 语句和continue 5.3 break语句和continue语句
程序5 程序5-7出现逻辑错误的原因在于找到最小公倍数后没 有及时终止循环。 有及时终止循环。循环执行期间当满足了某种条件需要立 即终止循环的执行时可以采用多种方法,其中使用break 即终止循环的执行时可以采用多种方法,其中使用break 语句最方便。break语句在前面用来终止switch结构的执 语句最方便。break语句在前面用来终止switch结构的执 语句在前面用来终止switch 行,当循环执行到break语句时循环结构也将立即退出执 当循环执行到break语句时循环结构也将立即退出执 break 行。 在程序5 的循环结构中加一条break语句就可以排除逻 在程序5-7的循环结构中加一条break语句就可以排除逻 break 辑错误。 辑错误。
第5章 循环结构
第5章循环结构1、有以下程序#include <stdio.h>main(){ int y=10;while(y--); printf("y=%d\n", y);}程序执行后的输出结果是A) y=0B) y=-1C) y=1D) while构成无限循环参考答案:B【解析】执行y - -直到值为0,由于y - -是先用再减,所以退出循环时,y的值为-1。2、有以下程序#include <stdio.h>main(){ int k=5;while(--k) printf("%d",k -= 3);printf("\n");}执行后的输出结果是A) 1B) 2C) 4D) 死循环参考答案:A【解析】--k先自减在使用,所以第一次判断条件即为while(4),条件为真执行打印k的值k=4-3,结果为1,第二次判断条件即为while(0),条件为假,结束循环,打印回车换行符。所以选择A选项。3、关于"while(条件表达式)循环体",以下叙述正确的是A) 循环体的执行次数总是比条件表达式的执行次数多一次B) 条件表达式的执行次数总是比循环体的执行次数多一次C) 条件表达式的执行次数与循环体的执行次数一样D) 条件表达式的执行次数与循环体的执行次数无关参考答案:B【解析】while循环是先判断条件,满足条件后执行循环体,执行完后接着判断条件,执行,直到最后一次判断条件后不成立,跳出循环,所以最后一次执行了条件表达式,但是没有执行循环体,所以选择B选项。4、设有以下代码do {while (条件表达式1)循环体A;} while (条件表达式2);while (条件表达式1){do {循环体B;} while (条件表达式2);}其中,循环体A与循环体B相同,以下叙述正确的是A) 循环体A与循环体B的执行次数相同B) 循环体A比循环体B的执行次数多一次C) 循环体A比循环体B的执行次数少一次D) 循环体A与循环体B的执行次数不确定参考答案:A【解析】while循环语句一般形式为:while(表达式){循环体},执行过程为:首先判断表达式,成立(非0)则执行循环体,不成立(0)则退出循环。
C语言程序设计教程(第4版)_第5章_循环结构
5.1 for语句
程序流程图: 程序:example5_2.c 思考: ①该算法的缺点; ②设计更好的算法。 ③假如输入的数可以为任意整数, 如果a≤b,计算 i ; 如果a>b,则计算 i 。 请设计算法并编写程序验证。
i b ia ia i b
5.1 for语句
例3:编写程序,从键盘输入m和n的值,用符号“*”在屏幕 上打印出如下所示具有m行n列的矩形图案。 ******* ******* ******* ******* ******* ******* ******* ******* 分析: ①图案有规律,共有m行,每行有n个*号。 ②可采用循环嵌套的方式: 第1层(外层)控制行数,用i来表示,输出m行“*” ; 第2层(内层)控制列数,用j来表示,输出n列“*” 。
100
5.1 for语句
for语句所具有的特性。 1.<初始表达式>可以省略,但须保留分号(;),同时在for之 前必须给循环控制变量赋值,形式为: <初始表达式>; for(;<条件表达式>;<循环表达式>) <循环体语句> 2.<条件表达式>一般不可省略,否则为无限循环。 例如: for(i=1;; i++) sum =sum+i; 相当于条件总为真,程序会一直不停地执行直到“数据溢出”。
5.2 while语句
例7:编写程序,统计从键盘输入的字 符个数(回车换行符也是一个字符) ,当遇到结束标志时程序结束。 分析:关键是循环计数。
开始 count=0
(ch=getchar())!=EOF
F
设置一个累加器count(初值为0),
每次从键盘输入一个字符,只要该字 符的值不等于结束标志,累加器的值 就增1:count=count+1; 算法流程图如图所示。 程序: example5_7.c
《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语言程序设计》课件-第五章循环结构程序设计
2023/4/2
5.3 do-while语句
15
语句一般格式
do
{语句组} while (表达式);
功能:
– 先执行内嵌语句(循环体),之后计算 表达式的值,不为0(逻辑真)时,再 执行循环体并判断条件,直到表达式的 值为 0 结束循环,转去执行while下面 的语句。
2023/4/2
do-while循环的算法
for(n=100;n<=200;n++) {
if (n%7!=0) continue;
printf("%6d",n); j++; if (j%10==0)
printf("\n"); } printf(" \n j=%d\n",j); }
29
2023/4/2
5.5.2 循环中break的应用
30
功能:
}
无循环体
} 循环体
2023/4/2
5.5 循环结构中的跳转语句
25
有如下三种语句实现跳转: – continue语句 – break语句 – goto语句
功能:在循环语句的循环体中使用,可 以进行循环的流程控制
2023/4/2
5.5.1 continue语句及应用
26
功能:
– 中断循环体的本次执行(即跳过循环体中尚未 执行的语句),立即开始执行下一次循环。
– 利用break语句能够强迫终止本层循环, 转到后续语句执行。
while语句
表达式? N
Y
… break;
…
do-while语句
… break;
…
表达式? N
Y
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第5章循环结构第五章循环结构一、单项选择题(本大题共20小题,每小题1分,共20分)1.执行下面程序段后,输出字符B的个数是()x=0;while(x<=5){printf("B");x+=2;}A.0个B.3个C.5个D.6个2.在下述程序中,for循环执行的次数是()main( ){int i =0,j=10,k=2,s=0;for(; ;){i+=k;if(i>j){printf("%d\n",s);break;}s+=i;}}A.4 B.5 C.6 D.73.执行下面程序段后,输出字符A的个数是()for(i=0;i<=5;i+=2)printf(“A”);A.0个B.3个C.5个D.6个4.执行while(表达式)循环的条件是()A.当表达式的值为0时B.仅当表达式的值为1时C.当表达式的值非0时D.当表达式的值不为1时5.下列程序段输出的结果是()for(i=1;i<3;i+ +)for(j=1;j<3;j+ +)printf("%d",i+j);A.2 3 3 4 B.2 3 4C.2 3 D.23 4 3 46.对do语句while(表达式);结构的循环,下列说法正确的是()A.当表达式的值为非零时不执行循环体B.循环体至少被执行一次C.当表达式的值为零时循环体一次也不执行D.循环体仅被执行一次7.只能在循环语句中用于结束本轮循环的语句是()A.break; B.continue; C.goto D.if10.下列程序段的输出结果是()i=1;while(i<3){j=1;while(j<=i){printf(“%d”,i+j);j++;}i++;printf(“\n”);}A. 2 3 3 4B. 2 3 4C. 2 3D. 23 4 3 48.下列程序段的输出结果是()a=100;a=a+l;while(a>120);printf(“%d”,a);A.100B.101C.120D.1219.关于break和continue语句,下列说法正确的是()A.在循环体中可以用break语句结束本次循环B.在循环体中可以用continue语句结束本次循环C.break语句仅能使用在switch结构中D.可以使用continue语句跳出switch结构10.对于for(表达式l;表达式2;表达式3)语句;控制循环结束的表达式是()A.表达式1B.表达式2C.表达式3D.表达式l和表达式311.下列语句中不能..实现循环结构的语句是()A.if语句B.while语句C.do—while语句D.for语句12.以下程序的输出结果是()main(){ int y=10;while(y——);printf("y=%d",y);A.y=-1B.y=0C.y=1D.y=随机值13.关于break语句,以下说法不正确...的是 ( )A.它可以用于循环语句中B.它可以用于switch语句中C.可以从最内层循环结构中直接跳出最外层循环结构D.可以从当前switch结构中跳出14.执行下面程序段后,a的值是( )int a=100;do{a++;}while(a>120);A.100B.101C.120D.12115.在下列选项中,没有构成死循环的程序段是()A.int i=100;B.for(;;);while(1){ i=i%100+1;if(i>100) break;}C.int k=1000;D.int s=36;do{++k;}while(k>10000);while(s);--s;二、多项选择题(本大题共5小题,每小题2分,共10分)1.下列循环将会产生死循环的有()A.while(1); B.do{ }while(0);C.do{ }while(1); D.for(k=1;k>―10;k+ +); E.for(k=1;k=10;k+ +,k――);2.下列关于break、goto、continue语句的说法中正确的是()A. break语句能够用于循环语句中B. break语句不能用于switch语句中C. goto语句可以用于直接从多层循环中退出D. continue语句可用于跳出循环体E. continue语句不能用于switch语句中3.下面能执行循环结构的语句有()A.if语句B.while语句C.do—while语句D.for语句E.switch语句三、简答题(本大题共4小题,每小题4分,共16分)1.用while循环结构完成下面程序段的功能。
s=0for(i=1;i<=10;i++)s+=i;2.写出do-while语句的一般形式及其执行过程。
3.写出for语句的一般形式并分析循环体被执行的条件。
4.简述break语句和continue语句在循环体中的功能。
5.写出for语句的一般形式及执行过程。
6.设有下面程序:void main(void){int x;x=1;while(x<20){printf("x=%d\n",x);}请把程序改写为for结构。
7.下面是求1到100之和的程序main( ){int i,sum=0;for(i=1;i<=100;i++)sum+=i;printf("%d\n",sum);}问如何修改循环体,使其仅求前10个数之和。
四、阅读分析题(本大题共6小题,每小题5分,共30分)1.阅读下面程序:void main(void){int s=0,n=0,x;label: scanf("%d",&x);if(x>0){s+=x;n++;printf("s=%d,n=%d,even=%f\n",s,n,1.0,*s/n); } if(x!=0)goto label;elseprintf("good bye!");}当依次输入12 -3 -6 5 13 0↙时,写出程序的运行结果。
2.阅读下面程序,写出运行结果。
main(){int x,sum=0;loop1:scanf(“%d”,&x);{if(x%2= =0){sum+=x;printf(“sum =%d\n”,sum);}goto loopl;}sum-=x;printf( “sum=%d\n”,sum);}当程序执行时输入数据1 2 3 4 5 6 7 8 ↙,写出程序运行结果。
3.阅读下面程序,写出运行结果。
main(){int a[3][3],i,j;for (i=0;i<3,i+ +)for(j=0,j<3;j+ +)a[i][j]=i+j;for(i=0;i<3;i++){for(j=0;j<=i;j+ +)printf(“%2d”,a[i][j]);printf(“\n”);}}3.请阅读分析下列程序,然后写出程序的循环次数和运行结果。
main(void){int i;for(i=1; i<6; i+ +){if(i%2){printf("@");continue;}printf("*");}printf("\n");}4.阅读分析下面程序后,写出程序的运行结果。
#include “stdio.h”main( ){int n,m;for(n=1;n<=5;n++){for(m=1;m<=4;m++)printf("%4d",m n);printf("\n");}}5.下列程序的功能和输出结果是什么?void main(void){int k=0,total=0;while(k<=100){total+=k;k++;}print("total=%d\n",total);}6.分析下列两个程序的区别,并写出它们的运行结果。
void main(void) void main(void){ {int y=0,s,k; int y=0,s,k;for(k=0;k<6;k++) for(k=0;k<6;k++){ s=k*k; s=k*k;y+=s; y+=s;}printf("y=%d\n",y); printf("y=%d\n",y);} }7.写出下面程序的功能及运行结果。
main(){int n=1,sum=0;do{sum=sum+n;n+=2;}while(n<100);printf("sum=%d\n",sum);}8.阅读下列程序,当依次输入11,l2,l3,14,16这5个数时,请写出程序的运行结果。
void main(void){int x ,i ,s=O ;for(i=O ;i<5;i++){scanf("%d",&x);if(x%2)continue ;printf("%d\t",x);s+=x;}printf("\n");printf("s=%d\n",s);}9.阅读下列程序并写出运行结果。
main( ){int s=0,k=1,i ;for(i=0;i<10;i++){k=k+i ;s+=k ;if(i>3) break ;s+=2*k :printf("s=%d\n",s);}printf("s=%d\n",s);}五、程序设计题(本大题共2小题,每小题12分,共24分)1.用以下近似公式编一个求π的近似值的程序。
121)1(715131141--++-+-=-n n π,其中n 的值由键盘输入。
2.从键盘上输入一个正整数n(n ≤10),求n 的阶乘并输出结果。
3.从键盘上输入20个整数,求其中正数的累加和并输出结果。
4.从键盘输入10个整数,编程求其中大于3且小于100的数的平均值并输出结果。
5.编程求20至100之间素数的累加和并输出该累加和。
6.从键盘上输入30个整数,输出其中能被3整除的数,并求出所有能被3整除的数之和。