c语言3种程序结构控制语句,C语言 Chapter 3 C程序结构及控制语句.ppt

C语言 Chapter 3 C程序结构及控制语句

3.4 循环结构 3.4.5 循环结构的嵌套 3.4 循环结构 【例3.20】编写一个程序,输入正整数k,在屏幕上输出高为k的等腰三角形。 【解】程序如下: /*文件名:lx3_20.cpp*/ #include main() { int i,j,k; printf("k:"); scanf("%d",&k); 3.4.5 循环结构的嵌套 3.4 循环结构 for (i=1;i<=k;i++)/*循环k次, 每次输出一行*/ { for (j=1;j<=k-i;j++) /*输出该行前面的空格*/ printf(" "); for (j=1;j<=2*i-1;j++) printf("$"); printf("\n"); } } 3.4.5 循环结构的嵌套 3.4 循环结构 goto语句是一种无条件转移语句,建议在程序中最好不要使用。这是因为goto语句会破坏结构化设计中的3种基本结构,并给阅读和理解程序带来困难。但在多层嵌套退出时,使用goto语句比较合理。goto语句格式如下: goto 语句标号; 3.4.6 goto语句 3.4 循环结构 其中的语句标号是用户任意选取的标识符,其后跟一个“:”,可以放在程序中任意一条语句之前,作为该语句的一个代号。执行goto语句后,程序将跳转到该标号处并执行其后的语句。另外,标号必须与goto语句同处于一个函数中,但可以不在一个循环层中。 3.4.6 goto语句 3.4 循环结构 【例3.22】采用goto语句改写例3.10的程序。 【解】程序如下: /*文件名:lx3_22.cpp*/ #include main(){ int day,x1,x2; day=9; 3.4.6 goto语句 3.4 循环结构 x2=1; loop: x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/ x2=x1; day--; if(day>0) goto loop; printf("the total is %d\n",x1); } 3.4.6 goto语句 3.4 循环结构 穷举与迭代是循环算法中的两类具有代表性的算法。 1.穷举法 穷举法也称为枚举法。基本思想是,对问题的所有可能状态一一测试,直到找到解或将全都可能状态都测试为止。 3.4.7 循环结构程序设计应用 3.4 循环结构 在穷举法编程中,主要是使用循环语句和选择语句,循环语句用于穷举所有可能的情况,而选择语句判定当前的条件是否为所求的解。其基本格式如下: for (循环变量x取所有可能的值) { ? if (x满足指定的条件) 输出x; } 3.4.7 循环结构程序设计应用 3.4 循环结构 2.迭代法 迭代就是不断用新值取代变量的旧值或由旧值递推出变量的新值。迭代机制需要以下一些要素: 迭代表达式。 迭代变量。 迭代初值。 迭代终止条件。 3.4.7 循环结构程序设计应用 3.4 循环结构 当一个问题的求解过程能够由一个初值使用一个迭代表达式进行反复的迭代时,便可以用效率极高的重复程序描述,所以迭代也是用循环结构实现的,只不过要重复的操作是不断从一个变量的旧值出发计算变量的新值。其基本格式如下: 3.4.7 循环结构程序设计应用 3.4 循环结构 迭代变量赋初值; 循环语句 { 计算迭代式; 新值取代旧值; } 3.4.7 循环结构程序设计应用 3.4 循环结构 【例3.25】求解兔子繁殖问题。著名意大利数学家Fibonacci曾提出一个有趣的问题:设有一对新生兔子,从第3个月开始每个月都生一对兔子。按此规律,并假设没有兔子死亡,半年后共有多少对兔子? 3.4.7 循环结构程序设计应用 3.4 循环结构 【解】人们发现每月的兔子数组成如下数列: 1, 1, 2, 3, 5, 8, 13, 21, 34, … 并把这个数列称为Fibonacci数列。那么,这个数列如何导出呢? 观察Fibonacci数列可以得到如下规律:从第3个数开始,每一个数都是其前面两个相邻数之和。 3.4.7 循环结构程序设计应用 3.4 循环结构 这是因为,在没有兔子死亡的情况下,每个月的兔子数由上一个月的老兔子数和这一个月刚生下的新兔子数两部分组成。上一个月的老兔子数即其前一个数,这一个月刚生下的新兔子数恰好为上上月的兔子数。因为上一个月的兔子中还有一部分到这个月还不能生小兔子,只有上上月已有的兔子才能每对生一对小兔子。 3.4.7 循环结构程序设计应用 3.4 循环结构 上述算法可以描述为 fibn-1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值