“有一个程序要求用户输入一个大写字母。使用嵌套循环产生像这样的金字塔图案:
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
模式应扩展到输入的字符。例如,先前的模式将由输入值E产生。”
到目前为止,我已经这样做了好几个小时,并且通过以下方式遍历字母时,得到的“金字塔”可以正确格式化为字母:
#include <stdio.h>
int main(void)
{
char ch = 0;
char ch2 = 0;
int rows = 0;
printf("Enter a character: ");
scanf("%c", &ch);
rows = ch - 64;
while(rows > 0)
{
int spaces;
for(spaces = rows-1; spaces > 0; spaces--)
{
printf(" ");
}
ch2 = 65;
while(ch2 < (ch-(rows-2)))
{
printf("%c", ch2);
ch2++;
}
printf("\n");
rows--;
}
}
但是,我感觉好像在撞墙,试图使其正确地向后迭代。我知道这应该只是一些基本的循环,但我感觉很好,确实很受困扰。我敢肯定,这很容易。我想我已经看了太久了。有想法吗?
最佳答案
您是如此亲密,只需要喘口气,您就会看到它。
打印字符时,必须在此部分之后完成
while(ch2 < (ch-(rows-2)))
{
printf("%c", ch2);
ch2++;
}
否则它不会落在字符串的末尾。您需要的是另一个循环,该循环从比最后打印的字符低一个的字符开始。它应该打印一个字符并减小该字符,直到它打印出“A”字符为止。
由于这是家庭作业,因此在告诉您详细的信息之前,我将给您机会编写该循环。