for循环
for(表达式1;表达式2;表达式3)
语句
3个表达式的主要作用:
表达式1:设置初始条件,只能执行一次。(可以为零个,一个或多个变量设置初值)
表达式2:是循环条件的表达式,每次执行循环体前先执行此表达式
表达式3:作为循环的调整,它是在执行完循环体后才进行。
for语句的一般形式
(1)for(表达式1;表达式2;表达式3) 语句
可以改写成:
表达式 1;
while 表达式2
{
语句
表达式 3
}
(2)”表达式1”可以省略,不设置初值,但是“表达式1”后的分号不能省略。
例如:
int i=1;
for(;i<=100;i++;) {sum=sum+1;}
(3)”表达式2”也可以省略。(即不用”表达式2”来作为循环条件表达式,不设置和检查循环的条件,此时表达式2的值始终为真)
(4)表达式3也可以省略,但此时应另外设法保证循环能正常结束。
例如:
for(i=1;i<=100;)
{
sum=sum+i;
i++; //这时可以在循环体中使循环变量增值
}
(5)如果表达式1和表达式3都没有,只有表达式2,即只给循环条件。情况如下:
i=1;
for(;i<=100;)
{
sum=sum+i;
i++;
}
(6)可以将3个表达式都可以省略,例如:
for(;;) printf(“%d \n”,i);
相当于
while(1) printf(“%d\n”,i);
即不设初值,无判断条件(默认表达式2为真值),循环变量不增值.无终止的执行循环体语句
(7)表达式1可以是与循环控制无关的其他表达式。例如:
for(sum=0;i<=100;i++) sum=sum+i;
同样的表达式3也可以是与循环控制无关的任意表达式。但无论怎么写for语句,都必须使循环能正常执行。
(8)表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即包含一个以上的简单表达式。如:
for(sum=0,i=1;i<=100;i++) sum=sum+i;
或
for(i=0,j=100;i<=j;i++,j--) k=i+j;
(9)表达式2一般是关系表达式(如i<=100)或逻辑表达式(如 a<b && x<y),但也可以是数值表达式或字符表达式,只要表达式2的值为非零,就执行循环体。
例如:
①for(i=0;(c=getchar() !=‘\n’);i+=c);
②for(;(c=getchar() !=‘\n’);)
printf(“%c”,c);
(10)C99允许在 for语句的表达式1中定义变量并赋初值。例如: for(int i=1;i<=100;i++)
Sum=sum+i;
注意:所定义的变量范围只有限于for循环中,在循环外不能使用此变量