level 10
w15tp
楼主
首先 源代码是 这样的
#include<stdio.h>
int main(void)
{
int i;
int k;
int j;
for(i = 0; i < 4; i++)
{
for(j = 0; j <= 2-i; j++)
{
printf(" ");
}
for(k = 0; k <= 2*i; k++)
{
printf("*");
}
printf("\n");
}
return 0;
}
首先 最开始 的for循环 做了什么~~
for(i = 0; i < 4; i++) //貌似 暂时 看不懂,, 先略过。~~
然后理解
for(j = 0; j <= 2-i; j++)
{
printf(" ");
}
/ 因为 原来的 i 被初始化为 零, 所以在这里 j <= 2 - i 就换成j <=2 了
即, for(j = 0; j <= 2 ;j++)
这时候, j 产生了 3个单位。 即 3个空格
然后,
此时 。 i还是 0;
for(k = 0; k <= 2*i; k++)
{
printf("*");
}
即,
for(k = 0; k <= 0; k++)
也就是, k产生了 1个单位。 即 1个 * 号/。
然后是 然后。 进入下一个printf() 语句, 输出转折, 进入下一行。(即下一次循环)
此时 第一行的结果就是 ( ~ 表示空格)
~~~*
因为 for 中 初始数值 只在第一次的时候被引用, 即,
此刻, i 被 i++ 影响, 由 0 变为 1;
然后,进入 第一个for 循环,, 即
for(j = 0; j <= 2-i; j++)
替换掉 i就是
for(j = 0; j <= 2-1; j++)
也就是 j < 1
又因为 j 的初始数值是 0 。 也就是说。。 j++ 只能产生两个 单位,即 两个空格。
然后,第二个 for 循环 。
for(k = 0; k <= 2*i; k++)
替换掉 i ,
k <= 2*1 == k<=2;
自然的, k 也产生了三个单位, 即 ***
然后,进入 printf() 语句, 受此影响进入下一行。
此时的结果就是
~~***
结合前面的 ~~~* 就是
~~~*
~~***
怎么样 ,是不是 有了 初步的样子。。
以后的循环同理可得出结果~~~
2014年01月20日 07点01分
1
#include<stdio.h>
int main(void)
{
int i;
int k;
int j;
for(i = 0; i < 4; i++)
{
for(j = 0; j <= 2-i; j++)
{
printf(" ");
}
for(k = 0; k <= 2*i; k++)
{
printf("*");
}
printf("\n");
}
return 0;
}
首先 最开始 的for循环 做了什么~~
for(i = 0; i < 4; i++) //貌似 暂时 看不懂,, 先略过。~~
然后理解
for(j = 0; j <= 2-i; j++)
{
printf(" ");
}
/ 因为 原来的 i 被初始化为 零, 所以在这里 j <= 2 - i 就换成j <=2 了
即, for(j = 0; j <= 2 ;j++)
这时候, j 产生了 3个单位。 即 3个空格
然后,
此时 。 i还是 0;
for(k = 0; k <= 2*i; k++)
{
printf("*");
}
即,
for(k = 0; k <= 0; k++)
也就是, k产生了 1个单位。 即 1个 * 号/。
然后是 然后。 进入下一个printf() 语句, 输出转折, 进入下一行。(即下一次循环)
此时 第一行的结果就是 ( ~ 表示空格)
~~~*
因为 for 中 初始数值 只在第一次的时候被引用, 即,
此刻, i 被 i++ 影响, 由 0 变为 1;
然后,进入 第一个for 循环,, 即
for(j = 0; j <= 2-i; j++)
替换掉 i就是
for(j = 0; j <= 2-1; j++)
也就是 j < 1
又因为 j 的初始数值是 0 。 也就是说。。 j++ 只能产生两个 单位,即 两个空格。
然后,第二个 for 循环 。
for(k = 0; k <= 2*i; k++)
替换掉 i ,
k <= 2*1 == k<=2;
自然的, k 也产生了三个单位, 即 ***
然后,进入 printf() 语句, 受此影响进入下一行。
此时的结果就是
~~***
结合前面的 ~~~* 就是
~~~*
~~***
怎么样 ,是不是 有了 初步的样子。。
以后的循环同理可得出结果~~~