返回错误值的方法

时间:2013-11-03 21:59:42

标签: c methods return-value

我正在学习C和C#编程。此C代码未按预期计算。该方法返回值:-504476904到控制台?这可能是什么问题?

以下是代码:

#include <stdio.h>
#include <stdlib.h>

int minimum(values)
int values[10];
{
  int minimum_value, i;

  minimum_value = values[0];

  for (i = 1; i < 10; i++)
  {
      if(values[i] < minimum_value)
      {
          minimum_value = values[i];
      }
  }

  return (minimum_value);
}

int main()
{
   int sumthing[10];
   int i;
   for (i = 1; i < 10; i++)
   {
       sumthing[i] = (i * 34);
   }

   printf("Minimum value of for loop is: %d\n", minimum(sumthing));

   return 0;
}

我将代码更改为:

#include <stdio.h>
#include <stdlib.h>

int minimum(values)
int values[10];
{
    int minimum_value, i;

    minimum_value = values[0];

    for (i = 1; i < 10; i++)
    {
       if(values[i] < minimum_value)
       {
           minimum_value = values[i];
       }
    }

    return (minimum_value);

}

int main()
{
   int sumthing[10];
   int i;
   for (i = 0; i < 10; i++)
   {
       sumthing[i] = ((i + 1 )* 34);
   }

   printf("Minimum value of for loop is: %d\n", minimum(sumthing));

   return 0;

}

2 个答案:

答案 0 :(得分:1)

sumthing[0]未在您的代码中初始化,因为您在索引1处开始循环;这是纠正程序的第一步,在main函数中:

for (i = 0; i < 10; i++)
{
   sumthing[i] = (i * 34);
}
顺便说一下,你正在使用K&amp; R风格。这被认为是过时的。

您的代码的更现代的实现,具有上述更正;它似乎有效:

#include <stdio.h>

int minimum(int values[])
{
  int minimum_value, i;

  minimum_value = values[0];

  for (i = 1; i < 10; i++)
  {
      if(values[i] < minimum_value)
      {
          minimum_value = values[i];
      }
  }

  return (minimum_value);
}

int main()
{
   int sumthing[10];
   int i;
   for (i = 0; i < 10; i++)
   {
       sumthing[i] = (i * 34);
   }

   printf("Minimum value of for loop is: %d\n", minimum(sumthing));

   return 0;
}

答案 1 :(得分:-1)

这种语法非常古老:

/* Don't do this */
int minimum(values)
int values[10];
{
  ...

/* Do this instead */
int minimum(int values[10])
{
  ...

除此之外,我看起来很好。

我复制/粘贴了您的代码,将“minimum()”更改为int minimum(int values[10]),运行它......并获得了正确的结果“34”:

  

for循环的最小值为:34