函数中的for循环调出随机数

时间:2018-09-06 21:34:03

标签: c for-loop

因此,我正在编写一个有关查找所有范围的总和的程序,例如,如果我输入1,然后输入10,它应该显示55,但是显示一些长的随机数。有人知道此代码有什么问题吗?谢谢!

#define <stdio.h>

calculateSum(int lowNumber, int highNumber);

int main()
{
   int lowerNumber,
       higherNumber;

   scanf("%d", lowerNumber);
   scanf("%d", higherNumber);

   printf("The sum of all ranges is: %d", calculateSum(lowerNumber, higherNumber));

int calculateSum(int lowNumber, int highNumber)
{
    int total;

    for(int x = lowNumber; x <= highNumber; x++)
    {
       total = total + x;
    }
    return total;
}

3 个答案:

答案 0 :(得分:1)

BarConsumerFactory首次用作右值(赋值myTextField.SendActionForControlEvents(UIControlEvent.EditingChanged); 的RHS)之前,您不需要进行初始化,因此其值仍不确定(且不确定)。

答案 1 :(得分:1)

除了@biplls answer之外,还有另一个问题:

int lowerNumber,
   higherNumber;

scanf("%d", lowerNumber);
scanf("%d", higherNumber);

是UB(在运行时生成有关编译的警告和SEGFAULT)。 printf期望int*,而不是int。正确的代码是

int lowerNumber,
   higherNumber;

scanf("%d", &lowerNumber);
scanf("%d", &higherNumber);

答案 2 :(得分:1)

这里有一些错误

  1. 它是#include <stdio.h>而不是#define
  2. 使用scanf时,您必须在读入的var之前添加一个&(在这种情况下!)
  3. 主函数fn不返回任何内容,它应该返回0(通常)(显然我对此有误,主函数从C99隐式返回0)
  4. 在编写下一个fn之前,主fn没有关闭
  5. total应该设置为0
  6. 仅在C99中允许进行循环初始化
  7. 声明原型的返回类型是一个好主意

解决所有问题

#include <stdio.h>

int calculateSum(int lowNumber, int highNumber);

int main()
{
   int lowerNumber,
       higherNumber;

   scanf("%d", &lowerNumber);
   scanf("%d", &higherNumber);

   printf("The sum of all ranges is: %d\n", calculateSum(lowerNumber, higherNumber));
   return 0;
}

int calculateSum(int lowNumber, int highNumber)
{
    int total;
    total = 0;

    for(int x = lowNumber; x <= highNumber; x++)
    {
       total = total + x;
    }
    return total;
}

运行以上

$ ./sum
1
10
The sum of all ranges is: 55