C语言for循环嵌套讲解
#include"stdio.h"#include"conio.h"main(){inta=7,b,i,j;clrscr();for(i=1;i<=a;i++){b=i<...
#include "stdio.h"
#include "conio.h"
main()
{ int a=7,b,i,j;
clrscr();
for(i=1;i<=a;i++)
{ b=i<4? i: 8-i;
for(j=1;j<=b;j++) printf("o");
for(j=1;j<=b;j++) printf("A");
printf("\n");
}
getch();
}
能不能将详细点,具体是怎么运行的?我是初学者,麻烦大家了~ 展开
#include "conio.h"
main()
{ int a=7,b,i,j;
clrscr();
for(i=1;i<=a;i++)
{ b=i<4? i: 8-i;
for(j=1;j<=b;j++) printf("o");
for(j=1;j<=b;j++) printf("A");
printf("\n");
}
getch();
}
能不能将详细点,具体是怎么运行的?我是初学者,麻烦大家了~ 展开
4个回答
展开全部
循环的过程是先执行第一个大循环for(i=0;i<3;i++),此句中先给i赋值0,在判断条件i<3是否成立赋值后的i=0了,所以条件成立,成立则做下面一条语句,就是for(j=0;j<4;j++),同样这个循环还是先赋值j=0,在进行判断j<4是否成立,成立就再做下一句。
此时scanf语句后面已经没有语句了,所以程序就会跳上去到第二个循环中,即for(j=0;j<4;j++)这句话中,可能你会问为什么不是第一句
(因为在循环嵌套中只有循环体执行完成所以的任务后才执行下面的语句,就是for(j=0;j<4;j++)
要全部执行完毕才能执行后面的语句。即j<4条件为假时跳出)跳到for(j=0;j<4;j++)这个循环体以后。就会自动加一,就是执行j++(注:在这个for里面的j=0不再执行),这个赋值过程只在开始时执行。所以 j 这个循环要执行到条件不满足时停止,即最后j的值要>=4.。
这样 j 这个循环就结束了。结束后又跳到了第一句。因为第二个for是包含在第一个for 里的。只有第一个for 里包含的语句全部执行完后第一个for就再一次执行i++,i 变成了2,判断条件i<3成立,就再执行下一句,所以下面的for(j=0;j<4;j++)又要再一次执行。执行完后就在回到第一个for执行。
原理:
i=0,j 执行4次,给a[0][0],a[0][1],a[0][2],a[0][3]赋值
i=1,j 执行4次,给a[1][0],a[1][1],a[1][2],a[1][3]赋值
i=2,j 执行4次,给a[2][0],a[2][1],a[2][2],a[2][3]赋值
i=3跳出.
还有不懂再问
此时scanf语句后面已经没有语句了,所以程序就会跳上去到第二个循环中,即for(j=0;j<4;j++)这句话中,可能你会问为什么不是第一句
(因为在循环嵌套中只有循环体执行完成所以的任务后才执行下面的语句,就是for(j=0;j<4;j++)
要全部执行完毕才能执行后面的语句。即j<4条件为假时跳出)跳到for(j=0;j<4;j++)这个循环体以后。就会自动加一,就是执行j++(注:在这个for里面的j=0不再执行),这个赋值过程只在开始时执行。所以 j 这个循环要执行到条件不满足时停止,即最后j的值要>=4.。
这样 j 这个循环就结束了。结束后又跳到了第一句。因为第二个for是包含在第一个for 里的。只有第一个for 里包含的语句全部执行完后第一个for就再一次执行i++,i 变成了2,判断条件i<3成立,就再执行下一句,所以下面的for(j=0;j<4;j++)又要再一次执行。执行完后就在回到第一个for执行。
原理:
i=0,j 执行4次,给a[0][0],a[0][1],a[0][2],a[0][3]赋值
i=1,j 执行4次,给a[1][0],a[1][1],a[1][2],a[1][3]赋值
i=2,j 执行4次,给a[2][0],a[2][1],a[2][2],a[2][3]赋值
i=3跳出.
还有不懂再问
展开全部
第一个for 是要打 i行.
然后 b=i<4? i: 8-i; 这个的意思是 ..如果i<4 b取i 否则取8-i
第二个for是每行 要打b个 o
第三个for是每行 要打b个 A
如果还有问题 可以继续追问
然后 b=i<4? i: 8-i; 这个的意思是 ..如果i<4 b取i 否则取8-i
第二个for是每行 要打b个 o
第三个for是每行 要打b个 A
如果还有问题 可以继续追问
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
11
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
从for循环开始:
i=1,对于b=i<4?i:8-i这个语句,由于?:这是个条件运算符,它的优先级高于赋值运算符=。所以,先进性后面的运算。由于i=1,所以i<4为真,于是b=i=1。然后执行第二个for循环。j从1到b,由于b=1,所以只循环一次,输出一个“o”,最后执行第三个for循环。和第二个一样只循环一次。输出一个“A”。i=1的循环结束。
i=2和i=3同上。只是第二次和第三次for循环循环2次。
i=4,由于i<4为假,所以,b=8-i=4。然后执行第二个for循环,j从1到b,由于b=2,所以循环进行2次。输出2个“o”,最后执行第三个for循环。和第二个一样循环2次,输出2个“A”。
i=5和i=6和i=7同上。
i=1,对于b=i<4?i:8-i这个语句,由于?:这是个条件运算符,它的优先级高于赋值运算符=。所以,先进性后面的运算。由于i=1,所以i<4为真,于是b=i=1。然后执行第二个for循环。j从1到b,由于b=1,所以只循环一次,输出一个“o”,最后执行第三个for循环。和第二个一样只循环一次。输出一个“A”。i=1的循环结束。
i=2和i=3同上。只是第二次和第三次for循环循环2次。
i=4,由于i<4为假,所以,b=8-i=4。然后执行第二个for循环,j从1到b,由于b=2,所以循环进行2次。输出2个“o”,最后执行第三个for循环。和第二个一样循环2次,输出2个“A”。
i=5和i=6和i=7同上。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询