用C語言在螢幕上輸出一個菱形
阿新 • • 發佈:2019-02-05
解題思路
為了在螢幕上輸出一個如下圖的圖形
我們首先對圖形進行觀察,不難發現該圖形為高度對稱圖形,從上至下“ * ”的符號每一行均多兩個,然後到中間段,後面每一行便逐行減少兩個“ * ”。這便是其中的規律
程式碼如下
#include<stdio.h> #include<windows.h> int main() { int i = 0;//此處的i在程式中表示為菱形的行數 for (i = 0; i < 7; i++)//首先對菱形的上半部分進行列印,此處我們可以用迴圈來實現 { int j = 0;//j在程式中表示為從左至右的位置 for (j = 0; j < 7 - i - 1; j++)//因為我們無法直接在一段距離後輸出‘ * ’,所以我們可以使用‘ ’來實現 { printf(" "); } for (j = 0; j < 2 * i + 1; j++)//此處便是輸出我們菱形主體部分,而菱形的*與行數的關係為2*i+1 { printf("*"); } printf("\n"); } for (i = 0; i < 7; i++) { int j = 0; for (j = 0; j < i + 1; j++) { printf(" "); } for (j = 0; j < 2 * (7 - i - 1) - 1; j++) { printf("*"); } printf("\n"); } system("pause"); return 0; }
當然,這個程式只能幫助我們實現固定列印,所以我們對程式進行稍加改進便可以實現動態列印
#include<stdio.h> #include<windows.h> int main() { int i = 0; int line = 0; scanf_s("%d", &line); for (i = 0; i < line; i++) { int j = 0; for (j = 0; j < line - i - 1; j++) { printf(" "); } for (j = 0; j < 2 * i + 1; j++) { printf("*"); } printf("\n"); } for (i = 0; i < line; i++) { int j = 0; for (j = 0; j < i + 1; j++) { printf(" "); } for (j = 0; j < 2 * (line - i - 1) - 1; j++) { printf("*"); } printf("\n"); } system("pause"); return 0; }