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