【问题标题】:How to make output : 1 1 2 6 3 11 4 16 5 21 [closed]如何进行输出:1 1 2 6 3 11 4 16 5 21 [关闭]
【发布时间】:2021-06-19 19:07:01
【问题描述】:

如何输出:1 1 2 6 3 11 4 16 5 21.当我输入起始值= 1,结束值= 5时

我的代码:

                Console.Write("input start value : ");
                start = int.Parse(Console.ReadLine());
                Console.Write("input end value : ");
                end = int.Parse(Console.ReadLine());
                Console.WriteLine("");

                for (int i = start; i <= end; i++)
                {
                    Console.WriteLine(i);
                    
                    for (int j = i; j <= end; j++)
                    {
                        int z = 1;
                        if (start != j)
                        {
                            z++;
                            Console.WriteLine((j * j) + z);
                        }
                        else
                        {
                            Console.WriteLine(start + " this j start value");
                        }
                    }
                }

【问题讨论】:

  • 交错 1, 2, 3, 4, 51, 6, 11, 16, 21
  • 你能修复我的代码吗?我不明白
  • 您发布的代码无法修复,因为它似乎与问题的其余部分无关。我的第一条评论只是作为一个线索。看看你能做些什么,如果你真的被卡住了,再发帖,但至少表明你试过了。

标签: c# console console-application windows-console


【解决方案1】:

所以我并不完全清楚 5 是否既用作 1、2、3、4、5 的最终值,又用作 1、6、11、16、21 的差值,但我会假设是的。这是一个供你实现的算法(这看起来像家庭作业,所以把它当作一个提示——你会从自己编码中得到更多,但这是你应该如何进行任何编码练习:用语言写出算法你想想然后把它翻译成c#)

  • 向用户询问起始值并转换为 int
  • 向用户询问最终值并转换为 int
  • 计算出一个名为 n 的变量,即 end 减去 start
  • 从 x = 0 开始创建一个 for 循环,在 x 小于或等于 n 时运行; x 加 1
  • 打印出 startValue 加 x
  • 打印出 startValue 加(endValue 乘以 x)
  • 循环播放

对于 1 和 5 的开始和结束,循环从 0 运行到 4。循环第一次运行时,x 为 0,startValue 为 1,所以一个 1+0 和一个 1+(5*0)被打印 - 都是 1。这一直持续到最终值,其中 x 为 4,打印 4+1 - 即 5 - 并且打印 1+(4*5) - 即 21

【讨论】:

  • 为什么我的输出:1 1 2 6 3 11 4 16 5 21 6 26 当我设置 start = 1,end = 5
  • 我的代码 int n = end - start; for (int i = 0; i
  • 你的代码在 for 循环中是 i&lt;=end,但它应该是 i&lt;=n
  • 哦,是的,因为它的
【解决方案2】:

正如@dxiv 在 cmets 中所发布的,这组数字的模式是结合1,2,3,4,51,6,11,16,21。我看到的模式是第二组数字之间的差距等于结束数字。

我们可以定义一个生成这些数字的函数:

IEnumerable<int> GetNumbers(int start, int end)
{
    for (int number = start; number <= end; number++)
    {
        yield return number;
        yield return start + ((number - 1) * end);
    }
}

并且可以输出如下结果:

int start = 1;
int end = 5;

Console.WriteLine(string.Join(' ', GetNumbers(start, end)));

输出

1 1 2 6 3 11 4 16 5 21

【讨论】:

猜你喜欢
  • 2021-05-30
  • 1970-01-01
  • 2011-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多