预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共27页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

C语言程序设计一、几种循环的比较 C语言中,三种循环结构都可以用来处理同一个问题,但在具体使用时 存在一些细微的差别。如果不考虑可读性,一般情况下它们可以相互代替。 循环变量初始化:while和do-while循环,循环变量初始化应该在 while和do-while语句之前完成;而for循环,循环变量的初始化可以在 表达式1中完成。 循环条件:while和do-while循环只在while后面指定循环条件;而for 循环可以在表达式2中指定。 循环变量修改使循环趋向结束:while和do-while循环要在循环体内 包含使循环趋于结束的操作;for循环可以在表达式3中完成。for循环可 以省略循环体,将部分操作放到表达式2,表达式3中,for语句功能强大。 while和for循环先测试表达式,后执行循环体,而do-while是先执行循 环体,再判断表达式。(所以while,for循环是典型的当型循环, 而do-while循环可以看作是直到型循环)。一、几种循环的比较 三种基本循环结构一般可以相互替代,不能说哪种更加优越。具体使 用哪一种结构依赖于程序的可读性和程序设计者个人程序设计的风格 (偏好)。我们应当尽量选择恰当的循环结构,使程序更加容易理解。 (尽管for循环功能强大,但是并不是在任何场合都可以不分条件使)。 例:将50-100之间的能被3整除的数输出(用三种循环结构实现)二、循环的嵌套 所谓循环的嵌套是指一个循环体内又包含了另一个完整的循环结构。C语言允许循环结构嵌套多层。循环的嵌套结构又称为多重循环。二、循环的嵌套 2.循环嵌套的执行过程 例.写出下列程序的执行结果例计算并输出10以内(包括10)所有自然数的阶乘值。即计算1!,2!,3!,4!,5!,6!,7!,8!,9!,10!。相应的C程序如下: #include"stdio.h" main() {intn,k; doubles; for(n=1;n<=10;n=n+1) {s=1.0; for(k=1;k<=n;k=k+1)s=s*k; printf("%2d!=%16.7f\n",n,s); } }例百钱买百鸡:公元5世纪末,我国古代数学家张建丘在《算经》中提出了“问题”;“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?” 此题用代数方法是无法求解的。因为有3个未知数,只有2个方程 式。设公鸡x只,母鸡y只,小鸡z只,可以列出方程: x+y+z=100① 5x+3y+z/3=100② 由于无法直接用代数方法解,可以用“穷举法”来解此问题。 分析一下x,y,z的可能取值范围:公鸡最多能买20只,故0≤x<20;母鸡最多能买33只,所以0≤y<33;在x,y确定后,自然就得出z=100-x-y。百钱买百鸡问题程序例:有一个数列,前两个数是1,1,第三个数是前两个数之和,以后每个数都是其前两个数之和,此数列的前几个数为1,1,2,3,5,8…要求输出前20个数。数列称为Fibonacii,斐波那契数列第九讲循环结构程序设计(三)三、循环控制语句 1、break语句 C语言中的break语句有以下两个功能: (1)跳出switch结构; (2)退出当前循环结构,包括while结构、do…while结构和for循环结构。 2、continue语句 continue语句的功能是结束本次循环的执行,但不退出循环结构。 下面举两个例子来说明continue语句的使用。 第七讲循环结构程序设计(一)例:输入一个整数n,判断它是否为素数。例输出100~200之间所有能被7或9整除的自然数。第五讲循环结构程序设计(二)例:输出100~200之间的所有素数。四、循环结构程序设计举例 1、密码问题 在报文通信中,为使报文保密,发报人往往要按一定规律将其加密,收报人再按约定的规律将其解密(即将其译回原文)。 最简单的加密算法是将报文中的每一个英文字母换成其后的第k个字母,例如k=3时,字母a转换为d,b转换为e,z转换为c等。例从键盘输入一行字符,将其中的英文字母进行加密输出(非英文字母不用加密)。C程序如下:解密算法C程序如下:四、循环结构程序设计举例 2、梯形法求定积分 设定积分为 由微积分的知识可以知道,该积分值的几何意义是在区间[a,b]内的曲线f(x)下的面积,如图4.12所示。 梯形法求定积分的基本思想是: 首先将积分区间[a,b]n等分,得到n个子区间[xi,xi+1](i=0,1,2,…,n-1),每一个子区间的长度为h=(b-a)/n,如图4.12所示,其中xi=a+i×h。 然后在每一个子区间上用梯形的面积 来近似代替该子区间上小长条的面积。 最后将所有小长条的面积近似值Si累加就可得到积分值的