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

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

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

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

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

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

循环语句概述根据已有的知识,单独实现每一步都不难。但是,由于需要经常使用这种重复计算结构(称为循环结构),C语言提供了循环语句来实现,以简化、并规范循环结构程序设计。在C语言中,可用以下语句实现循环:(1)用for语句。(2)用do-while语句。(3)用while语句。§5.1for语句功能:先计算<初始表达式>的值,然后判断<条件表达式>的值,若该值为“假”,则退出循环,执行循环体下面的语句;若该值为“真”,则执行<循环体语句>,然后计算<循环表达式>的值,再判断<条件表达式>的值,重复以上的操作。for循环语句注意:③<循环表达式>亦可省略,但在循环语句体中必须有语句来修改循环变量,以使条件表达式的值在某一时刻为0,从而能正常结束循环。⑥初始表达式、循环表达式可以是逗号表达式这个问题与例5-1类似,只是所求级数和的初值和终值不一样,是由键盘任意输入的,为避免计算机错误,要求初值a要小于终值b。/*exam5_2.c求几何级数的和*/#include<stdio.h>main(){inti,j,a,b,sum=0;printf("Pleaseinputtwonumber:\n");scanf("a=%d,b=%d",&a,&b);i=a;j=b;if(a>b){i=b;j=a;}for(;i<=j;i++)sum=sum+i;printf("sum=%d\n",sum);}【例5-3】编写一个程序,在屏幕上打印出具有8行7列的如下图案:/*exam5_3.c打印图案*/#include<stdio.h>main(){inti,j;for(i=1;i<=8;i++){for(j=1;j<=7;j++)printf("*");printf("\n");}}§5.2while语句<循环语句体>:是用一对花括号括起来的复合语句。【例5-4】将例5-1用while语句重写,求简单几何级数的和。【例5-5】输入一个正整数n,求n!。/*exam5_5.cwhile应用:求n!*/#include<stdio.h>main(){inti,n;longs;printf("pleaseenterainteger:\n");scanf("%d",&n);if(n>=0){s=1;i=1;while(i<=n){s=s*i;i++;}printf("%d!=%ld",n,s);}elseprintf("Invalidinput!");}while和for的比较例5-6从键盘输入一批学生的成绩,计算平均分。分析:求累加和确定循环条件不知道输入数据的个数,无法事先确定循环次数用一个特殊的数据作为正常输入数据的结束标志,比如选用一个负数作为结束标志。#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;}§5.3do~while语句<循环语句体>应该是用一对花括号括起来的复合语句。【例5-7】将例5-6用do_while语句重写。#include<stdio.h>Intmain(void){intnum;doublegrade,total;num=0;total=0;do{printf(“Entergrades:");scanf(“%lf”,&grade);total=total+grade;num++;}while(grade>=0);/*输入负数,循环结束*/printf(“Gradeaverageis%.2f\n",(total+1)/(num-1));return0;}【例5-8】求sin(x)=x-x3/3!+x5/5!-x7/7!+…直到最后一项绝对值小于le-7(即10-7)为止。2021/5/24/*exam5_8.c求sin(x)的值*/#include<stdio.h>#include<math.h>main(){doubles,t,x;intn=1;scanf("%lf",&x);t=x;s=x;do{n=n+2;t=t*(-x*x)/(n*(n-1));s=s+t;}while(fabs(t)>=1e-7);printf("sin(%lf)=%lf\n",x,s);}while是先判别条件,再决定是否循环;d