基于输入 C# 的字母金字塔

本文关键字:金字塔 于输入 输入 | 更新日期: 2023-09-27 18:24:56

我在 C# 中有某个练习遇到了麻烦。

我需要打印一个字母金字塔,根据用户的输入,每个字母都应该打印其字母顺序的次数。 金字塔的头部将始终为"A",每行字母将跳跃 2。

例:

输入:g

输出:a ccc eeeee ggggggg

我的尝试出错了,因为我不知道在字母前后的第一行"A"需要多少空格才能使金字塔保持完美的金字塔。

numSpaces = 4 //just for test
    for (i = 0; i < numSpaces; i++)
    {
        printf(" ");
        numSpaces--;
    }

我想这就是空间循环应该是什么样子的,

感谢您的任何帮助。

基于输入 C# 的字母金字塔

以下代码片段将帮助您打印一个完美的金字塔。重要的逻辑是打印空格。

int i=0,j=0; char ch='g';
for(i='a';i<=ch;i=i+2){
    for(j=(ch-i)/2;j>0;j--){
        printf(" ");
    }
    for(j='a';j<i+1;j++){
        printf("%c", i);
    }
    printf("'n");
}

您可以使用字符a开始 for 循环,并使用其 ASCII 代码作为计数器的开头。 计数器在每次迭代中都会根据您的逻辑递增 2。 循环,直到i小于或等于输入字符的 ASCII 代码。

您必须打印(letter - counter)/2空格,然后打印i - 'a' + 1信。

char letter = 'g';
for (int i = 'a'; i <= letter; i += 2)
{
    Console.Write(new string(' ', (letter - i)/2));
    Console.WriteLine(new string((char) i, i - 'a' + 1));
}

注意:因为i是从a开始的,所以i - 'a' + 1会按字母顺序给出位置

letter - i将给出反向位置(基于循环中的最大i,即letter(。 所以当i - 'a' + 1 == 1时,letter - i == 6. 而且您还必须将其除以 2 才能使其呈金字塔形。