循环不变式.ppt
上传人:天马****23 上传时间:2024-09-11 格式:PPT 页数:38 大小:1.2MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

循环不变式.ppt

循环不变式.ppt

预览

免费试读已结束,剩余 28 页请下载文档后查看

10 金币

下载此文档

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

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

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

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

4.1用格里高利公式求π的近似值flag=1;/*int*/denominator=1;/*int*/item=1.0;/*double*/pi=0;/*double*/while(fabs(item)>=0.0001){item=flag*1.0/denominator;pi=pi+item;flag=-flag;denominator=denominator+2;}pi=pi*4;4.1.2while语句复合语句while语句和for语句都是在循环前先判断条件while和for的比较例4-2从键盘输入一批学生的成绩,计算平均分。分析:求累加和确定循环条件不知道输入数据的个数,无法事先确定循环次数用一个特殊的数据作为正常输入数据的结束标志,比如选用一个负数作为结束标志。#include<stdio.h>Intmain(void){intnum;doublegrade,total;num=0;total=0;printf(“Entergrades:\n");scanf("%lf",&grade);/*输入第1个数*/while(grade>=0){/*输入负数,循环结束*/total=total+grade;num++;scanf(“%lf”,&grade);}if(num!=0)printf(“Gradeaverageis%.2f\n",total/num);elseprintf("Gradeaverageis0\n");return0;}4.2.2do-while语句4.2统计一个整数的位数intmain(void){intcount,number;count=0;printf(“Enteranumber:");scanf("%d",&number);if(number<0)number=-number;do{number=number/10;count++;}while(number!=0);printf("Itcontains%ddigits.\n",count);return0;}while是先判别条件,再决定是否循环;do-while是先至少循环一次,然后再根据循环的结果决定是否继续循环。4.2.3循环语句的选择4.3判断素数4.3.1程序解析-判断素数intmain(void){inti,m;printf(“Enteranumber:");scanf("%d",&m);for(i=2;i<=m/2;i++)if(m%i==0)break;if(i>m/2)printf("%disaprimenumber!\n",m);elseprintf("No!\n");}break语句continue语句break和continue4.4求1!+2!+….+100!#include<stdio.h>doublefact(intn);intmain(void){inti;doublesum;sum=0;for(i=1;i<=100;i++)sum=sum+fact(i);printf("1!+2!+3!+…+100!=%e\n",sum);return0;}doublefact(intn){inti;doubleresult=1;for(i=1;i<=n;i++)result=result*i;returnresult;}4.4.2嵌套循环例4-6源程序内层循环的初始化分析嵌套循环的执行过程for(i=1;i<=100;i++)for(j=1;j<=i;j++)printf("%d%d\n",i,j);4.5循环程序设计#include<stdio.h>intmain(void){inti,mark,max,n;printf("Entern:");scanf("%d",&n);printf("Enter%dmarks:",n);scanf("%d",&mark);/*读入第一个成绩*/max=mark;/*假设第一个成绩是最高分*/for(i=1;i<n;i++){scanf("%d",&mark);if(max<mark)max=mark;}printf("Max=%d\n",max);return0;}#include<stdio.h>intmain(void){intmark,max;printf(“Entermarks:");scanf("%d",&mark);/*读入第一个成绩*/max=mark;/*假设第一个成绩最高分*/while(mark>=0){