C语言 第五章 循环结构
一、for
请在屏幕上输出1000个*号
printf("*************************....");
#include "stdio.h" void main() { int i; for(i=1;i<=1000;i++){ printf("*"); } }
for(表达式A;表达式B;表达式C)
{
要重复执行的代码块D;
}
1、表达式A先执行,且只执行一次
2、表达式B再执行,如果为真则执行代码块D
3、再执行表达式C,再选择表达式B,回到第2步
4、ABCD都可以省去 for(;i>=100;);
5、表达式1通常用来给循环变量赋初值,一般是赋值表达式i=1 i=-1,j=100
6、表达式2通常是循环条件,一般为关系表达式或逻辑表达式i>=5 i>5&&j<=8
7、表达式3通常可用来修改循环变量的值,一般是复合赋值语句i++,i--, i+=5,j++
8、这三个表达式都可以是逗号表达式,即每个表达式都可由多个表达式组成。三个表达式都是任选项,都可以省略。
#include "stdio.h" void main() { int i,j; for(i=1;i<=10;i++) { printf("%d \n",i); } }
#include "stdio.h" void main() { int i,j; for(i=-10;i<=10;i++) { printf("%d \n",i); } }
#include "stdio.h" void main() { int i,j; for(i=1;i<=10;i=i+3) { printf("%d \n",i); } }
#include "stdio.h" void main() { int i,j; for(i=10;i>0;i--) { printf("%d \n",i); } }
#include "stdio.h" void main() { int i,j; for(i=10,j=1;i>0;i--,j++) { printf("%d + %d = 11 \n",i,j); } }
#include "stdio.h" void main() { int i=1; for(;i<=10;i++) { printf("\n %d",i); } }
#include "stdio.h" void main() { int i=1; for(;i<=10;) { printf("\n %d",i); i++; } }
#include "stdio.h" void main() { int i=1; for(;;) { printf("\n %d",i); i++; if(i>10)break; } }
for语句中的各表达式都可省略,但分号间隔符不能少。如:
for(;表达式;表达式)省去了表达式1。
for(表达式;;表达式)省去了表达式2。
for(表达式;表达式;)省去了表达式3。
for(;;)省去了全部表达式。
在循环变量已赋初值时,可省去表达式1,如省去表达式2或表达式3则将造成无限循环, 这时应在循环体内设法结束循环。
循环体(要重复的语句)可以是空语句。
练习:计算出1-100之间奇数之和。1+3+5+7....99=?
#include "stdio.h" void main() { //练习:计算出1-100之间奇数之和。1+3+5+7....99=? int i,s=0; for(i=1;i<=100;i++) { if(i%2==1){ s=s+i; } } printf("结果:%d",s); }
2500
#include "stdio.h" void main() { //练习:计算出1-100之间奇数之和。1+3+5+7....99=? int i,s=0; for(i=1;i<=100;i=i+2) { s=s+i; } printf("结果:%d",s); }
2500
二、while
while语句的一般形式为:
初值;
while(表达式A)
{
表达式的值为真时要重复的语句块;B
步长;
}
其中表达式是循环条件
要重复的语句块和步长都为循环体
while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体语句。
1、程序先判断A是否为真,如果为真则执行循环体B
2、当执行完循环体后再回到第1步
3、当表达式A为假时结束循环
#include "stdio.h" void main() { int i=1; while(i<=10) { printf("%d \n",i); i=i+1; } }
while语句中的表达式一般是关系表达或逻辑表达式,只要表达式的值为真(非0)即可继续循环
循环体如包括有一个以上的语句,则必须用{}括起来, 组成复合语句。
应注意循环条件的选择以避免死循环。
练习:
练习:计算出1-100之间奇数之和。1+3+5+7....99=?
/* Note:Your choice is C IDE */ #include "stdio.h" void main() { int i=1,s=0; while(i<=100) { s=s+i; i=i+2; } printf("s=%d",s); }
2500
练习:列出1-1000之间所有能同时被3与7整除的数。
三、do while
do-while语句的一般形式为:
do
{
要重复的语句块;
}while(表达式);
其中“要重复的语句块”是循环体
表达式是循环条件
语义是:先执行循环体语句一次,再判断表达式的值,若为真(非0)则继续循环,否则终止循环。
/* Note:Your choice is C IDE */ #include "stdio.h" void main() { int i=1,s=0; do { s=s+i; i++; }while(i<=5); printf("%d",s); } //i=1 2 3 4 5 6 //s=0 1 3 6 10 15
15
适用于必须要执行一次的应用,如输入一个合格的数字。
#include "stdio.h" void main() { int n; do { printf("请输入1-7之间的数:"); scanf("%d",&n); }while(n<1||n>7); }
四、continue
在for,while,do-while中遇到continue表示结束当次循环,继续下次循环。
#include "stdio.h" void main() { int i; for(i=1;i<=10;i++) { printf("●"); printf("□"); } }
#include "stdio.h" void main() { int i; for(i=1;i<=5;i++) { if(i%2==0) { continue; //结束当次,继续下一次 } printf("□"); } //i=1 2 3 4 5 6 □□□ }
五、break
在for,while,do-while,switch中遇到break跳出当前循环。
#include "stdio.h" void main() { int i; for(i=1;i<=5;i++) { if(i%2==0) { break; //结束当前循环 } printf("□"); } }
□
在无条件循环中退出
#include "stdio.h" void main() { int i=1,s=0; while(1) { s=s+i; i++; if(i>100) break; } printf("%d",s); }
5050