目錄
?一、問題分析
上部分:
下部分:
?二、代碼演示
?
?一、問題分析
如上圖所示,我們可以將棱形進行拆解,分為上下兩個部分。
上部分:
?通過觀察,我們得到? ?單邊空格數 =? 上半部分總行數? ?-? ?行數? - 1??
而? ?星號 =? 行數 × 2? ?+ 1
所以我們設? line? 為上半部分總行數? ?i 為行數 。
那么代碼如下:
for(i=0; i<line; i++){//打印一行//打印空格int j = 0;for(j=0; j<line-1-i; j++){printf(" ");//打印空格}//打印*for(j=0; j<2*i+1; j++){printf("*");//打印星號}printf("\n");}
下部分:
通過觀察,我們得知? ?下半部分的? ?單邊空格數 = 行數??
下半部分的? 星號 =? (下半部分總行數 - 行數 )× 2 - 1
于是我們可以設 下半部分總行數為? 上半部分行數-1? 也就是 line? -1? , i為行數
那么代碼如下:
for(i=0; i<line-1; i++){//打印一行int j = 0;for(j=0; j<=i; j++){printf(" ");//打印空格}for(j=0; j<2*(line-1-i)-1; j++){printf("*");//打印星號}printf("\n");}
?二、代碼演示
int main()
{int line = 0;int i = 0;scanf("%d", &line);//7//打印上半部分for(i=0; i<line; i++){//打印一行//打印空格int j = 0;for(j=0; j<line-1-i; j++){printf(" ");}//打印*for(j=0; j<2*i+1; j++){printf("*");}printf("\n");}//打印下半部分for(i=0; i<line-1; i++){//打印一行int j = 0;for(j=0; j<=i; j++){printf(" ");}for(j=0; j<2*(line-1-i)-1; j++){printf("*");}printf("\n");}return 0;
}