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