Re: [問題] 輸入N得N層等腰三角形 案ENTER旋轉90度
※ 引述《arthank02 (亂世中的碎星)》之銘言:
: 請問如何得到等腰三角?
: 我一直打只打出
: *
: **
: ***
: ****
: *****
: 不知道該如何...還有要如何讓它旋轉90度最猴回到原來的形狀
等腰三角形 還要一直旋轉
懶得想的話 就直接放在二維陣列裡面
然後陣列用row major順著印一次 反向再印一次
用column major一樣順著印一次 反向再印一次
就可以得到旋轉的四個方向了
這是我的做法
int main(void) {
int i, j, height, width, middleIdx;
char **ary = 0;
printf("請輸入高度:");
scanf("%d", &height);
printf("\n");
width = height*2-1;
middleIdx = height-1;
// 初始化等腰三角形陣列陣列
ary = (char **)malloc(height*sizeof(char *));
for (i=0; i<height; i++) {
ary[i] = (char *)malloc(width*sizeof(char));
// 初始化為一張白紙
for (j=0; j<width; j++) {
ary[i][j] = ' ';
}
// 畫上等腰三角形
ary[i][middleIdx] = '*';
for (j=1; j<=i; j++) {
ary[i][middleIdx+j] = '*';
ary[i][middleIdx-j] = '*';
}
}
// 印出箭頭向上等腰三角形
for (i=0; i<height; i++) {
for (j=0; j<width; j++) {
printf("%c", ary[i][j]);
}
printf("\n");
}
printf("\n");
// 印出箭頭向左等腰三角形
for (j=0; j<width; j++) {
for (i=0; i<height; i++) {
printf("%c", ary[i][j]);
}
printf("\n");
}
printf("\n");
// 印出箭頭向下等腰三角形
for (i=height-1; i>=0; i--) {
for (j=0; j<width; j++) {
printf("%c", ary[i][j]);
}
printf("\n");
}
printf("\n");
// 印出箭頭向右等腰三角形
for (j=0; j<width; j++) {
for (i=height-1; i>=0; i--) {
printf("%c", ary[i][j]);
}
printf("\n");
}
// 釋放記憶體
for (i=0; i<height; i++) {
free(ary[i]);
}
free(ary);
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.250.139.121
→
02/28 09:41, , 1F
02/28 09:41, 1F
推
03/01 01:09, , 2F
03/01 01:09, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章