C语言程序设计教程 (第2版)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
前必须给循环控制变量赋值,形式为: <初始表达式>; for(;<条件表达式>;<循环表达式>) <循环体语句>
2.<条件表达式>一般不可省略,否则为无限循环。 例如:
for(i=1;; i++) sum =sum+i;
相当于条件总为真,程序会一直不停地执行直到“数据溢出”。
5.1 for语句
3.<循环表达式>亦可省略,但在循环语句 体中必须有语句来修改循环变量,以使条 件表达式的值在某一时刻为假,使程序能 正常结束循环。
T count=count+1
输出 count 结束
5.2 while语句
例8:阅读练习:
【例5-8】 编写程序,进行学生某门 课程成绩的分类统计。从键盘输入 每位学生的成绩等级,以大小写的A、 B、C、D和E表示成绩等级,A为最 高,D为最低。统计出总人数及各成 绩段的人数,忽略回车键和空格键,
5.2 while语句
例7:编写程序,统计从键盘输 入的字符个数(回车换行符也 是一个字符),当遇到结束标 志时程序结束。
开始
count=0
(ch=getchar())!=EOF
F
分析:关键是循环计数。
设置一个累加器count(初值 为0),每次从键盘输入一个 字符,只要该字符的值不等于 结束标志,累加器的值就增1: count=count+1;
5.1 for语句
算法流程图如图所示: 虚线框内是内层循环,用 来输出每一行的n个*号。
程序: example5_3.c 思考:
怎样利用for循环的嵌套, 输出更多有规律的平面图 案。 关键:找出图案的规律。
5.1 for语句
例4:编写一个可以为小学生提供加法、减法和乘法的二元 算术运算练习的程序,计算100以内的两个数的和、两个 数的差和两个数得的积,每次测试10 个题目,依次由学 生输入答案,并由计算机判断输入的答案是否正确,最后 由计算机给出简单评价。
5.2 while语句
例5:改写程序,将例5-1所示的简单 几何级数求和问题用while语句来实 现。 (阅读、思考、比较)
5.2 while语句
例6:编写程序,从键盘输入
一个正整数n,求n!。
分析: n!=n*(n−1)*(n−2)*…*2*1 (约定:n≥0,0!=1) 计算机在计算阶乘时,是从 1开始计算直到n为止。 用i代表循环变量,s代表n! 的结果值,则循环计算表达 式:s=s*i,即可求得n!。
正整数a、b(a<b),求它们之间的几何 ib
级数ia的i 和,数学表达式为 : 分析:
①所求级数和的初值和终值由键盘任意 输入;
②题目要求初值a<b,并且a>0,b>0;
5.1 for语句
程序流程图:
程序:example5_2.c
思考:
①该算法的缺点;
②设计更好的算法。
ib
③假如输入的数ia i 可ia 以为任意
循环结构,内层虚线框为if结构。 程序: example5_11
float pi=3,14159, area; int r;
r=1
F
r≤10
T area=pi*r*r
area>100 T
break;
F
输出 r, area r++
输出跳出循环的 r, area 值 结束
5.4 用于循环中的break语句和continue语句
100
例1:编写程序,求几何级数之i 和: i 1
分析: 该数学表达式为1+2+3+…+100。 设:sum为级数的和(初值为零);
i为循环变量; 将i从1按步长为1增加到100,循环 计算: sum=sum+i; 求得该级数的和。
5.1 for语句
for语句所具有的特性。 1.<初始表达式>可以省略,但须保留分号(;),同时在for之
5.3 do-while语句
do_while语句的一般形式为: do { <循环体语句>
<循环体语句>
}while(<条件表达式>);
do_while语句的语法功能: 1.执行<循环体语句>, 2.计算<条件表达式>;
T
表达式的值≠0
பைடு நூலகம்
F
若该表达式的值为“真”,则执行步骤1;
若该表达式的值为“假”,则退出循环语句结构。
逗号表达式中各表达式的功能。 例如:
for (sum=0, i=1; i<=100; i++, i++) 相当于:
sum=0; for(i=1; i<=100; i=i+2) 7.for循环也可以嵌套,执行时是先执行最里层的循环,再 执行其外一层的循环。
5.1 for语句
例2:编写程序,从键盘输入两个不等于零的
分析: ①根据题意,组成算术表达式的操作符有3种形式:
+、−、*,分别用1、2、3来代表。 ②用ops表示操作符,a,b分别代表两个操作数; ③ a,b和ops由计算机随机生成,并计算表达式的值result ; ④用户输入表达式的结果input; ⑤将input与result进行比较;
⑥通过比较的结果,给出对计算结果的评价。
③ for循环适合于循环次数确定的情况。 ④ 对大多数问题,do_while、while和for循环
5.3 do-while语句
100
例9:求几何级数的和: i i 1
用do_while语句的形式实现。
分析:循环变量i的值从1~100递增,i
开始
初始化循环变量 i=1 级数的和 sum=0
的初值为1、终值为100, 累加器sum的初值为0 循环计算:sum=sum+i。
5.1 for语句
开始
定义整型变量 i, right=0, error=0
程序算法流程图如图所示: 定义整型变量 a, b, op, result, input 定义字符型变量 ops
程序:example5_4.c
程序特别处理:如果(a>b),
计算(a−b);否则计算 (b−a)。
i<N
N
Y
随机生成 a, b, ops; 用 switch 生成算术表达式;
算法流程图如图所示。 程序:exam5_9.c
sum=sum+i; i++;
T
i≤100
F 输出 sum
结束
5.3 do-while语句
例10:编写程序,从键盘输入x的值,求
sin x x x3 x5 x7 L ,直
3! 5! 7!
到最后一项绝对值小于le−7(即10−7)为止(注:x为弧度
值)。
分析:关键是对多项式进行分解计算。
① 第1项为x;
x2 n(n 1)
②从第2项开始,每一项都是前一项乘以一个因子:
(n=3,5,7,9……)
③用s代表sin x的值,s的初值为0;
用t代表每一项的值,t的初值为x;t
t
(
n
x2 ( n 1)
)
从第2项开始,后面每1项的值为:
(n=3,5,7,9……)
5.1 for语句
for (<初始表达式>;<条件表达式>;<循环表达式>) {
<循环体语句> }
for语句的语法功能: 1.计算<初始表达式>的值。该表达式是对循环控制
变量进行初始化。
2.判断<条件表达式>的值。该表达式就是循环条件, 若该表达式的值为“真”,则执行<循环体语句>; 若该表达式的值为“假”,则退出循环,执行循环 结构外的语句。
①循环结构中若采用了break语句,其算法结构属于非结构 化的设计。
②用于结束当前循环语句的break语句都可以修改成不使用 break语句的形式。
例如:
for(sum=0, i=1; i<=100;) {
sum = sum +i; i++; }
4.3个表达式均省略,即for(;;),为无限循
5.1 for语句
5.条件表达式可以是关系表达式、数值表达式。只要表达 式的值不等于零,就执行循环体语句。 如:
for( i=0; (c=getchar())!='\n';i+=c); 6.初始表达式、循环表达式可以是逗号表达式,用来完成
do_while语句的流程图如图所示
注意:要避免出现无限循环而发生错误。
5.3 do-while语句
集中循环的特点比较:
① do_while与while和for循环的区别: do_while循环中的<循环体语句>至少会执行 一次;
而while和for循环中的<循环体语句>有可能 一次也不被执行。
② for循环和while循环的算法流程图描述是一 致的。
C语言程序设计教程 (第4版)
第5章 循环结构
第5章 循环结构
本章主要内容
1. for循环语句结构 2. while循环语句结构 3. do-while循环结构 4. break和continue语句的作用 5. 循环结构的嵌套 6. 案例分析
第5章 循环结构
循环就是重复地执行某些语句。 程序中的循环次数是有限的,由循环条件决定
T
fabs(t)≥le–7
F 输出结果:sin(x)的值
结束
5.4 用于循环中的break语句和continue语句
1.break语句 break语句可用于分支结构和循环语句结构。 break语句的作用:
跳出当前的控制结构。 在循环语句中,要谨慎使用break语句。
常用于循环语句体内某一个if条件分支的语
可以确定循环次数。 C语言提供了3种循环结构语句:
① for语句 ② while语句 ③ do_while语句
5.1 for语句
for语句是一种计数循环。循环次数由循环变量来控 制。
for语句的一般形式为: for (<初始表达式>;<条件表达式>;<循环表达式>) { <循环体语句> }
for语句的3个重要的组成部分: 1.初始表达式——初始化循环控制变量。 2.条件表达式——测试循环条件。 3.循环表达式——更新循环控制变量的值。
关于while语句的几点说明。
1.<循环变量表达式>不可缺少,其作用是更新计算循环变 量的值,使循环能正常结束。
2.若没有<循环变量表达式>,则有可能会使程序出现无限 循环而发生错误。
3.由于while循环是先判断<循环表达式>的值,后决定是否 执行<循环体语句>,因此,<循环体语句>有可能一次也没 有执行。
5.3 do-while语句
算法流程图如图所示。 程序: example5_10.c
思考: ① 程序怎样控制计算的精度? ② 可否用while和for循环来实现? ③ 其他算法。
开始
double s, t, x; int n=1
输入 x 的值
s=0; t=x;
s=s+t; n=n+2; t=t*(–x*x)/(n*(n–1));
循环语句
循环变量表达式
}
<循环语句>和<循环变量表达式>一起构成循环体语句。
while语句的语法功能:
1.计算<循环表达式>的值,若该值为“假”,则跳出循环, 执行循环体后面的语句;若该值为“真”,则执行循环体 语句。
2.重复步骤1的操作。 while语句的流程图如图所示
5.2 while语句
while(<循环表达式>) { 循环语句; 循环变量表达式; }
整数,
i
ib
如果a≤b,计算 ;
如果a>b,则计算 。
5.1 for语句
例3:编写程序,从键盘输入m和n的值,用符号“*”在屏幕 上打印出如下所示具有m行n列的矩形图案。
******* ******* ******* ******* ******* ******* ******* *******
分析: ①图案有规律,共有m行,每行有n个*号。 ②可采用循环嵌套的方式: 第1层(外层)控制行数,用i来表示,输出m行“*” ; 第2层(内层)控制列数,用j来表示,输出n列“*” 。
3.计算<循环表达式>的值。该表达式更新循环控制 变量的值。
4.转第2步。
5.1 for语句
for语句的流程图:
注意: ①若<循环体语句>中
有多条语句,则构 成复合语句,被包 含在一对花括号中。 ②若<循环体语句>只 有一条,可以不使 用花括号。
初始表达式
条件表达式
F
T 语句体
循环表达式
5.1 for语句
5.4 用于循环中的break语句和con开始tinue语句
例11:编写程序,求圆面积在100平方 米为以内的半径,输出所有满足条件 的半径值和圆面积的值,并输出第1 个大于100的圆半径和圆面积。
分析:计算圆面积的表达式为:r2。 ① 依次取半径为1,2,3…,循环计算
圆的面积area; ② 当area>100时结束。 算法流程图如图所示,外层虚线框为
思考:
用户输入运算结果; 判断用户输入结果的对错;
1.如果每次测试的题目不止 10个,需要怎样修改算法 和程序?
i++ 输出对错统计结果
2.如果要求程序在结束了一
结束
5.2 while语句
while语句的一般形式为: while(<循环表达式>) { 循环语句; 循环变量表达式;
循环表达式≠0
F
T
相关文档
最新文档