FOR语句是C语言所提供的功能更强,应用更广泛的一种循环语句.一般形式为FOR(表达式1;表达式2;表达式3)语句
表达式1:通常用来给循环变量赋初值,一般是赋值表达式.也允许在FOR语句给循环变量赋初值,此时可以省略这个表达式.
表达式2:通常是循环条件,一般为关系表达式或逻辑表达式.
表达式3:通常可用来修改循环变量的值,一般是赋值表达式.
注意:这三个表达式都可以是逗号表达式,即每个表达式都可由多个表达式构成.三个表达式都是任选项,都是可以省略的.
FOR语句的执行过程为:
(1)先求解表达式1.
(2)求解表达式2,若其值为真(值为非0),则执行FOR语句中指定的内嵌语句,然后执行下面第(3)步.若为假(值为0),则结束循环,转到第(5)步.
(3)求解表达式3.
(4)转回上面第(2)步继续执行.
(5)循环结束,执行FOR语句下面的一个语句.
用while do...while for 语句分别解决同一个问题.
(1)while
#include<stdio.h>
main()
{
int counter=1;
while(counter<=10)
{
printf("%d\n",counter);
counter=counter+1;
}
printf("***\n");
}
(2)do...while
#include<stdio.h>
main()
{
int counter=1;
do
{
printf("%d\n",counter);
counter=counter+1;
}
while(counter<=10);
printf("***\n");
}
(3)for
#include<stdio.h>
main()
{
int counter;
for(counter=1;counter<=10;counter++)
printf("%d\n",counter);
printf("***\n");
}
使用FOR时应注意的问题:
(1)FOR语句的表达式1可以省略,这样的话就应在FOR语句前给循环变量赋初值.但表达式1后的分号不能省略.
(2)表达式3也可以省略,但此时应另外设法保证循环能正常结束.例:
for(i=1;i<=100)
{
sum=sum+i;
i++;
}
上面的FOR语句中只有表达式1和表达式2,i++的操作不放在FOR语句的表达式3的位置,而作为循环体的一部分,效果是一样的.
其它的表达式也可以省略,但以新学者的角度来看,个人观点不赞成省略,容易造成混乱.在这也希望高手指点一下,说明省略的好处以及运用的技巧.
(6)表达式(6)表达式1可以是设置循环变量初值的赋值的表达式,也可以是与循环变量无关的其它的表达式。例:
for(sum=0;i<=100;i++)sum=sum+1;
表达式1和表达式3可以是逗号表达式。例:
for(i=0,j=100;i<=j;i++,j++)k=k+j;
在逗号表达式内按自左至右求解,整个逗号表达式的值为其中最右边的值。例:
for(i=1,j=100;i<=100;i++,i++)相当于for(i=1,j=1;i<=100;i=i+2)
表达式一般是关系表达式(i<=100)或逻辑表达式(a<b&&x>y),但也可以是数值表达式或字符表达式,只要它的值是非 0, 就可以执行循环体。
写程序,从键盘输入一个数字,并输出这个数字,直到所出的值小于100。
#include<stdio.h>
void main()
{
int num;
for(scanf("%d",&num),printf("%d\n",num);num>=100;)
{
scanf("%d",&num);
printf("%d\n",num);
}
}
在此附上用while do...while语句来解决这个题:
main() main()
{ {
int num; int num;
scanf("%d",&num); do{
printf("%d\n",num); scanf("%d",&num);
while(num<=100) printf("%d\n",num);
{ }while(num>=100);
scanf("%d",&num); }
printf("%d\n",num);
}
}
如果循环次数在执行循环体之前就确定,一般用for语句;如果循环次数是由循环体的执行情况来确定,则采用while语句或do...while语句.