為什么是 金字塔
#include <stdio.h>
int main()
{
? ? int i, j, k;
? ? for(i=1; i<5; i++)
? ? {
? ? ? ? /* 觀察每行的空格數(shù)量,補(bǔ)全循環(huán)條件 */
? ? ? ? for(j=i;j<5;j++) ?
? ? ? ? {
? ? ? ? ? ? printf(" "); ? ?//輸出空格
? ? ? ? }
? ? ? ? /* 觀察每行*號的數(shù)量,補(bǔ)全循環(huán)條件 */
? ? ? ? for(k=0;k<2*i-1;k++)?
? ? ? ? {
? ? ? ? ? ? printf("*"); ? //每行輸出的*號
? ? ? ? }
? ? ? ? printf("\n"); ? ? //每次循環(huán)換行
? ? }
? ? return 0;
}
為什么是金字塔 而不是 ?
?..............................................*
?..............................................* * *
?..............................................* * * * *
?..............................................* * * * * * *
2016-09-28
(j=i;j<5;j++)
第一行:J和I一樣大小初始為1 ,因為J<5,所以還可以進(jìn)行循環(huán) ?,然后J++;之后J就被賦值為2,還是J<5繼續(xù)J++;......直到J不滿足J<5。
到下一個for執(zhí)行*,for的*數(shù)如上方法。
父循環(huán)一次,子循環(huán)需要全部執(zhí)行完,直到跳出循環(huán);所以下面的子循環(huán)的兩個for要全部循環(huán)完,才進(jìn)行下一個父循環(huán)。
第二行:J初始就為2了,如第一行求,來進(jìn)行第二行的空格和*的數(shù)量。
....................
2016-09-04
你如果把第一個for后面的j=i換成j=1,你就會得到你問的那個直角三角形
2016-09-01
我看錯了 ? 是這樣的 ?
2016-09-01
接3> ? ? ?i=i+1=3
j=3
j=3<5成立,輸出空格
j=j+1
j=4<5輸出空格
j=j+1
j=5=5不輸出空格 ??
執(zhí)行for下一個語句
0<3*2-1
輸出一個*
k=k+1
k=1<3*2-1=5輸出一個*
k=2<5輸出一個*
k=3輸出一個*
k=4輸出一個*
k=5不滿足 ?結(jié)束子for循環(huán)
?同理 ?i=4依上運行
當(dāng)i=5時呢?不成立的哇 ? 它只會輸出金字塔的一半 ? ? ? ? ? ? ? ? ? ? ? ?
2016-09-01
1> i = 1 ? i<5 成立
1 j=1 ?1<5 ?成立
1 輸出一個空格
1 j+1=2
2 ? 2<5 ?成立
2 ? 輸出一個空格
2 ? j=2+1=3
3 ? 3<5 ?成立
3 ? 輸出一個空格
3 ? j=3+1=4
4 ? 4<5 ?成立
4 ? 輸出一個空格?
4 ? j=4+1=5
5 ? 5<5 ?不成立 執(zhí)行下一個循環(huán)
6 ? k=0 ?0< 2x1-1 成立
6 ? 輸出一個 *
6 ? k= 0+1=1
7 ? 1<2x1-1 ?不成立 執(zhí)行下一個語句
7 ? 輸出換行符 ? 換行
7 ? i=i+1= 2
2> ? i=2<5 ?成立
1 ? j=2 2<5 成立
1 ? 輸出一個空格
1 ? j=2+1=3
2 ? 3<5 成立
2 ? 輸出一個空格
2 ? j= 3+1=4
3 ? 4<5 成立
3 ? 輸出一個空格
3 ? j= 4+1=5
4 ? 5<5 不成立 ?執(zhí)行下一個循環(huán)
5 ? k=0 ?0< 2x2-1 成立
5 ? 輸出一個 *
5 ? k = 0+1 =1
6 ? k=1 < 2x2-1 ?成立 ? ? ? ? ? ? ? ? ? ? ? ?以此類推,就完全看懂程序了
2016-09-01
看for循環(huán)內(nèi)部的第一個for循環(huán),他就是輸出空格用的