代码块:
方法一:(用双层循环控制结构)
#include <stdio.h> #include <stdlib.h> int main() { int i, j, k, n; char sign='Z'; printf("Please enter n: "); scanf_s("%d", &n); while(n<2||n>7){ printf("Error! Retry!\nPlease enter n: "); scanf_s("%d", &n); } for(i=0; i<n; i++){ for(j=n-i-1; j>0; j--) printf(" "); printf("%c", sign--); if(i){ for(k=0; k<2*i-1; k++) printf(" "); printf("%c", sign--); } printf("\n"); } for(i=n-1; i>0; i--){ for(j=0; j<n-i; j++) printf(" "); printf("%c", sign--); if(i!=1){ for(k=0; k<2*i-3; k++) printf(" "); printf("%c", sign--); } printf("\n"); } system("pause"); return 0; }
方法二:(用函数结构设计)
#include <stdio.h> #include <stdlib.h> void inputNum(int *num); void outputGraphic(int *num); int main() { int *num=(int*)malloc(sizeof(int)); inputNum(num); outputGraphic(num); free(num); system("pause"); return 0; } void inputNum(int *num){ printf("Please enter n: "); scanf_s("%d", num); while(*num<2||*num>7){ printf("Error! Retry!\nPlease enter n: "); scanf_s("%d", num); } } void outputGraphic(int *num){ int i, j, k; char sign='Z'; for(i=0; i<*num; i++){ for(j=*num-i-1; j>0; j--) printf(" "); printf("%c", sign--); if(i){ for(k=0; k<2*i-1; k++) printf(" "); printf("%c", sign--); } printf("\n"); } for(i=*num-1; i>0; i--){ for(j=0; j<*num-i; j++) printf(" "); printf("%c", sign--); if(i!=1){ for(k=0; k<2*i-3; k++) printf(" "); printf("%c", sign--); } printf("\n"); } }
方法三:(极简写法)
#include <stdio.h> #include <stdlib.h> int main() { int i, j, k, n, sign='Z'; printf("Please enter n: "); scanf_s("%d", &n); while(n<2||n>7){ printf("Error! Retry!\nPlease enter n: "); scanf_s("%d", &n); } for(i=0; i<n; printf("\n"), i++){ for(j=n-i-1; j>0; printf(" "), j--); printf("%c", sign--); if(i==0) continue; for(k=0; k<2*i-1; printf(" "), k++); printf("%c", sign--); } for(i=n-1; i>0; printf("\n"), i--){ for(j=0; j<n-i; printf(" "), j++); printf("%c", sign--); if(i==1) continue; for(k=0; k<2*i-3; printf(" "), k++); printf("%c", sign--); } system("pause"); return 0; }