c語言金字塔編程原理?
算法思路:
這個圖形有幾行,就做幾次循環,每次循環打印一行:for ( i=0;i<N;i++ ),N=3
注意i在3行中取值:0,1,2
循環體中輸出每行,每行的構成:分為前邊的空格和后面的星號
每行的空格計數:第1行(i=0)空格數2,第2行(i=1)空格數1,第3行(i=2)空格數0
那么在i循環中用i表示的空格數就是:總行數-當前行數-1=N-i-1
在i循環中新開一個循環來輸出空格,循環幾次輸出幾個空格
每行的星號計數:第1行(i=0)星號數1,第2行(i=1)星號數3,第3行(i=2)星號數5
那么在i循環中用i表示的星號數就是:當前行數*2+1=i*2+1
在i循環中新開一個循環來輸出星號,循環幾次輸出幾個空格
最后每行需要一個換行符號輸出
例程:
#include <stdio.h>
int main()
{
int number, lnumber, rnumber;
int rows,blank;
printf("Please input a number between 1 to 30:");
scanf("%d", &number);
while ( (number < 0 || number > 30) )
{
printf("Input wrong number! Please input again:");
scanf("%d", &number);
}
{
rows = (number - 1);
for (rows; rows >= 0; rows--)
{
for (blank = rows; blank >= 0; blank--)
printf(" ");
for (lnumber = 1; lnumber <= (number - rows); lnumber++)
{
printf("%d ", lnumber);
}
for (rnumber = (number - rows - 1); rnumber >= 1; rnumber--)
{
printf("%d ", rnumber);
}
printf("\n");
}
}
}