使用c# for循环创建"V"
本文关键字:quot 创建 for 循环 使用 | 更新日期: 2023-09-27 18:17:48
作为作业,我被要求编写一个c#控制台程序,让用户定义一个字符和大小,程序将输出一个n*n/2大小的"V",其中n是"V"的宽度。我能得到的最好的结果是三角形或者一条对角线向左,一条对角线向右。如有任何建议,不胜感激。
public static void Main (string[] args)
{
int maxWidth = 40;
Console.WriteLine ("Please enter your desired character");
string userChar = Console.ReadLine ();
Console.WriteLine ("Please enter your desired width");
int userWidth = Convert.ToInt32 (Console.ReadLine ());
for (int i = 0; i < userWidth; i++) {///opposite diagonal lines
for (int j = 0; j < i; j++) {
Console.Write (" ");
}
Console.Write (userChar);
Console.WriteLine ();
}
for (int i = userWidth - 1; i >= 0; i--) {
for (int j = 0; j <= i; j++) {
Console.Write (" ");
}
Console.Write (userChar);
Console.WriteLine ();
}
你试图分别计算两边的逻辑是错误的。
作为提示,每一行有2个点,顶部相距较远,底部相距较近。每一行,它们都相互靠近。所以你要做的就是找出它们在最上面的位置(比如,1和10),然后每一行,在第一行上加1,在最后一行上减1,这样它们就更靠近中间了。在底部,他们会相遇。
作为另一个提示,可以使用一个循环来完成此任务。
试试这个:
int lines = userWidth / 2;
for (var i = 1; i < lines; i++)
Console.WriteLine(userChar.PadLeft(i) + userChar.PadLeft(2 * (lines - i)));
Console.WriteLine(userChar.PadLeft(lines));
我得到这个:
X X
X X
X X
X X
X X
X X
X X
X X
X X
X X
X
感谢您的所有输入,这是我最终提出的代码。
public static void Main (string[] args)
{
int maxWidth = 40;
Console.WriteLine ("Please enter your desired character");
string userChar = Console.ReadLine ();
Console.WriteLine ("Please enter your desired width");
int userWidth = Convert.ToInt32 (Console.ReadLine ());
for (int i = 0; i < userWidth; i++) {
for (int j = 0; j < i; j++) {
Console.Write (" ");
}
Console.Write (userChar);
for (int j = userWidth-1; j > i; j--) {
Console.Write (" ");
}
for (int j = userWidth-1; j > 0+i ; j--) {
Console.Write (" ");
}
Console.Write (userChar);
Console.WriteLine ();
}
}