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