我刚刚开始学习如何使用c#编程,所以如果我有“愚蠢”的问题或问题,请不要开枪,答案可能是非常符合逻辑的。
我有下一个任务:
使用for循环编写下一个模式:
1 2 3 4 5 6 7 8 9 10 10
11 12 13 14 15 16 17 18 19 20 20
21 22 23 24 25 26 27 28 29 30 30
31 32 33 34 35 36 37 38 39 40 40
41 42 43 44 45 46 47 48 49 50 50
51 52 53 54 55 56 57 58 59 60 60
61 62 63 64 65 66 67 68 69 70 70
71 72 73 74 75 76 77 78 79 80 80
81 82 83 84 85 86 87 88 89 90 90
91 92 93 94 95 96 97
用户必须能够设置最大值(在本例中为97),然后重新运行应用程序而不重新启动。
我现在正在尝试的是:
class Program
{
static void Main(string[] args)
{
string output = "", input = "";
int MaxWaarde, karakters = 15;
do
{
Console.WriteLine("Gelieve het maximum van de matrix in te geven");
input = Console.ReadLine();
MaxWaarde = Convert.ToInt32(input);
for (int i = 1; i <= MaxWaarde; i += 11)
{
Console.Write(i);
for (int j = i; j < MaxWaarde + 1; j += karakters)
{
Console.Write(j);
}
Console.WriteLine(karakters + "");
}
Console.Write("\nOpnieuw een matrix aanmaken? (y/n): ");
output = Console.ReadLine();
}
while (output.ToLower() == "y");
}
}
这根本不正确,但我一直试图解决这个问题一段时间了,我想我一直盯着这个,所以我真的不知道哪个方法可以用这个了。
有人可以就如何做到这一点给我一些建议吗?
答案 0 :(得分:1)
嵌套for循环在这里看起来不是一个好主意。你可以用一个for
循环来完成。你在每一步都递增i
+11
,可能你的错误是这里。考虑一下:
for (int i = 1; i <= MaxWaarde; i++)
{
if(i % 10 != 0) Console.Write(i + " ");
else
{
Console.Write(i + " " + i + "\n");
}
}
%
是modulus operator。我们正在寻找余下的currentNumber / 10
,如果它不为零我们写number.
如果是,那么我们写两次值并添加一个newline character与\n
进入下一行。您也可以使用Console.WriteLine()
代替\n
答案 1 :(得分:0)
Loop1
:按步数1从1开始向上计数。如果数字是10的倍数,则会使用换行符再次写入该数字。
Loop2
:按照用户的意愿再次执行loop1。
答案 2 :(得分:0)
你去吧
public static void Main(string[] args)
{
for (;;)
{
var val = int.Parse(Console.ReadLine());
for (int i = 1; i <= val; i++)
{
if (i % 10 == 0)
{
Console.WriteLine("{0} {0}", i);
}
else
{
Console.Write("{0} ", i);
}
}
Console.WriteLine();
}
}