第6章循环控制
概述
前面已介绍过程序有三种结构:顺序、分支和循环,如果仅用顺序和分支编制程序势必语句使用的效率很低,因此有许多程序需用循环来实现。
goto语句以及用goto语句构成循环
格式:
goto 标号
意义:
无条件地转向标号指出的语句
使用goto语句时应注意:
(1) C语言的标号是用标识符表示的
(2) 过多地使用goto语句会使程序的易读性降低
(3) goto只能从语句的内部转向语句的外部,而不能从语句外转向语句内
(4) goto可以作为一种特殊的程序出口
例:利用goto语句求
main()
{int i,sum=0;
i=1;
loop:
sum+=i++;
if(i<=100) goto loop;
printf("%d",sum);
}
用while语句实现循环
当一些循环次数不能计算出来的循环往往用当型循环语句。
格式:
while (表达式) 语句
意义:
当表达式的值为“真”(非零)时,执行循环体(语句),执行循环体后重复判断表达式,当表达式的值为“假”时,执行下一语句。
使用while语句应注意:
(1) while语句是先判断后执行循环体的,也就是初值不满足条件时,相当于空语句。
(2) 在while循环体中应有修改某些循环变量的值,使while后的表达式的值可以改变。
(3) 表达式后只能是一个语句,执行多个语句时应用{ }括起。
(4) while和if语句的区别主要在于while执行表达式后的语句0~n,而if语句执行表达式后的0~1。
(5) 选择条件要慎重
例:求100!(不考虑溢出)
main()
{int i,power=1;
i=1;
while(i<=100)
{power*=i;
i++;
}
printf("\n%d",power);
}
例:某人存款100万元(%),问每月取600元多少个月取完?
main()
{int n=0;
float x=1e5;
while(x>0)
{x=x*(1+)-600;
n++;
}
printf("\n%d",n);
}
例:求π的近似既约分数
#include <>
main()
{int a,b;
float pi=,e=1e-2;
a=b=1;
while(fabs((float)a/b-pi)>e)
if((float)a/b-pi>e) b++;else a++;
printf("%d/%d=%f\n",a,b,pi);
}
用do-while语句实现循环
当即使初值不满足要求也至少执行一次循环体的,往往要用直到型循环语句。
格式:
do语句while (表达式)
意义:
先执行循环体(语句)后判断表达式的值为“真”(非零)时,重复执行循环体,直到表达式的值为“假”时,执行下一语句。
使用do-while语句应注意:
(1) do-while语句是先执行循环体后判断的,也就是循环体至少执行一次。
(2) 在do-while循环体中也应有修改某些循环变量的值,使while后的表达式的值可以改变。
(3) do后只能是一个语句,执行多个语句时应用{ }括起。
(4) 选择条件也要慎重
例:求100!(不考虑溢出)
main()
{int i,power=1;
i=1;
do
{power*=i;
i++;
}
while(i<=100);
printf("\n%d",power);
}
第6章 循环控制 来自淘豆网www.taodocs.com转载请标明出处.