C學習之路-使用C列印金字塔
阿新 • • 發佈:2018-12-02
#include <stdio.h> //for迴圈 func1(int height){ int width=1; int height_temp=1; for(;height_temp<=height;height_temp++){ for(width;width<=(height-height_temp);width++){ printf(" "); } width=1; for(width;width<=(height_temp*2-1);width++){ printf("*"); } width=1; printf("\n"); } } //while迴圈 func2(int height){ int width=1; int height_temp=1; while(height_temp<=height){ while(width<=(height-height_temp)){ printf(" "); width++; }; width=1; while(width<=(height_temp*2-1)){ printf("*"); width++; }; width=1; printf("\n"); height_temp++; } } //do_while迴圈 func3(int height){ int height_temp=1; int sum = height; do{ int space = (sum-height_temp); do{ if(space<=0)break; printf(" "); }while(space-=1); int star = 0; star=(height_temp*2)-1; do{ if(star<=0)break; printf("*"); }while(star-=1); height_temp++; printf("\n"); }while(height-=1); } //列印橫向* func5_1(int width){ if(width<=0)return; printf("*"); func5_1(width-=1); } //列印空格 func5_2(int space){ if(space<=0)return; printf(" "); func5_2(space-=1); } //遞迴 func5(int height,int sum){ if(height<=0)return; func5(height-=1,sum); int star = height+1; func5_2(sum-star); func5_1(star*2-1); printf("\n"); } int main(){ printf("請輸入你需要建造的金字塔層數:"); int height; scanf("%d",&height); func1(height); func2(height); func3(height); func5(height,height); }