C語言編程 兩種方法打印一個菱形(漸入顯示)
阿新 • • 發佈:2019-03-25
nag 支持 一個 left c語言 stdio.h watermark char () <1>第一種方法,利用字符數組定義一個空格數組和一個符號數組,
然後找到數組中間的元素,操作空格字符從中間開始向兩邊與符號數組的元素互換,
每互換一次進行一次輸出,打印上半個菱形和下半個菱形需要兩個for語句的支持。
源代碼如下:
#include<stdio.h> #include<stdlib.h> #include<windows.h>//為了使用延時語句Sleep而調用 int main() { char suu1[] = "*****************************************";//符號語句 char suu2[] = " ";//空格語句 int right, left=0, mid; right = strlen(suu2)-1; mid = left + (right - left) / 2; for (left = mid , right = mid ; left >= 0&&right<=strlen(suu2)-1 ; left--, right++)//上半部分打印 { suu2[left] = suu1[left]; suu2[right] = suu1[right]; printf("%s\n", suu2); Sleep(600);//延時操作 } for (left = 0, right = strlen(suu1)-1; left <=mid && right >=mid; left++, right--)//下半部分打印 { suu2[left] = ‘ ‘; suu2[right] = ‘ ‘; printf("%s\n", suu2); Sleep(600); } system("pause"); return 0; }
這種方法較為淺顯易懂,但缺點是菱形的大小是通過所定義的字符數組的長度來定義的,不是特別靈活。
<2>
第二種方法算法上相比第一種較為復雜,但是可操控性比較高,主要是通關觀察來得到所打印符號的行,列和符號個數之間的數學關系來打印。
源代碼如下:
#include<stdio.h> #include<stdlib.h> int main() { int line = 0,m,k; scanf("%d", &line);//通過輸入來確定菱形的大小 int i = 0; for (i = 0; i < line; i++)//上半部分打印 { for (m = 0; m<line - 1 - i; m++)//觀察所得關系式 printf(" "); for (m= 0; m <2 * i+ 1; m ++) { printf("*"); } printf("\n"); } for (i = 0; i < line-1; i++)//下半部分打印 { for (m = 0; m<=i; m++) printf(" "); for (m = 0; m <2 * (line-i-1)-1; m++)//觀察得到的關系式 { printf("*"); } printf("\n"); } system("pause"); return 0; }
運行結果實例:
C語言編程 兩種方法打印一個菱形(漸入顯示)