方法一:(自個寫的用數學方法尋找每行的規律,一次打印一行)有點麻煩code
#include<stdio.h> int main() { int i,j,n,k=0; /********輸入一個數用來控制打印出菱形的寬度*********/ scanf("%d",&n); char a[2*n-1][2*n-1]; /*********分兩部分打印每次打印出一行**************/ for(i=0;i<n;i++) { for(j=0;j<2*n-1;j++) { if(j>=((2*n-1)/2-i)&&j<=((2*n-1)/2+i)) /**尋找每行的規律***/ putchar('*'); else putchar('.'); } putchar(10); } for(i=n;i<2*n-1;i++) { k++;//此變量只是用於找規律而加的一個參數 for(j=0;j<2*n-1;j++) { if(j>=((2*n-1)/2-i+2*k)&&j<=((2*n-1)/2+i-2*k)) putchar('*'); else putchar('.'); } putchar(10); } return 0; }
方法二:(分六部分打印)get
#include <stdio.h> int main() { int i,j; int nu; puts("input your number:");//控制菱形的行數,不是總行數而是到中間的行數 while(1 != scanf("%d",&nu)) getchar(); //分兩大部分,每部分再分爲三部分 for(i = 0; i < nu; i ++) { for(j = nu - i; j > 0; j --) putchar('.'); for(j = 0; j < 2 * i + 1; j ++) putchar('*'); for(j = nu - i; j > 0; j --) putchar('.'); putchar(10); } for(i = 0; i < nu -1; i ++ ) { for(j = 0;j < i + 2; j ++ ) putchar('.'); for(j = 2 * (nu - i) - 3; j > 0; j -- ) putchar('*'); for(j = 0;j < i + 2; j ++ ) putchar('.'); putchar(10); } return 0; }