“让程序请求用户输入大写字母。使用嵌套循环生成如下金字塔模式:
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--;
}
}然而,我觉得我好像撞到了一块砖墙,试图让它适当地向后迭代。我知道这应该是几个基本的循环,但我很好,而且真的被困住了。我肯定这很容易..。我想我看得太久了。想法?
发布于 2011-06-10 14:57:33
你离得太近了,你只要喘口气,你就会看到它。
当你打印出你的角色时,必须在这部分之后完成。
while(ch2 < (ch-(rows-2)))
{
printf("%c", ch2);
ch2++;
}否则它不会掉在绳子的末端。您需要的是另一个循环,从上次打印的字符下面的一个字符开始。它应该打印一个字符并减少该字符,直到它打印出'A‘字符为止。
因为这是家庭作业,在告诉你具体细节之前,我会给你一个机会写这个循环。
发布于 2011-06-10 14:58:02
有一些方法可以重写这段代码,以使其更清晰,但基于您所拥有的,类似的东西可能会在当前while循环之后立即工作。
while (ch2 > 'A')
{
ch2--;
printf("%c", ch2);
}不过,我确实建议尝试稍微重构一下您的代码,以使其更加清晰。正如我在注释中所建议的,从使用字符字面值开始,而不是使用原始整数。
发布于 2011-06-10 14:58:51
您既可以迭代,也可以向上迭代:
while(ch2 >= 'A')
{
printf("%c", ch2);
ch2--;
} https://stackoverflow.com/questions/6308032
复制相似问题