基于输入 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--;
}
我想这就是空间循环应该是什么样子的,
感谢您的任何帮助。
以下代码片段将帮助您打印一个完美的金字塔。重要的逻辑是打印空格。
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 才能使其呈金字塔形。