4

我正在用 C# 编写代码并尝试添加数字 1 和 N 之间的所有数字,N 是在文本框中输入的数字。我正在这样做,至少尝试这样做,方法是将它放入一个while循环中。

我之前在 2 个文本框之间添加了所有数字,但由于某种原因,我让自己发疯了,无法弄清楚这一点。我是一个初级程序员,所以请温柔。

任何帮助将不胜感激。

编辑:我尝试过的六千件事之一。我认为这让我陷入了无限循环?

       private void btnAddAll_Click(object sender, EventArgs e)
       {
           int n;
           int count = 0;
           int answer = 0;

           n = int.Parse(txtNum.Text);

           count = n;

           while (count >= 1)
           {
               answer = answer + count;
               count++;
           }
               lstShow.Items.Add("Sum = " + answer);
               lstShow.Text = answer.ToString();
       }
4

4 回答 4

9

为什么不用高斯公式。(N*(N+1))/2

private void btnAddAll_Click(object sender, EventArgs e)
{
     int n, answer;  
     n = int.Parse(txtNum.Text);
     answer = (n*(n+1))/2;
     lstShow.Items.Add("Sum = " + answer);
     lstShow.Text = answer.ToString();
}
于 2012-10-25T01:49:55.017 回答
3

您的编辑:您应该减少计数。另一个编辑,看来我需要解释更多:我的意思是减少--。post 或 pre 递减运算符将值减 1。

如果 count 不断增加 1,则永远不会满足count >=1 。您需要将计数减少到 1.. 因此count--;

另外,我建议您使用TryParse(string,out int) ;或至少将Parse调用包装在try catch block.

这是伪代码中的指针:

GetInput From User
TryParse Input
If Between 1 and N
Declare sum = 1;

for i to N-1 
   sum+=i; 

/* if you don't want to use the for loop
  while i < N 
  sum+=i;
  inc i; */
Print sum
于 2012-10-25T00:49:03.120 回答
3

如果您将其更改++为 a--它应该可以按您的意愿工作。

   int n;
   int count = 0;
   int answer = 0;

   n = 3;

   count = n;

   while (count >= 1)
   {
       answer = answer + count;
       count--; // here was the error
   }

   Console.WriteLine (answer);

输出:6

此外,只是为了增加兴趣点,您可以使用 That 使用Enumerable.RangeEnumerable.Sum而不是 while 循环(可能超出了家庭作业的预期,但知道那里有什么很有用)。

answer =  Enumerable.Range(1, n).Sum();
于 2012-10-25T00:58:41.950 回答
0

调试对于任何程序员来说都是一项重要的技能。Visual Studio 中有一些很好的工具可以帮助调试。

卡住时调试代码的一个好方法是使用“断点”并单步执行代码。

选择您希望代码停止的行(例如n = int.Parse(txtNum.Text);),然后按 F9 - 这将在该行添加一个断点。

现在,当您运行程序时,它将在断点处停止。如果按 F11,您可以一次“单步执行”一行代码。执行此操作时,您可以将鼠标悬停在变量上以查看其值。

如果你这样做,你会很快在你的代码中找到问题。

于 2012-10-25T01:01:32.110 回答