for语句不仅可以用于循环次数已经确定的情况,还可以用于循环次数不确定而只给出循环结束条件的情况。
for语句完全可以代替while语句。
for (i=1;i<=100;i++)
printf("%d ", i );

1.for语句的一般形式为
for(表达式1;表达式2;表达式3)
语句
表达式1一般为初始条件表达式,只执行一次;
表达式2一般为循环条件表达式,用来判断是否继续循环;
表达式3一般为循环条件增量表达式,使循环能够结束。
执行过程:
(1) 求解表达式1
(2) 求解表达式2,若值为真,执行循环体语句,再转第(3)步。若为假,则结束循环
(3) 求解表达式3
(4) 转回第(2)继续执行
for(i=1;i<=100;i++)
sum=sum+i;
等价于
i=1;
while(i<=100)
{
sum=sum+i;
i++;
}
思考:
① 1+3+5+......+99 。
② 1-2+3-4+.....+99-100 。
③ 1*2*3*4*5 。
例题1:
求费波那西(Fibonacci)数列的前40个数。这个数列有如下特点:第1、2两个数为1、1。从第3个数开始,该数是其前面两个数之和。即:

方法一:

#include <stdio.h>
int main()
{ int f1=1,f2=1,f3; int i;
printf("%12d\n%12d\n",f1,f2);
for(i=1; i<=38; i++)
{ f3=f1+f2;
printf("%12d\n",f3);
f1=f2;
f2=f3;
}
return 0;
}

代码可改进
方法二:

#include <stdio.h>
int main()
{ int f1=1,f2=1; int i;
for(i=1; i<=20; i++)
{ printf("%12d %12d ",f1,f2);
if(i%2==0) printf("\n");
f1=f1+f2;
f2=f2+f1;
}
return 0;
}

2.for循环的其他形式



for(i=0; (c=getchar())!=’\n’ ; i+=c);
for( ; (c=getchar())!=’\n’; )
printf(″%c″,c);
For语句在EASYX图形程序设计中的应用
画10条直线的代码:
#include <graphics.h>
#include <conio.h>
void main()
{
initgraph(640, 480);
for(int y=100; y<200; y+=10)
line(100, y, 300, y);
getch();
closegraph();
}
换一下循环的范围和间隔,看看效果。
还可以用来画渐变色,例如:
#include <graphics.h>
#include <conio.h>
void main()
{
initgraph(640, 480);
for(int y=0; y<256; y++)
{
setcolor(RGB(0,0,y));
line(100, y, 300, y);
}
getch();
closegraph();
}
[作业]
1. 画围棋棋盘。
2. 画中国象棋的棋盘
3. 画国际象棋的棋盘,看手册找到颜色填充语句,实现过期象棋棋盘的区块填充。
4. 自学while语句。

