单语句,思维导图略。
首先看一段while的代码:
#include <stdio.h>
int main()
{
int i = 1;
while (i<=10)
{
printf("%d ", i);
i++;
}
return 0;
}
结果是:
那么在for循环中 ,这个程序该如何表达呢?OK,首先,for语句的语法是啥:
for (初始化;判断;调整)
循环语句;
所以说,在for循环中,代码要怎么写?OK,代码如下:
#include <stdio.h>
int main()
{
int i = 0;
for ( i = 1; i <=10; i++)
{
printf("%d ", i);
}
return 0;
}
对应一下语法,OK,简单明了。
下一个,break在for中的作用:终止循环
看一下代码:
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i==5)
{
break;
}
printf("%d ", i);
}
return 0;
}
运行结果是:
也就是说,在i等于5的时候,循环终止,跳出循环。OK,break介绍完了,下一个是啥,没错,continue:看一下下面的代码:
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i == 5)
{
continue;
}
printf("%d ", i);
}
return 0;
}
执行结果是:
就是说,跳过了5继续执行,我们强调一下:在for循环中,continue,跳到调整部分,但是在while循环中直接跳过调整部分。
再来看一下误区,在for循环中,在中间调整变量会怎么样呢,试一下这段程序:
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
i = 5;
}
return 0;
}
结果如下:
是在不断打印6而不停止,是因为i修改为5之后i在判断时恒为真,导致死循环。
再来看一个案例:
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
i++;
}
return 0;
}
结果如下:
这样是i加两次,所以说,不要再循环内部再修改变量,容易造成误解或者错误,这种写法虽然不错,但是不建议 ,下面一个也是相似案例:
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
int j = 0;
for (j= 0; j < 10; i++)
{
printf("haha\n");
}
}
return 0;
}
运行结果显而易见:
又是在无限循环中迷失了自我,OK,往下:
下面给出一些建议:
1.不可以在循环体内修改循环变量,防止for循环失去控制
2.建议for语句控制的变量的取值采用“前闭后开区间”写法
第二个是什么意思呢,看一下这段代码:
#include <stdio.h>
int main()
{
int arr[10] = { 0 };
int i = 0;
for ( i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
OK,仔细看,后面改了什么:
#include <stdio.h>
int main()
{
int arr[10] = { 0 };
int i = 0;
for ( i = 0; i <= 9; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
这种写法是没问题的,但是只能说,建议!
再来看一下for的一些变种:
#include <stdio.h>
int main()
{
//变种1
for (; ; )
{
printf("haha\n");
}
//变种2
int x, y;
for(x=0,y=0;x<2&&y<5;++x,y++)
{
printf("haha\n");
}
return 0;
}
首先,变种一,判断部分被省略,则判断部分恒为真,会成为死循环
其次,变种二就是说明可以多个变量同时初始化,判断和调整
强调一下初始化的作用,为什么说初始化不要乱省略:
首先是正常循环:
#include <stdio.h>
int main()
{
int i = 0;
int j = 0;
for ( i = 0; i < 3; i++)
{
for ( j = 0; j < 3; j++)
{
printf("haha\n");
}
}
return 0;
}
打印结果是:
OK,那要是初始化没了呢?看一下这段代码:
#include <stdio.h>
int main()
{
int i = 0;
int j = 0;
for (; i < 3; i++)
{
for (; j < 3; j++)
{
printf("haha\n");
}
}
return 0;
}
运行结果就不一样了:
意想不到的,打印出来是三个,不要乱省略
最后看一道笔试题目:
//问题:该循环会执行几次?
#include <stdio.h>
int main()
{
int i = 0;
int k = 0;
for (i = 0, k = 0; k = 0; i++, k++)
k++;
return 0;
}
结果是0次,没想到吧,在C语言中,0是假,一个等号是赋值,赋值为假,一次都不循环。
OK,相关代码我会同步到我的码云上,欢迎交流与学习:C语言学习之路: C语言学习当中做的相关代码 - Gitee.com