用一个 for 循环打印矩阵
Print matrix with one for loop
我是 c# 新手。
我有 2 个变量,它们是从名为 "line" 和 "column" 的用户那里获得的。我的目标是写“*”来筛选我从用户那里得到的很多行和列。例如,用户输入 5 列和 5 行:
00000
00000
00000
00000
00000
但是当我 运行 我的程序时,它看起来像:
00000
00000
00000
00000
0000
(是啊,最后一个漏了)
我的代码是:
int i;
int satir, sutun;
Console.WriteLine("Kaç satır olsun?");
satir = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Kaç sütun olsun peki?");
sutun = Convert.ToInt32(Console.ReadLine());
for (i=1; i < sutun * satir; i++)
{
if (i%sutun==0)
{
Console.Write("\n");
}
else
{
Console.Write("*");
}
}
Console.ReadLine();
我该如何解决这个问题?谢谢指教。
i
应小于或等于 sutun
.
for (i=1; i <= sutun * satir; i++)
额外注意:如何调试我的 C# 代码
在循环中设置一个断点,然后按 F10 逐行执行。然后你就可以知道是怎么回事了。
您的 for
循环不仅应该看起来像(将 <
更改为 <=
):
for (i=1; i <= sutun * satir; i++)
无论如何你都应该打印星号。将 Console.Write("*")
从 if/else
块中取出并放在循环的顶部,只留下和 if
语句打印 newline
字符
using System;
public class Program
{
public static void Main()
{
int i;
int satir, sutun;
Console.WriteLine("Kaç satır olsun?");
satir = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Kaç sütun olsun peki?");
sutun = Convert.ToInt32(Console.ReadLine());
for (i = 1; i <= sutun * satir; i++)
{
Console.Write("*");
if (i % sutun == 0)
{
Console.Write("\n");
}
}
}
}
结果:
Kaç satır olsun?
3
Kaç sütun olsun peki?
5
*****
*****
*****
实际上输出是这样的:
Kaç satır olsun?
5
Kaç sütun olsun peki?
5
****
****
****
****
****
即而不是五列你得到四列。前四行是因为你写的是换行符而不是第五个星号,最后一行是因为你写的星号太少了。
你应该多写一个星号,这可以通过在循环中使用 <=
运算符而不是 <
来完成,你不应该写出换行符 代替星号的,但在:
之后
int i;
int satir, sutun;
Console.WriteLine("Kaç satır olsun?");
satir = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Kaç sütun olsun peki?");
sutun = Convert.ToInt32(Console.ReadLine());
for (i = 1; i <= sutun * satir; i++) {
Console.Write("*");
if (i % sutun == 0) {
Console.Write("\n");
}
}
Console.ReadLine();
我是 c# 新手。
我有 2 个变量,它们是从名为 "line" 和 "column" 的用户那里获得的。我的目标是写“*”来筛选我从用户那里得到的很多行和列。例如,用户输入 5 列和 5 行:
00000
00000
00000
00000
00000
但是当我 运行 我的程序时,它看起来像:
00000
00000
00000
00000
0000
(是啊,最后一个漏了)
我的代码是:
int i;
int satir, sutun;
Console.WriteLine("Kaç satır olsun?");
satir = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Kaç sütun olsun peki?");
sutun = Convert.ToInt32(Console.ReadLine());
for (i=1; i < sutun * satir; i++)
{
if (i%sutun==0)
{
Console.Write("\n");
}
else
{
Console.Write("*");
}
}
Console.ReadLine();
我该如何解决这个问题?谢谢指教。
i
应小于或等于 sutun
.
for (i=1; i <= sutun * satir; i++)
额外注意:如何调试我的 C# 代码
在循环中设置一个断点,然后按 F10 逐行执行。然后你就可以知道是怎么回事了。
您的 for
循环不仅应该看起来像(将 <
更改为 <=
):
for (i=1; i <= sutun * satir; i++)
无论如何你都应该打印星号。将 Console.Write("*")
从 if/else
块中取出并放在循环的顶部,只留下和 if
语句打印 newline
字符
using System;
public class Program
{
public static void Main()
{
int i;
int satir, sutun;
Console.WriteLine("Kaç satır olsun?");
satir = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Kaç sütun olsun peki?");
sutun = Convert.ToInt32(Console.ReadLine());
for (i = 1; i <= sutun * satir; i++)
{
Console.Write("*");
if (i % sutun == 0)
{
Console.Write("\n");
}
}
}
}
结果:
Kaç satır olsun?
3
Kaç sütun olsun peki?
5
*****
*****
*****
实际上输出是这样的:
Kaç satır olsun?
5
Kaç sütun olsun peki?
5
****
****
****
****
****
即而不是五列你得到四列。前四行是因为你写的是换行符而不是第五个星号,最后一行是因为你写的星号太少了。
你应该多写一个星号,这可以通过在循环中使用 <=
运算符而不是 <
来完成,你不应该写出换行符 代替星号的,但在:
int i;
int satir, sutun;
Console.WriteLine("Kaç satır olsun?");
satir = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Kaç sütun olsun peki?");
sutun = Convert.ToInt32(Console.ReadLine());
for (i = 1; i <= sutun * satir; i++) {
Console.Write("*");
if (i % sutun == 0) {
Console.Write("\n");
}
}
Console.ReadLine();