for循环
允许编写一个执行指定次数的循环控制结构。
一、格式
for ( init; condition; increment )
{
statement(s);
}
二、流程图
三、分析
-
init
首先被执行,只会执行一次。该步允许声明并初始化任何循环控制变量 -
condition
如果为真,则执行循环主体。
如果为假,则不执行循环主体,控制流会出for循环。 -
increment
在执行完 for 循环主体后,控制流会跳回increment语句,该步要求更新循环控制变量。 -
条件再次被判断。如果为真,则执行循环,过程不断重复;如果为假,for 循环终止。
for循环像一个计数循环:设定一个计数器,初始化变量;在计数器达到某值之前,重复执行循环体
;每执行一轮循环,计数器值以一定方式进行调整(+1或-1)
注意:
灵活的for循环
-
init,condition,increment可以按照需要进行省略(分号不能省略)
for ( ; condition; increment ) 或 for ( init; ; increment ) 或 for ( init; condition; ) 或 for ( ; ; increment )…
-
for( ; ; ) ——> while(1){…}
该循环代表死循环,通过break退出,还可以通过ctrl+c终止
四、经典例题
1. 50个素数
#include <stdio.h>
int main()
{
int i = 2;
//scanf("%d",a);
//for(i=2;i<100;i++)
int cnt = 0;
while(cnt<50)
{
int x=0;
int isprime=1; //a是素数
for(x=2;x<i;x++)
{
if(i%x==0)
{
isprime = 0;
break;
}
}
if(isprime==1)
{
printf("%d ",i);
cnt++;
}
i++;
}
printf("\\n");
return 0;
}
嵌套的for循环
一、格式:
for (initialization; condition; increment/decrement)
{
statement(s);
for (initialization; condition; increment/decrement)
{
statement(s);
... ... ...
}
... ... ...
}
二、案例
判断上三角矩阵
#include <stdio.h>
int main( void )
{
int t, n, i, j, k;
int a, b, c=0;
int str[10][10] = {0};
int judge[10] = {0};
scanf("%d",&t);
for(i=0; i<t; i++)
{
scanf("%d",&n);
for(j=0; j<n; j++)
{
for(k=0; k<n; k++)
{
scanf("%d",&str[j][k]);
}
}
for(a=0;a<n;a++)
{
for(b=0; b<n; b++)
if(a>b && str[a][b]!=0)
{
judge[c] = 1;
}
}
c++;
}
for(i=0; i<t; i++)
{
if(judge[i]==1)
printf("NO\\n");
else
printf("Yes\\n");
}
}
打印九九乘法表
#include <stdio.h>
int main()
{
int i, j;
int n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
printf("%d*%d=%-4d",j, i, i*j);
}
if(i!=n)
{
printf("\n");
}
}
return 0;
}