携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第22天,点击查看活动详情
for的9种用法
第二种:可以让计数器递增2,10等
#include <stdio.h>
int main() {
int n;
for(n=2;n<60;n=n+13)
printf("%d\n",n);
return 0;
}
运算结果
每次循环n递增13,程序输出如下:
第三种:可以用字符代替数字计数
#include <stdio.h>
int main() {
char ch;
for(ch='a';ch<='z';ch++)
printf("The ASCII value for %c is %d.\n",ch,ch);
return 0;
}
运算结果
第四种:除了测试迭代次数外,还可以测试其他条件。
在for_cube程序中,可以把:
for(num=1;num<=6;num++)
替换成:
for(num=1;num*num*num<=216;num++)
如果与控制循环次数相比,你更关心限制立方的大小,就可以使用这样的测试条件。
第五种:可以让递增的量几何增长,而不是算术增长。
也就是说,每次都乘上而不是加上一个固定的量:
#include <stdio.h>
int main() {
double debt;
for(debt=100.0;debt<150.0;debt=debt*1.1)
printf("Your debt is now $%.2f.\n",debt);
return 0;
}
运算结果
该程序中,每次循环都把debt乘以1.1,即debt的值每次都增加10%,输出如下:
第六种: 第3个表达式可以使用任意合法的表达式
无论是什么表达式,每次迭代都会更新该表达式的值。
#include <stdio.h>
int main() {
int x;
int y;
for(x=1;y<=75;y=(++x*5)+50)
printf("%10d %10d\n",x,y);
return 0;
}
运算结果
该打印x的值和表达式++x* 5+50的值,输出如下:
注意,测试涉及y,而不是x。for循环中的3个表达式可以是不同的变量(建议不要在更新部分加入代数计算,程序会更清楚)。
第七种: 可以省略一个或多个表达式,只要在循环中包含能结束循环的语句即可。
#include <stdio.h>
int main() {
int ans,n;
ans=2;
for(n=3;ans<=25;)
ans=ans*n;
printf("n=%d;ans=%d.\n",n,ans);
return 0;
}
运算结果
输出如下:
第八种:第1个表达式不一定是给变量赋初值,也可以使用printf()。
记住,在执行循环的其他部分之前,只对第1个表达式求值一次或执行一次。
#include <stdio.h>
int main() {
int num=0;
for(printf("Keep entering numbers!\n");num!=6;)
scanf("%d",&num);
printf("That's the one I want!\n");
return 0;
}
运算结果
打印第1行的句子一次,在用户输入6之前不断接受数字:
第九种:循环体中行为可以改变循环头中的表达式。
例如:假设创建了下面的循环体:
for(n=1;n<10000;n=n+delta)
如果程序经过几次迭代后发现delta太小或太大,循环中的if语句可以改变delta的大小。在交互程序中,用户可以在循环运行时才改变delta的值。但这样做不咋好,如果把delta设置为0就没用了。