1

我正在学习 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;

}

4

2 回答 2

1

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

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

顺便说一句,您使用的是 K&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;
}
于 2013-11-03T22:02:36.103 回答
-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

于 2013-11-03T22:01:57.510 回答