2
我想用C來寫一個程序,給出了下面的輸出13排金字塔(注意字母的模式,即BCB):印刷字母金字塔
這裏是我的嘗試在該解決方案:
#include <stdio.h>
#include <stdlib.h>
int main(void){
char c = 'A';
int height = 13;
int max = 1;
for (int i = 1; i <= height; i++){
//int j = 1;
for (int k = 0; k < height - i; k++)
printf(" "); // print space on left
for (int j = 1; j <= max; j++){
if (j <= max/2){ // print left side of pyramid
printf ("%c", c);
c = (c - 'A' + 1) % 26 + 'A';
}
else{ // print right side of pyramid
printf ("%c", c);
c = (c -'A' + 25) % 26 + 'A';
}
}
printf("\n");
max += 2;
}
}
但是它提供了以下不正確的輸出:
A
ZAZ
YZAZY
XYZAZYX
WXYZAZYXW
VWXYZAZYXWV
UVWXYZAZYXWVU
TUVWXYZAZYXWVUT
STUVWXYZAZYXWVUTS
RSTUVWXYZAZYXWVUTSR
QRSTUVWXYZAZYXWVUTSRQ
PQRSTUVWXYZAZYXWVUTSRQP
OPQRSTUVWXYZAZYXWVUTSRQPO
如果刪除在if/else
聲明其將金字塔中雙方並簡單地只c = (c - 'A' + 1) % 26 + 'A';
,我得到下面的輸出:
A
BCD
EFGHI
JKLMNOP
QRSTUVWXY
ZABCDEFGHIJ
KLMNOPQRSTUVW
XYZABCDEFGHIJKL
MNOPQRSTUVWXYZABC
DEFGHIJKLMNOPQRSTUV
WXYZABCDEFGHIJKLMNOPQ
RSTUVWXYZABCDEFGHIJKLMN
OPQRSTUVWXYZABCDEFGHIJKLM
任何想法?
@ johnchen902你確定嗎?我直接複製粘貼代碼以確保它可以正常工作。你是在'max + = 2'之前還是之後? – Xymostech 2013-05-04 04:14:33
對不起,我的壞。我把它放在'max + = 2'之前# – johnchen902 2013-05-04 04:17:12
完美,謝謝。 – Martin 2013-05-04 04:22:28