c语言中for()与for();有什么不同

 我来答
xntpii
2011-01-08 · TA获得超过1150个赞
知道小有建树答主
回答量:983
采纳率:50%
帮助的人:783万
展开全部
对于问题1
我们只讨论循环:
开始
for (i=0; i<2; i++)
i=0 往下执行 for(j=0; j<2; j++)
j=0往下执行 for(k=0; k<2; k++)

k=0 往下执行 printf(“%d %d %d\n", i, j, k);
输出 i j k 显然输出的是 0 0 0
输出后执行 k++, k值变为1 与2比较 显然 k<2 继续执行 输出
此时 i=0 j=0 k=1 输出为 0 0 1
输出后执行 k++, k值变为2 与2比较 显然 2<2 为假,跳出k循环回到上一级循环执行 j++
j=1与2比较 显然1<2 往下执行(此时i=0 , j=1)再次执行k循环int k=0
将k值重新赋值为0 执行输出 此时 i=0 j=1 k=0 输出 0 1 0
执行输出后k++,k值为1与2比较 显然1<2 继续 k的循环 此时k=2,j=1 i=0
执行输出为 0 1 1
输出后k++ ,k值为2与2比较 2<2为假跳出k循环 返回j循环 返回时k=2,j=1 i=0 执行j++ ,j的值为 2显然 2<2为假 ,跳出j循环 返回i循环 此时k=2,j=2 i=0, 执行i++,i值为1 与2比较 显然1<2 往下执行

i=1,执行 j 循环 int j=0 j值变为0
j=0 向下执行 k循环 int jk=0 k值变为0
k=0 向下执行输出 此时 i=1 j=0 k=0 输出 1 0 0
(此时回到了i=0的开始情况 )
参照前面的分析继续执行 依次会 输出 1 0 1
1 1 0
1 1 1
当输出到 1 1 1 的 时候继续想下执行k++,k值变为2 与2比较 结果为假回到j循环此时 i=1,j=1 ,k=2 ;执行j 循环中的j++,j值为2与2比较 结果为假回到i循环此时 i=1,j=2 ,k=2 ;执行i 循环中的i++,i值为2与2比较 结果为假退出循环 此时i=2,j=2 ,k=2;退出循环后下下执行结束程序

对于问题2 while(1)就是条件为永真 你用while(3) while(2) 都可以 就是while()函数的语句不停的执行 ,此时只能用跳转或者break 语句来跳出循环
但是while(0)表示永假 即while()里面的不执行 当然do while()除外 它是先执行后判断,但是也仅仅执行席次就不在执行了for(;;)里面空的意思就是条件为永真,没有退出的判别条件也就是相当于while(1)(习惯用 1 0 表示真假) 当然也可以用break或者跳转退出循环,但是那和for(;;)的判断无关。 所以for(;;)简单的讲就是条件为永真 循环不断的执行 除非遇到函数内部的跳转 或者函数里面嵌套的判断退出为止
eg : 1>
int i=0;
int j=0;
for(;;) {i++;
j++ ;} //不停的死循环
2>int i=0;
int j=0;
for(;;) {i++;
j++ ;
if(i>10)break;
}
不停的循环直到i>10由内部判断退出循环

对于问题3 你只要将 1维理解 和for语句的一维理解透彻 再在此基础上扩展就行了
多维数组可以分解为多个一维数组的 多个for的嵌套同样可以分解为一个一个的循环
只要很清晰的知道 数组下标 与判断时候条件值的状态 就好分析了
对于初学者来数 数组画图分析 以表格的形式在纸上分析,而循环语句同样的将判断的条件分解来 在纸上模拟,一步一步的跟进状态 从简单的开始慢慢深入 ,不怕麻烦 仔细研究很如意理解的.
wgyygw5
推荐于2018-04-27 · TA获得超过3287个赞
知道小有建树答主
回答量:994
采纳率:100%
帮助的人:1201万
展开全部
注意:
“;”在c语言中代表一条语句,只是这条语句是空语句,不执行任何动作;
有时候写成for();会造成误解甚至形成死循环
for()
{
自己定义语句;
}

for();等价于
for()
{
;//什么都不执行的空语句
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
49580853
2011-01-07
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
一般情况下,for()后面必须有;,但如果()中的内容是表达式语句时,如for(n=1,n<100,n++)则后面;就必须去掉;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
怕用饰讼1R
2011-01-07
知道答主
回答量:4
采纳率:0%
帮助的人:0
展开全部
for();证明该语句已经结束。for()不是一个完整的表达式,后面还有内容。C语言中用分号来标示表达式的结束。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
刘小祯
2011-01-07 · TA获得超过219个赞
知道答主
回答量:297
采纳率:0%
帮助的人:174万
展开全部
for()表示循环、
for();表示这个语句结束、、
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式