大学计算机程序设计基础(c语言2)ppt

上传人:tia****nde 文档编号:70890190 上传时间:2019-01-18 格式:PPT 页数:192 大小:1.56MB
返回 下载 相关 举报
大学计算机程序设计基础(c语言2)ppt_第1页
第1页 / 共192页
大学计算机程序设计基础(c语言2)ppt_第2页
第2页 / 共192页
大学计算机程序设计基础(c语言2)ppt_第3页
第3页 / 共192页
大学计算机程序设计基础(c语言2)ppt_第4页
第4页 / 共192页
大学计算机程序设计基础(c语言2)ppt_第5页
第5页 / 共192页
点击查看更多>>
资源描述

《大学计算机程序设计基础(c语言2)ppt》由会员分享,可在线阅读,更多相关《大学计算机程序设计基础(c语言2)ppt(192页珍藏版)》请在金锄头文库上搜索。

1、程序设计基础 (国家级精品课),张长海,程序设计基础 (国家级精品课),第四章 循环程序设计 第五章 模块化程序设计函数 第六章 批量数据组织数组,第四章 循环程序设计,循环程序 多重循环 程序设计实例 作业 4.14 4.18 4.20 习题集 P2348.3;P2566 练习 4.2 4.3 4.5 4.9 4.11 4.23 4.24 4.26 4.31,4.1 计算平均成绩循环程序,例4.1 某评估单位要对学生的学习情况进行评估,需要计算每个学生的平均学习成绩。编程序,从终端逐次输入一个学生n门课程的成绩,计算并输出他的平均成绩。,#include #define n 40 void

2、main(void) float sum ; int k , m; k1; sum0; do printf(“pleace input a achievement :“); scanf(“%d“, ,运行结果演示,这就是循环程序,循环程序有: 先判断条件的循环 后判断条件的循环,本程序是后判断条件的循环,同样问题还可以描述成先判断条件的循环,C 有三种不同的重复性语句, 它们是 while 语句 先判断条件的循环; do 语句 后判断条件的循环; for 语句 先判断条件的循环。 需要弄清楚的 循环控制方式是什么? 控制条件是什么? 重复执行部分(称为“循环体“)是什么?,4.1.1 后判断条

3、件的循环,例4.1程序是后判断条件的循环程序,后判断条件的循环在流程图中表示成类似如下左图形式,PAD表示形式如下述右图。,其中: e是条件; S是语句,是要重复执行的操作。,其含义是: 1) 执行语句列S 2) 计算条件表达式e, 3) 若e的值为true,转向步骤1)再次执行语句S; 否则转向步骤4)结束循环。 4)循环结束,向后执行其后继操作。,后判断条件的循环用do语句描述,一般形式 do S while ( e );,例4.2 计算数列的ak=1/(k*(k+1) 的前 n 项和,#include “stdio.h“ void main ( ) int n,k ; float sum

4、 ; printf (“please input n :“); scanf(“%d“, ,运行结果演示,例4.3 编程序,输入一个年份,求该年以后的 n 个闰年 解:输入一个年份之后,先找到第一个可能的闰年,然后每隔 4 年判断一下是否是闰年,直到找到 n 个闰年为止。,/*PROGRAM find leap year*/ #include “stdio.h“ void main() int yy,n; printf(“please input begin year:“); scanf(“%d“, ,运行结果演示,例4.4 编程序,解方程 2X3+0.5X2-X+0.093=0,变换方程为:X

5、 = 2X3 + 0.5X2 + 0.093 若某个 X 代入右端后,计算结果正好是 X ,则这个 X 值就是方程的根,简单迭代法,g (x) = 0,x = f (x),采用迭代法方法求解x=f(x)方程的根 选定一个 x的初值 x0 ; 以 x0 代入右端计算出一个值 x1=f(x0) 若 x1 等于x0 ,显然 x0 为根,转向 否则若 x1x0 则令 x0=x1 ,转向 结束,停止计算,f (x),y=x,f (x0),x0,x1,f (x1),x*,x2,可以使用简单迭代的情况,f (x2),f (x),y=x,f (x1),x2,x1,f (x0),x*,x0,不可以使用简单迭代的

6、情况,f (x2),简单迭代方法使用条件 对于方程xf(x),当任意x(a, b) 存在0 L 1,使 |f(x)|L1 则方程x = f(x)在(a, b)上有唯一的根x* 且对任意初值x0 (a, b)时 迭代序列xk+1=f (xk) (k = 0, 1, )收敛于x* 在实际工作中,决大部分计算都是近似计算,只要求 X1X0 即X1 - X0使用条件,#include “stdio.h“ #include “math.h“ #define eps 1e-6 void main() float x0,x1; x0=0.0; x1=0.0; do x0=x1; x1=2*x0*x0*x0

7、+0.5*x0*x0 +0.093; while(fabs(x1-x0)eps); printf(“x=%fn“,x0); ,运行结果演示,4.1.2 先判断条件的循环,sum=0; k=1;,读入一科成绩 m sum =sum+m;,k = k+1 ;,结束,F,T,输出 sum / n,先判断条件的循环程序模式,其中: e是条件; S是语句,是要重复执行的操作。,其含义是: 1) 计算条件表达式e, 2) 若e的值为true,转向步骤3)继续循环; 否则转向步骤5)结束循环。 3) 执行语句S 4)转向步骤1) 5)循环结束,向后执行其后继操作。,先判断条件的循环用WHILE语句描述,一般

8、形式 while ( e ) S,其中: while 是保留字,起引导和分隔作用, 指明此语句是while循环语句。 e 、S的意义,如上述图4.11的PAD。 while语句的执行过程当然也如上述PAD。,同do语句一样,这里也要特别指出,实际应用中,语句S往往不是一个简单的语句,也经常是个结构语句。,#include #define n 40 void main(void) float sum ; int k , m; k1; sum0; while ( k=n ) printf(“pleace input a achievement :“); scanf(“%d“, ,运行结果演示,例4

9、.6 编程序,按公式求自然对数底 e 的近似值 由于不能进行无穷项的计算,所以只能进行近似计算,当余项 余项计算可利用前后项之间的递推关系,#include “stdio.h“ #define eps 1e-5 void main( ) int n ; float e,r ; e=1.0; n=1; r=1.0; while ( reps ) e=e+r; n=n+1; r=r/n; printf (“ e=%fn“,e) ; ,e=1.0; n=1; r=1.0; e=2.0; n=2; r=0.5; e=2.5; n=3; r=0.1667; e=2.6667; n=4; r=0.0417

10、; ,运行结果演示,例4.7 编程序,统计以100为结束符的整数输入流中 -1 、0 、+1 的出现次数并输出,#include #define n 100 void main(void) int i , j , k , num ; i=0; j=0; k=0; printf(“pleace input a integer :“); scanf(“%d“, ,运行结果演示,+和-,表达式 v+ 是先求表达式的值,后对v加1 。结果表达式的值是对v进行加1之前的v值,即v0 。 表达式 +v 是先对v加1 ,后求表达式的值。结果表达式的值是对v进行加1之后的v值,即v0+1 。,4.1.3 fo

11、r 语句,研究先判断条件的循环 e=1.0; n=1; r=1.0; while ( reps ) e=e+r; n=n+1; r=r/n; ,e=1.0; n=1; for ( r=1.0; reps; r=r/n ) e=e+r; n=n+1; ,“r=1.0”是循环控制的初值; “reps”是循环控制; “r=r/n”是对循环控制条件的修正。 由于这种程序模式在程序设计中经常出现,C为这种程序模式提供一种简写形式for语句,for语句最经常被用于描述循环次数已知循环,sum = 0 ; k = 1 ; while( k=n ) sum = sum + 1.0/(k*(k+1) ; k+

12、; ,sum = 0 ; for ( k=1 ; k=n; k+ ) sum = sum + 1.0/(k*(k+1) ;,一般形式 for ( e1; e2 ; e3) S e1初值表达式 用于设置该循环开始的一些初值 e2终值表达式 用于控制循环结束 e3增量表达式 用于每次循环体执行后对控制条件的修正 S 语句,执行与PAD图,例4.8 编程序求向量内积。由终端输入两个n维向量X,Y. 计算其内积XY 。,#include “stdio.h“ void main ( ) int n,i ; float xy,xi,yi ; printf(“pleace input n:n“); scan

13、f(“%d“, ,运行结果演示,本章已经编写过多个“求和”的程序,现在总结一下“求和”程序模式。所有“计算和”的程序都使用一个“和单元”,有类似下图的模式。这里用后判断条件的循环,当然也可以采用先判断条件的循环。其中: S是和单元; 开始进入循环之前和单元S必须清“0”; 在循环体内,每循环一次给和单元加上一项; 最后循环结束,和单元中的值即为所求之和。,4.2 打印99表多重循环,1 1 2 2 4 3 3 6 9 4 4 8 12 16 5 5 10 15 20 25 6 6 12 18 24 30 36 7 7 14 21 28 35 42 49 8 8 16 24 32 40 48 5

14、6 64 9 9 18 27 36 45 54 63 72 81 * 1 2 3 4 5 6 7 8 9,例4.9 打印99表,* 1 2 3 4 5 6 7 8 9,打印底行,1 1 2 2 4 3 3 6 9 4 4 8 12 16 5 5 10 15 20 25 6 6 12 18 24 30 36 7 7 14 21 28 35 42 49 8 8 16 24 32 40 48 56 64 9 9 18 27 36 45 54 63 72 81,打印前9行,打印第i行,6 6 12 18 24 30 36,9 9 18 27 36 45 54 63 72 81,9 9 18 27 36

15、 45 54 63 72 81,6 6 12 18 24 30 36,打印第i行,6 6 12 18 24 30 36,9 9 18 27 36 45 54 63 72 81,9 9 18 27 36 45 54 63 72 81,6 6 12 18 24 30 36,打印前 9 行,打印底行,例4.10 打印99表,打印第 i 行,for (i=1;i=9;i+),#include “stdio.h“ void main() int i,j; for(i=1;i10;i+) printf(“%4d“,i); for(j=1;j=i;j+) printf(“%4d“,i*j); printf(“n“); printf(“%4c“,*); for(i=1;i10;i+) printf(“%4d“,i); ,运行结果演示,该程序中含有循环套循环的结构,各种循环程序的循环体都可能是个结构语句。如果一个循环结构的循环体仍然是一个循环,便构成循环嵌套,称多重循环。,例4.10 打印100以内素数,for (i=2; i=100; i+),

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号