當前位置:編程學習大全網 - 源碼下載 - c語言可以通過做壹個十字dos形狀來控制層數。

c語言可以通過做壹個十字dos形狀來控制層數。

編譯器:?渦輪增壓?c?2.0

#包含?& ltstdio.h & gt

#包含?& ltstdlib.h & gt

常數

int?空間?=?'.';

int?STAR=?'$';

//?獲取每行的字符數。

int?getRowLength(int?層計數)

{

回歸?5?+?layerCount?*?4;

}

//?初始化

作廢?clearAll(char*?buf,?int?層計數)

{

int?尺寸?=?getRowLength(layer count);

尺寸?=?尺寸?*?尺寸;

為了什麽?(int?I = 0;?我& lt尺寸;?i++)

buf[i]?=?空間;

}

//?顯示模式

作廢?drawAll(char*?buf,?int?層計數)

{

int?羅蘭?=?getRowLength(layer count);

char*?pbuf?=?buf

為了什麽?(int?I = 0;?我& lt羅蘭;?i++)

{

為了什麽?(int?j = 0;?j & lt羅蘭;?j++)

printf("%c ",* pbuf++);

printf(" \ n ");

}

}

//?畫壹條水平線

作廢?drawHLine(char*?buf,?int?層計數,?int?x1,?int?x2,?int?y)

{

int?羅蘭?=?getRowLength(layer count);

為了什麽?(int?我?=?x 1;?我?& lt=?x2;?i++)

buf【我?+?羅蘭?*?y]?=?明星;

}

//?畫壹條垂直線

作廢?drawVLine(char*?buf,?int?層計數,?int?x,?int?y1,?int?y2)

{

int?羅蘭?=?getRowLength(layer count);

為了什麽?(int?我?=?y 1;?我?& lt=?y2;?i++)

buf[x?+?我?*?羅蘭]?=?明星;

}

//?畫壹個中間的十字

作廢?繪圖中心(char*?buf,?int?層計數)

{

int?x,?y,?羅蘭?=?getRowLength(layer count);

x?=?羅蘭?/?2;

y?=?羅蘭?/?2;

drawHLine(buf,層計數,?x-2,?x+2,?y);

drawVLine(buf,層計數,?x,?y-2,?y+2);

}

//?繪制第壹層

作廢?drawLayer(char*?buf,?int?層,?int?層計數)

{

int?cx,?cy?n,?偏移,?羅蘭?=?getRowLength(layer count);

cx?=?羅蘭?/?2;

cy?=?羅蘭?/?2;

n?=?層?*?2;

抵消?=?2?+?層?*?2;

drawVLine(buf,層計數,?cx?-?偏移,?cy?-?n,?cy?+?n);

drawVLine(buf,層計數,?cx?+?偏移,?cy?-?n,?cy?+?n);

drawHLine(buf,層計數,?cx?-?n,?cx?+?n,?cy?-?偏移);

drawHLine(buf,層計數,?cx?-?n,?cx?+?n,?cy?+?偏移);

drawVLine(buf,層計數,?cx?-?n,?cy?-?偏移,?cy?-?抵消?+?2);

drawVLine(buf,層計數,?cx?+?n,?cy?-?偏移,?cy?-?抵消?+?2);

drawVLine(buf,層計數,?cx?-?n,?cy?+?抵消?-?2,?cy?+?偏移);

drawVLine(buf,層計數,?cx?+?n,?cy?+?抵消?-?2,?cy?+?偏移);

drawHLine(buf,層計數,?cx?-?n?-?2,?cx?-?n,?cy?-?n);

drawHLine(buf,層計數,?cx?+?n,?cx?+?n?+?2,?cy?-?n);

drawHLine(buf,層計數,?cx?-?n?-?2,?cx?-?n,?cy?+?n);

drawHLine(buf,層計數,?cx?+?n,?cx?+?n?+?2,?cy?+?n);

}

//?返回n層所需的緩沖區大小。

int?getBufferSize(int?層計數)

{

int?羅蘭?=?getRowLength(layer count);

回歸?羅蘭?*?羅蘭;

}

int?主()

{

int?圖層計數;

while (scanf("%d ",& amp層計數)!= EOF)//?閱讀層數

{

if(layer count & lt;= 0)

打破;

char*?buf?=?(char?*)malloc(getBufferSize(layer count));//?應用緩沖區

clearAll(buf,layer count);//?模式初始化

?drawCenter(buf,layer count);//?畫壹個中間的十字

為了什麽?(int?I = 1;?我& lt=層計數;?i++)//?繪制所有圖層

?drawLayer(buf,我,?layer count);

drawAll(buf,layer count);//?顯示模式

免費(buf);

}

回歸?0;

}

  • 上一篇:求C#中winform窗體裏文本框的字飄動的效果!!
  • 下一篇:Java好學嗎?感覺學不會啊
  • copyright 2024編程學習大全網