📄 codetc4.dat
字号:
for 语句
功能:C语言中的for语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定的而只给出循环结束条件的情况,它完全可以代替while语句。
形式 1:for(表达式 1;表达式 2;表达式 3)语句
它的执行过程如下:
(1) 先求解表达式 1.
(2) 求解表达式 2,若其值为真(值为非 0),则执行for语句中指定的内嵌语句,然后执行下面第(3)步。若为假(值为 0) ,则结束循环,转到第(5)步。
(3) 求解表达式 3。
(4) 转回上面第(2)步骤继续执行。
(5) 循环结束,执行for语句下面的一个语句。
形式 2:for(循环变量赋初值;循环条件;循环变量增值)语句
例如:for(i=1;i<=100;i++) sum=sum+i
说明:可以看到for语句相当于以下语句
i=1;
while(i<=100)
{
sum=sum+i;
i=i+1;
}
显然,用for语句简单、方便。对于以上for语句的一般形式也可以改写为while循环的形式。
(1) for语句的一般形式中的"表达式 1"可以省略,此时应在for语句之前给循环变量赋初值。注意省略表达式 1时,其后的分号不能省略。例如:for(;i<=100;i++)sum=sum+1;执行时,跳过"求解表达式 1"这一步,其他不变。
(2) 如果表达式 2省略,即不判断循环条件,循环无终止地进行下去。也就是认为表达式 2始终为真。例如:
for(i=1;;i++) sum=sum+1;
(3) 表达示 3也可以省略,但此时程序设计者应另外设法保证循环能正常结束。例如:
for(i=1;i<=100;)
{
sum=sum+i;
i++;
}
在上面的for语句中只有表达式 1和表达式 2,而没有表达式 3。i++的操作不放在for语句的表达试 3的位置处,而作为循环体的一部分,效果是一样的,都能使循环正常结束。
(4) 可以省略表达式 1和表达式 3,只有表达式 2,即只给循环条件。例如:
for(;i<=100;) while(i<=100)
{ {
sum=sum+i; 等同于 sum=sum+1;
i++; i++;
} }
在这种情况下,完全等同于while语句。可见for语句比while语句功能强,除了可以给出循环条件外,还可以赋初值,使循环变量自动增值等。
(5) 3个表达式都可以省略,例如:
for(;;) 语句 相当于 while(1) 语句
即不设初值,不判断条件(认为表达式 2为真值),循环变量不增值。无终止地执行循环体。
(6) 表达式 1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式。例如:
for(sum=0;i<=100;i++) sum=sum+i;
表达式 3也可以是与循环控制无关的任意表达式。
表达式 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;
表达式 1和表达式 3都是逗号表达式,各包含两个赋值表达式,即同时设两个初值,使两个变量增值。
(7)表达式一般是关系表达式(如i<=100)或逻辑表达式(如a<b && x<y),但也可以是数值表达式或字符表达式,只要其值为非零,就执行循环体。分析下面的例子:
1. for(i=0;(c=getchar())!='\n';i+=c);
在表达式 2中先从终端接收一个字符赋给c,然后判断此赋值表达式的值是否不等于'\n'(换行符),如果不等于'\n',就执行循环体。
注意:此for语句的循环体为空语句,把本来要在循环体内处理的内容放在表达式 3中,作用是一样的。可见for语句功能强,可以在表达式中完成本来应在循 环体内完成的操作。
2. for(;(c=getchar())!='\n';) printf("%c",c);
只有表达式 2,而无表达式 1和表达式 3。其作用是每读入一个字符后立即输出该字符,直到输入一个"换行"为止。请注意,从终端键盘向计算机输入时,是在按回车键以后才送到内存缓冲区中去的。即不是从终端敲入一个字符马上输出一个字符,而是按回车键后数据送入内存缓冲区,然后每次从缓冲区读一个字符,再输出字符。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -