## 標題:打印圖形
小明在X星球的城堡中發現瞭如下圖形和文字:
rank=3
*
* *
* *
* * * *
rank=5
*
* *
* *
* * * *
* *
* * * *
* * * *
* * * * * * * *
* *
* * * *
* * * *
* * * * * * * *
* * * *
* * * * * * * *
* * * * * * * *
* * * * * * * * * * * * * * * *
ran=6
*
* *
* *
* * * *
* *
* * * *
* * * *
* * * * * * * *
* *
* * * *
* * * *
* * * * * * * *
* * * *
* * * * * * * *
* * * * * * * *
* * * * * * * * * * * * * * * *
* *
* * * *
* * * *
* * * * * * * *
* * * *
* * * * * * * *
* * * * * * * *
* * * * * * * * * * * * * * * *
* * * *
* * * * * * * *
* * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
小明開動腦筋,編寫了如下的程序,實現該圖形的打印。
#define N 70
void f(char a[][N], int rank, int row, int col)
{
if(rank==1){
a[row][col] = '*';
return;
}
int w = 1;
int i;
for(i=0; i<rank-1; i++) w *= 2;
____________________________________________;
f(a, rank-1, row+w/2, col);
f(a, rank-1, row+w/2, col+w);
}
int main()
{
char a[N][N];
int i,j;
for(i=0;i<N;i++)
for(j=0;j<N;j++) a[i][j] = ' ';
f(a,6,0,0);
for(i=0; i<N; i++){
for(j=0; j<N; j++) printf("%c",a[i][j]);
printf("\n");
}
return 0;
}
請仔細分析程序邏輯,填寫缺失代碼部分。
通過瀏覽器提交答案。注意不要填寫題目中已有的代碼。也不要寫任何多餘內容(比如說明性的文字)
根據分塊處理得思想, 將圖形劃分爲, 上, 左, 右3塊.
再根據給出的劃分標識位置, 得出所缺的上遞推代碼.
如圖: 標識位行和列, 分別標記的是左下頂點區域, 於是缺少的上面部分, 就是兩者取中.
f(a, rank-1, row, col + w / 2);// 處理上面
f(a, rank-1, row+w/2, col);// 處理左下
f(a, rank-1, row+w/2, col+w);// 處理右下