第四章 循环结构

#include <stdio.h>
#include <math.h>
int main(void)
{
	int denominator,flag,i;
	double eps,item,pi;
	printf("Enter eps");  //这里书上有个笔误,是printf不是print;
	scanf("%lf",&eps);

	i=1;                      //循环初始化
	flag=1;
	denominator=1;
	item=1.0;
	pi=0;
	while(fabs(item)>=eps){
		pi=pi+item;
		i++;
		flag=-flag;
		denominator=denominator+2;
		item=flag*1.0/denominator;
	}
	pi=pi+item;
	pi=pi*4;
	printf("pi =%.4f\n",pi);
	printf("i =%d\n",i);
	return 0;



}

while语句

一般形式:

        while(表达式){

                循环体语句;

                                        }

执行流程:当表达式的值为“真”时,循环执行,直到表达式的值为“假”,循环中止并继续执行while的下一条语句。

讨论while语句

1.while语句中的表达式可以是任何合法的表达式,循环体语句只能是一条语句。

2.从两种循环语句的形式和执行流程可以看出,while语句的构成简单,只有一个表达式和一条循环体语句,分别对应循环的两个核心要素:循环条件和循环体,可以直接把循环问题的分析设计转换成语句实现。

3.循环的实现一般包括4个部分,即初始化,条件控制,重复的操作以及通过改变循环变量的值最终改变条件的真假性,使循环能正常结束。这4个部分可以直接和for语句中的4个部分(表达式1,表达式2,循环体语句和表达式3)相对应,当使用while语句时,由于它只有2个成分(表达式和循环体语句),就需要另加初始化条件,至于第4个部分,从4.1和4.2图可知,while语句的循环体语句可包含for语句的循环体语句和表达式3,所以while的循环语句中必须包含最终能改变循环条件真假性的操作。

do-while语句

一般形式

        do{

          循环体语句              

          }while(表达式);

 执行流程:第一次进入循环时,首先执行循环体语句,然后再检查循环控制条件,即计算表达式,若值为“真”,继续循环,直到表达式的值为“假”,循环结束,执行do-while的下一条语句。

讨论:

(1)do-while语句和while语句的区别:do-while语句是,先执行循环体,后判断循环条件。所以无论循环条件的值如何,至少执行一次循环体。

关于while语句和do-while应用的环境:

        do-while语句适合于先循环,后判断循环条件的情况,一般在循环体的执行过程中明确循环控制条件。它每执行一次循环体后,再判断条件,以决定是否进入下一次循环。

        while语句和for循环语句都能实现循环。一般情况下,如果题目中指定了循环次数,使用for语句更清晰,循环的4个组成部分一目了然;其他的情况下多使用while语句。例如某些情况下没有直接给出循环次数,而是由某一项的值来控制循环,因此就选用了while语句。

for语句

一般形式

        for(表达式1;表达式2;表达式3)

                循环体语句

执行流程:先计算表达式1;在判断表达式2,若值为“真”,则执行循环体语句,并接着计算表达式3,然后继续循环;若值为“假”,则结束循环,继续执行for的下一条语句。

注意:在for语句执行的时候,表达式2,循环体语句和表达式3将重复执行,而表达式1只在进入循环之前执行一次。

讨论:

(1)表达式1:初值表达式,对循环变量赋值,从而指定循环的起点。如fahr=lower,置fahr的初值为温度取值范围的下限值lower,即循环从lower开始。

(2)表达式2:条件表达式,给出循环的条件,通常判断循环变量是否超过循环的终点。若该表达式为“真”,则继续循环;为“假”,则结束循环。如fahr<=upper,uppper作为温度取值范围的上限值,一旦fahr的值超过upper,表达式2为“假”,循环随之结束。

(3)表达式3:步长表达式,设置循环的步长,改表循环变量的值,从而可改变表达式2的结果。如fahr++,使fahr的值增加1,这样,最终fahr>upper,表达式2为“假”,循环随之结束.

(4)循环体语句:被反复执行的语句,只能是一条语句。

for语句反应了循环(重复执行)的规则,从哪儿开始(起点),到哪结束(终点),每次跨多大的步子(步长),重复做什么。

经典代码:求素数

#include <stdio.h>
#include <math.h>              //关于素数
int main()
{		int i,limit,m;
		printf("Enter a number");
		scanf("%d",&m);
		if(m<=1){
			printf("No!\n");
		}else if(m==2){
			printf("%d is a prime number!\n",m);
		}else{
			limit=sqrt(m)+1;
			for(i=2;i<=limit;i++){
				if(m%i==0){
					break;
				}
			}
			if(i>limit){
				printf("%d is a prime number!\n",m);
			}else{
				printf("No!\n");
			}
		}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值