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

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

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

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

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

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

第5章循环结构程序设计5.1循环语句概述(4)用goto语句和if语句构成循环。使用goto语句实现求解1~100累计和的程序可以如下: main() {intn=1,sum=0; loop:sum+=n;n++; if(n<=100)gotoloop; printf(“sum=%d\n”,sum); } 其中“loop:”为语句标号(格式:标号:语句行),其命名遵循标识符命名规则。goto语句格式:goto标号,功能为:使系统转向标号所在的语句行执行。 注意:结构化程序设计方法,主张限制使用goto语句。因为滥用goto语句,将会导致程序结构无规律、可读性差。另外,从功能上说,for语句可完全代替当型循环语句while,所以该语句也不是必需的。 [Return]5.2for语句和while语句[案例5.2]求n的阶乘n!(n!=1*2*……*n)。/*案例代码文件名:AL5_2.C*//*程序功能:求n!*/main(){inti,n;longfact=1; /*将累乘器fact初始化为1*/printf(“Inputn:”);scanf(“%d”,&n); for(i=1;i<=n;i++)fact*=i; /*实现累乘*/ printf("%d!=%ld\n",n,fact);} [程序演示] 程序运行情况如下:Inputn:5↙5!=1201.for语句的一般格式for([变量赋初值];[循环继续条件];[循环变量增值]){循环体语句组;} 2.for语句的执行过程 执行过程如图5-1所示。 (1)求解“变量赋初值”表达式。 (2)求解“循环继续条件”表达式。如果其值非0,执行(3);否则,转至(4)。 (3)执行循环体语句组,并求解“循环变量增值”表达式,然后转向(2)。 (4)执行for语句的下一条语句。 3.说明 (1)“变量赋初值”、“循环继续条件”和“循环变量增值”部分均可缺省,甚至全部缺省,但其间的分号不能省略。(2)当循环体语句组仅由一条语句构成时,可以不使用复合语句形式,如上例所示。 (3)“循环变量赋初值”表达式,既可以是给循环变量赋初值的赋值表达式,也可以是与此无关的其它表达式(如逗号表达式)。 例如,for(sum=0;i<=100;i++)sum+=i; for(sum=0,i=1;i<=100;i++)sum+=i; (4)“循环继续条件”部分是一个逻辑量,除一般的关系(或逻辑)表达式外,也允许是数值(或字符)表达式。4.while语句 (1)一般格式while(循环继续条件){循环体语句组;} (2)执行过程 执行过程如图5-2所示。 1)求解“循环继续条件”表达式。如果其值为非0,转2);否则转3)。 2)执行循环体语句组,然后转1)。 3)执行while语句的下一条。 显然,while循环是for循环的一种简化形式(缺省“变量赋初值”和“循环变量增值”表达式)。[案例5.3]用while语句求1~100的累计和。/*案例代码文件名:AL5_3.C*//*程序功能:求1~100的累计和*/main(){inti=1,sum=0; /*初始化循环控制变量i和累计器sum*/while(i<=100){sum+=i; /*实现累加*/i++; /*循环控制变量i增1*/}printf(“sum=%d\n”,sum);} [程序演示] 程序运行情况如下:sum=50505.循环嵌套 (1)循环语句的循环体内,又包含另一个完整的循环结构,称为循环的嵌套。循环嵌套的概念,对所有高级语言都是一样的。 (2)for语句和while语句允许嵌套,do-while语句也不例外。 [Return]5.3直到型循环do-while语句[案例5.4]用do-while语句求解1~100的累计和。/*案例代码文件名:AL5_4.C*//*程序功能:求1~100的累计和*/main(){inti=1,sum=0; /*定义并初始化循环控制变量,以及累计器*/do{sum+=i; /*累加*/i++;}while(i<=100); /*循环继续条件:i<=100*/printf(“sum=%d\n”,sum);} [程序演示] do-while语句比较适用于处理:不论条件是否成立,先执行1次循环体语句组的情况。除此之外,do-while语句能实现的,for语句也能实现,而且更简洁。 [Return]5.4break语句与continue语句5.5应用举例[例5.6]输出10~100之间的全部素数。所谓素数n是指,除1和n之外,不能被2~(n-1)之间的任何整数整除。 算法设计要点: (1)显然,只要设计出判断某数n是否是素数的算法,外面再套一个for循环即可。