1,外層控制行數,內層控制列數。
2,當列數與行數掛鈎時:
先判斷行數與要打印的東西有無關系,
若有,依情況分析。(如 九九乘法表)
int main(void) { //1*1在左上角 for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i ; j++) { printf("%dx%d=%d ", j, i, i*j); } printf("\n"); } //1*1在左下角 for (int i = 9; i >= 1; i--) { for (int j = 1; j <= i ; j++) { printf("%dx%d=%d ", j, i, i*j); } printf("\n"); } //1*1在右上角 for (int i = 1; i <= 9; i++) { for (int j = 9; j >i; j--) //打印空格 { printf("\t"); } for (int k = i; k >= 1; k--) //打印式子 { printf("%dx%d=%2d ", i, k, i*k); } printf("\n"); } //1*1在右下角 for (int i = 9; i >= 1; i--) { for (int j = 9; j > i; j--) //打印空格 { printf("\t"); } for (int k = i; k >= 1; k--) //打印式子 { printf("%dx%d=%2d ", i, k, i*k); } printf("\n"); } system("pause"); }
就像里面的 //1*1在左下角 外層循環初始條件已經被限定為 9了。
若無,本人習慣 默認外層循環遞增(當然也可以外層循環遞減,只是內層循環要反過來)
於是,若無
1,控制列數遞增。
首先,外層循環遞增,設好內層循環變量,再讓內層循環的結束條件與外層循環變量掛鈎。然后內層循環變量遞增
2,控制列數遞減。
首先,外層循環遞增,設好內層循環變量,再讓內層循環的結束條件與外層循環變量掛鈎。然后內層循環變量遞減
// * // * * * // * * * * * // * * * * * * * // * * * * * // * * * // * int main(void) { int i = 0; int j = 0; int k = 0; for (i = 0; i < 4; i++) //4代表有4行 { for (j = 0; j < 7-2*i; j++) //7代表第一行有7個 2代表每行差2個 { printf(" "); }
// for (j = 7 - 2 * i - 1; j >= 0; j--) //當然,初始條件不同,自然是要反過來
// {
// printf(" ");
// } for (k = 0; k < 1 + 2 * i; k++) { printf("* "); } printf("\n"); } for (i = 0; i < 3; i++) { for (j = 0; j < 3+2*i; j++) { printf(" "); } for (k = 0; k <=4-2*i; k++) { printf("* "); } printf("\n"); } system("pause"); return 0; }
注意這里與九九的區別,這里的遞增是遞增2的,對此可以控制循環增量,我用的是控制終止條件。
另外是打印隨意行數菱形(有奇數偶數之分):
int main(void) { int n; while (scanf("%d", &n) != EOF) { int m = (n + 1) / 2; for (int i = 1; i <= m; i++) { for (int j = 1; j <= m - i; j++) { printf(" "); } for (int k = 1; k < 2 * i; k++) { printf("* "); } printf("\n"); } for (int i = 1; i <= m; i++) { for (int j = 1; j <= i - (n + 1) % 2; j++) { printf(" "); } for (int k = 1; k < 2 * m - 2 * i + 2 * ((n + 1) % 2); k++) { printf("* "); } printf("\n"); } } system("pause"); return 0; }
========= ======== ====== ====== ====== ===== ==== === == =
心,若沒有棲息的地方,到哪里都是流浪
—— 三毛