基本的C#问题: 输入一些数字时我需要得到这个结果(这个案例输入了4):
4 3 2 1 0
3 2 1 0 4
2 1 0 4 3
1 0 4 3 2
我正在尝试该代码,但无法弄清楚我的错误:
Console.WriteLine("Please write a Number: ");
Console.Write("Number: ");
int num = int.Parse(Console.ReadLine());
for (int i = 0; i <= num; i++)
{
for (int j = num - i; j >= 0; j--)
{
Console.Write(j);
}
for (int j = 1; j <= i; j++)
{
Console.Write(j);
}
Console.WriteLine();
}
Console.ReadLine();
这是我得到的输出:
4 3 2 1 0
3 2 1 0 1
2 1 0 1 2
1 0 1 2 3
0 1 2 3 4
答案 0 :(得分:2)
试试这个:
Console.WriteLine("Please write a Number: ");
Console.Write("Number: ");
int num = int.Parse(Console.ReadLine());
for (int i = 0; i <= num; i++)
{
for (int j = num - i; j >= 0; j--)
{
Console.Write(j);
}
for (int j = num; j > num - i; j--)
{
Console.Write(j);
}
Console.WriteLine();
}
Console.ReadLine();
答案 1 :(得分:1)
问题是你的第二个内循环从一开始算起来而不是从num
开始倒计时。
将该循环更改为:
for (int j = num; j > num -i; j--)
{
Console.Write(j);
}
此外,我不清楚你是否想要04321的最后一行。如果不这样做(如原始示例中所示),则只需将循环检查更改为i<num
。
答案 2 :(得分:1)
尝试这样的事情
var ints = new List<int> { 4, 3, 2, 1, 0 }; for (int i = 0; i < 4; i++) { ints.ForEach(n => Console.Write(n + " ")); Console.WriteLine(""); var a = ints[0]; ints.RemoveAt(0); ints.Add(a); }
答案 3 :(得分:0)
作为提示,我将主循环作为伪代码提供给你:
for i from 0 to number_input-1 {
for j from number_input to 0 {
print((j-i)%(number_input+1) + " ")
}
print("\n")
}
答案 4 :(得分:0)
只是为了好玩:
const int NUM = 4; // num from user
for (int start = NUM; start > 0; start--)
{
for (int i = 0; i <= NUM; i++)
{
int current = (start - i) >= 0 ? start - i : NUM + (start - i) + 1;
Console.Write(current + " ");
}
Console.WriteLine();
}
答案 5 :(得分:0)
老实说,这是一个经典的排序任务。它只是隐藏在“用户类型和bla bla bla”之外,但我记得在学校它是.. 有一个数组[4,3,2,1,0] ..所以
所以只是简单的代码
int[] numbers
假设你有这个数组[4,3,2,1,0]
for(int i = 0; i < numbers.length - 2; i++){
for(int y = 0; y < numbers.length - 1; y++){
int buf = numbers[y];
numbers[y] = numbers[y + 1];
numbers[y + 1] = buf;
}
}