題目:
翔翔今天上畫畫課,老師在上課之前講了一個故事,翔翔聽得很認真:
長方體是一個聰明的小男孩兒,他生活在一個叫做“數學之木莎耳奇”的古老部落,那裏一切像世外桃源一樣美,長老們都說那是因爲他們的祖先得到了自然女神的寵愛,自然女神總是不定期的出現在他們部落,每一次, 她都只見一個有緣人,如果這個有緣人能夠通過她的考驗,她就會滿足這個有緣人的一個合理的心願。
長方體是“數學之木莎耳奇”最有靈性的男孩兒,也是最有可能成爲自然女神的有緣人的一個,長方體對此卻不以爲然,因爲他並不相信這個傳說。有一天,長方體去小河邊玩,已經有一些夥伴在河邊嬉戲,有三角形,正方形,圓,等等..。長方體見他們在那兒,轉身就走,因爲長方體不喜歡和不聰明的小孩子玩,而部落裏又屬他最聰明,所以,他總是自己一個人玩。他剛走兩步,就聽到三角形喊救命,原來是平行四邊形掉到河裏去,水並不深,但平行四邊形不會游泳,其它小孩子都嚇壞了,紛紛跑到岸上,也不敢下水,長方體見他們沒人敢去,擔心平行四邊形會有生命危險,就奮不顧身地他才突然想跳進了河裏,這時,他才突然想起,自己也不怎麼會游泳,可是,已經晚了,長方體只好賭一把, 拼死救人。
一分鐘, 兩分鐘,三分鐘....。十分鐘,長方體和平行四邊形都沒有再浮出水面。
小夥伴們都以爲他們死了,哭得好傷心,突然,長方體舉着平行四邊形衝出了水面,長方體把平行四邊形救出來了。大家都很感謝長方體,長方體什麼也沒說,就是走開了。
長方體坐在草原上看風景,自然女神出現了,她和人們說得一樣美,自然女神說:“長方體,你已經通過了我的考驗,告訴我,你有什麼願望吧?”
長方體說:“我不知道你口中的,我通過了什麼考驗,我也沒興趣知道。所謂的我的願望,我也沒有興趣告訴你,”自然女神從沒遇到過這麼有個性的小孩兒。
自然女神說:“既然你不說,那我就自作主張替你做決定了。”長方體說:“隨便你,反正,我可不會感謝你。”
自然女神知道長方體一個人玩,沒有夥伴,就創造了正方體,正方體和長方體-樣聰明,而且,正方體和長方體還十分相似呢,有許多共同的特點。長方體很喜歡這個新夥伴。長方體對自然女神說;“我很喜歡正方體,他有許多和我相似的地方,像我的影子,但又和我完全不一樣,有自己的個性。”
自然女神說:“你喜歡就好,其實,正方體是另一個特殊的你。比你自己還要特別的你。以後,你自然會明白的。”
現在請聽題,請畫出一個邊長爲n的斜二測畫法的正方體。
線段用星號代替,空白請輸出空格,行末沒有空格。
斜二測直觀圖
斜二測直觀圖是高中立體幾何的一種常見用圖。以原來的圖形參數爲藍本,將圖形的底邊保持不變,高變爲原來的1/2,90°角自動更改爲45°角,這樣得到的就是斜二測直觀圖。斜二測直觀圖的面積與原圖形的面積比爲1:2√2。
輸入格式:
一個數字n(6≤n≤100),保證n爲偶數
輸出格式:
一個正方體,線段用星號代替,空白請輸出空格,要求圖形的上下(或左右)不能有一整個空行(或一整個空列)。
輸入樣例:
8
輸出樣例:
********
* **
* * *
******** *
* * *
* * *
* * *
* * *
* * *
* **
********
代碼:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
char a[500][500];
memset(a,0,sizeof(a));
for(int i=0;i<n/2;i++)
{
for(int j=0;j<n/2+n-1;j++)
{
if(j>=n/2-i-1&&i==0)a[i][j]='*';
else if(i==n/2-1&&j<n-1)a[i][j]='*';
else if(j==n/2-i-1||j==n/2-i+n-1-1){
a[i][j]='*';
if(j==n/2-i+n-2)a[i+n-1][j]='*';
}
//else a[i][j]=' ';
}
}
for(int i=n/2;i<n+n/2-1;i++)
{
for(int j=0;j<n;j++)
{
if(j==0||j==n-1)a[i][j]='*';
//else a[i][j]=' ';
}
}
for(int i=0;i<n;i++)
{
a[i][n+n/2-2]='*';
}
for(int j=0;j<n;j++)
{
a[n+n/2-2][j]='*';
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n+n/2-1;j++)
{
cout<<a[i][j];
}
cout<<endl;
}
int c=2;
for(int i=n;i<n+n/2-2;i++)
{
for(int j=0;j<n+n/2-c;j++)
{
cout<<a[i][j];
}
c=c+1;
cout<<endl;
}
for(int j=0;j<n;j++)
{
cout<<a[n+n/2-2][j];
}
}
return 0;
}