1

我一直在尝试让 For 和 Reverse For 循环都显示在这种形式的一行上Number x Number

由于数字是输入(people % i==0),因此可以找到已给定数字的因子。

                for (int i = 2; i <= people - 1; i++)
                {   
                    if (people % i==0)
                    {
                        Console.Write($"{i}m x ");
                        //Console.WriteLine($"{i} is factors of {input}");
                           

                    }
                }


                for (int j = people - 1; j >= 2; j-- )
                {
                    if (people % j == 0)
                    {
                        Console.WriteLine($"{j}m");
                        
                    }
                    
                }

4

3 回答 3

3

C# for可以使用复合赋值/表达式(零个或多个用逗号分隔的语句)

int people = 10;

for (int i = 2, j = people - 1; i <= people - 1; i++, j--)
   Console.WriteLine($"i = {i}, j = {j}");

输出

i = 2, j = 9
i = 3, j = 8
i = 4, j = 7
i = 5, j = 6
i = 6, j = 5
i = 7, j = 4
i = 8, j = 3
i = 9, j = 2

注意:这在 C/++ 中很常见,但在 C# 中不太常见;我们倾向于喜欢声明性、整洁和可读的东西。


或者您可以即时计算

int people = 10;
for (int i = 2; i <= people - 1; i++)
    Console.WriteLine($"i = {i}, j = {people-i+1}");

完整的演示在这里

于 2020-08-17T04:03:15.297 回答
0

如果您对使用 实现此目的的方法感兴趣,Linq可以使用以下Zip操作来实现:

int start = 2;
int people = 9;

Enumerable.Range(start, people - start + 1)
    .Zip(Enumerable.Range(start, people - start + 1).Reverse(), (x, y) => $"{x}m x {y}m")
    .ToList()
    .ForEach(Console.WriteLine);

输出

2m x 9m
3m x 8m
4m x 7m
5m x 6m
6m x 5m
7m x 4m
8m x 3m
9m x 2m
于 2020-08-17T04:29:38.227 回答
-1

j在第一个 for 循环中创建另一个索引

for (int i = 2; i <= people - 1; i++)
{   
    if (people % i==0)
    {
        Console.Write($"{i}m x ");
        //Console.WriteLine($"{i} is factors of {input}");
    }
    
    int j = people - i + 1;
    if (people % j == 0)
    {
        Console.WriteLine($"{j}m");
        
    }
}
于 2020-08-17T03:49:54.777 回答