目录
一、循环三要素
1.循环变量的初始化
2.有循环条件
3.有使循环趋于结束的语句。
二、go to语句(禁用)
1.goto语句为无条件转向语句,一般形式为:goto 语句标号;
2.禁用该语句
eg 与if构成循环 loop位语句标号,通过goto语句,可以到达loop所在代码的地方
int i;
int sum = 0;
i = 1; //循环变量初始化
loop:
if(i <= 100) //循环条件
{
sum += i;
++i; //使循环趋于结束的语句
goto loop;
}
printf("%d\n",sum);
return 0;
三、while语句
一般形式为 while(表达式)语句
先判断表达式后执行语句 循环变量最终的值为第一次不满足循环条件的值
谷歌要求规范:无论有几行执行代码,“{}”不能省且独占一行;
eg 判断输入的数是否为回文数
int n;
scanf("%d",&n);
int m=0;
int k=n;
while(n!=0)
{
m=m*10+n%10;
n/10;
}
if(m==k)
{
printf("yse\n");
}
else
{
printf("no\n")
}
四、do while语句
1.一般形式
do
循环体语句
while(表达式);
2.先执行一次指定的循环体语句,然后判别表达式
3.while(表达式);后的“;”不能省,会编译报错。
4.适用于某些必须要先执行一次循环体的情景
五、for语句
1.一般形式 for(表达式1;表达式2;表达式3) 语句
for(循环变量赋初值;循环条件;循环变量变化)语句
2.for语句的一般形式中的“表达式1”可以省略,此时应在for语句之前给循环变量赋初值。注意,省略表达式1时,其后的分号不能省略。
eg 打印三位数的水仙花数
int main(void)
{
int i;
for(i = 100;i < 1000;++i)
{
int a, b, c;
a = i % 10;
b = i / 10 % 10;
c = i / 100;
if(a * a * a + b * b * b + c * c * c == i)
{
printf("%d\n", i);
}
}
return 0;
}
六、循环嵌套
eg 1. 1-10000之间的水仙花数
int i;
int m = 0;
for(i = 0;i < 10000;++i)
{
int n = i;
m = 0;
while(n)
{
m = m * 10 + n % 10;
n /= 10;
}
if(m == i)
{
printf("%d\n", i);
}
}
eg2 九九乘法表
int i, j;
for(i = 1;i < 10;++i)
{
for(j = 1;j <= i;++j)
{
printf("%2d X %2d = %2d ", j, i, j * i);
}
printf("\n");
}
eg3 计算阶乘的和
int n = 3;
int sum = 0;
int i, j;
for(i = 1;i <= n;++i)
{
int t = 1;
for(j = 1;j <= i;++j)
{
t *= j;
}
sum = sum + t;
}
printf("%d\n", sum);
七、break continue
1.break只能打断当前所在循环,直接跳出整个循环
2.可通过再次判断循环条件来判断一个循环是正常结束还是break跳出的 如下eg
eg 打印100之内的素数
int i, j;
for(i = 2;i <= 100;++i)
{
for(j = 2;j < i;++j)
{
if(i % j == 0)
{
break;
}
}
if(!(j < i))
{
printf("%d\n", i);
}
}
return 0;
3.continue是短路本次循环,跳过循环体下边未执行的语句,接着进行下一次是否执行循环的判定。
eg 找出0-100能被3整除的数
int i;
int t = 0;
for(i = 0;i < 100;++i)
{
if(i % 3 != 0)
{
continue;
}
printf("%d ", i);
++t;
if(t % 8 == 0)
{
printf("\n");
}
}
printf("\n");