在c语言中,for语句的使用最为灵活,它完全可以取代while 语句。它的一般形式为:
for(表达式1;表达式2;表达式3)
{
语句;
}
它的执行过程如下:
(1)先求解表达式1。
(2)求解表达式2,若其值为真(成立),则执行for语句中指定的内嵌语句(for语句后大括号中的内容),然后执行下面第3步;若其值为假(即不成立),则结束循环,转到第5步。
(3)求解表达式3。
(4)转回上面执行第2步。
(5)循环结束,顺序执行for语句外的内容。
for(循环变量赋初值;循环条件;循环变量增量)
{
语句;
}
循环变量赋初值总是一个赋值语句,它用来给循环变量赋初值;
循环条件是一个关系表达式,它决定什么时候退出循环;
循环变量增量,定义循环控制变量每循环一次后按什么方式变化。
这三部分之间用分号(;)分隔开。
for(i=1;i<=100;i++)
{
sum=sum+i;
}
先给i赋初值1,判断i是否小于等于100,若是则执行语句,之后值增加1。再重新判断,直到条件为假,即i>100时,结束循环。
注意:
1)for循环括号中的3个表达式都可省略,但;不能缺少
2)省略表达式1,表示不对循环控制变量赋初值。
3)省略表达式2,则不做其它处理时变成为死循环。
4)省略表达式3,则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。
5)省略表达式1和表达式3
例:
for(;i<=100;)
{
sum=sum+i;
i++;
}
练习:用for循环打印1~10的和。
#include<stdio.h>
int main()
{
int i,s=0;
for(i=1;i<=10;i++)
{
s=s+i;
}
printf("%d",s);
return 0;
}
用for循环求任意数字以内的奇数和
# include<stdio.h>
int main()
{
int i,s=0,n;
printf("请输入任意数字求其奇数和:");
scanf("%d",&n);
for(i=1;i<=n;i=i+2)
{
s=s+i;
}
printf("%d以内的奇数和为:%d",n,s);
return 0;
}
水仙花数
153=13+53+33=111+555+333 水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身
# include<stdio.h>
int main()
{
int i,indiv,ten,hundred;
for(i=100;i<1000 ;i++)
{
indiv=i%10;
ten=i/10%10;
hundred=i/100;
if(i==indiv*indiv*indiv+ten*ten*ten+
hundred*hundred*hundred)
printf("%d ",i);
}
return 0;
}
for循环的嵌套
for循环打印图形
打印*横向20竖向10个
//打印横向20个*纵向10行*
#include <stdio.h>
int main()
{
int i,j;
for(j=1;j<=10;j++)
{
for(i=1;i<=20;i++)
{
printf("*");
}
printf("\n");
}
return 0;
}
输出每位数字各不相同的3位数字
①第一种方法
# include<stdio.h>
int main()
{
int i,indiv,ten,hundred,n=0;
for(i=100;i<=999;i++)
{
indiv=i%10;
ten=i/10%10;
hundred=i/100;
if(indiv != ten)
{
if(indiv != hundred)
{
if(ten != hundred)
{
n=n+1;
printf("%d ",i);
}
}
}
}
printf("一共有%d个数",n);
return 0;
}
②第二种方法
# include<stdio.h>
int main()
{
int i,j,k,n=0;
for(i=0;i<=9;i++)
{
for(j=0;j<=9;j++)
{
if(i!=j)
{
for(k=1;k<=9;k++)
{
if(i!=k && j != k)
{
n=n+1;
printf("%d ",(i+10*j+100*k));
}
}
}
}
}
printf("一共有%d个数",n);
return 0;
}
猴子第一天摘了若干桃子,第一天吃了一半多一个,第二天吃了剩下的一半多一个,···,第十天剩下一个桃子,求猴子摘了多少桃子?
十:1
九:(1+1)2=4
八:(4+1)2=10
七:(10+1)2=22
n:n=(n+1)2
#include<stdio.h>
int main()
{
int i,s=1;
for(i=9;i>=1;i--)
{
s=(s+1)*2;
}
printf("共有桃子%d个",s);
return 0;
}
张丘建《算经》
百钱买百鸡
鸡翁一钱五
鸡母一钱三
鸡雉三钱一
100钱,买多少鸡?
#include<stdio.h>
int main()
{
int i,j,k,n;
for(i=0;i<=20;i++)
{
for(j=0;j<=33;j++)
{
for(k=0;k<=99;k=k+3)
{
if((100==(5*i+3*j+k/3))&&(100==i+j+k))
{
printf("鸡翁:%d,鸡母:%d,鸡雉:%d\n",i,j,k);
}
}
}
}
return 0;
}
鸡兔同笼:168脚,70头
//168腿,70头
#include<stdio.h>
int main()
{
int i,n;
for(i=1;i<=70;i++)
{
if(2*i+4*(70-i)==168)
{
printf("鸡:%d,兔:%d\n",i,70-i);
}
}
return 0;
}
for循环打印九九乘法表
//九九乘法表
#include<stdio.h>
int main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{
printf("%d*%d=%d ",j,i,i*j);
}
printf("\n");
}
return 0;
}
打印等腰三角形
//for循环打印符号
// *
// ***
// *****
//*******
#include<stdio.h>
int main()
{
int i,j,k,n;
printf("请输入打印的行数:");
scanf("%d",&n);
for(i=1;i<=n;i=i+1)
{
for(k=1;k<=n-i;k++ )
{
printf(" ");
}
for(j=1;j<=2*i-1;j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
显示直角在左下方的任意边长等腰直角三角形
#include<stdio.h>
int main()
{
int i,j,len;
printf("边长:");
scanf("%d",&len);
for(i = 1;i <= len;i++)
{
for(j = 1;j <= i;j++)
printf("*");
printf("\n");
}
return 0;
}