0

对我来说,我的程序看起来应该做我想做的事情:提示用户为数组输入 10 个值,然后使用函数在数组中找到这些值中的最大值,然后将最大的数字返回给主() 函数并打印出来。

但是,当我输入值时,我永远不会得到看起来像我输入的数字的数字。

例如,假设我只输入“10, 11”,我会得到“1606416648 = 最大值”。

有谁知道我做错了什么?

这是代码:

#include <stdio.h>
#define LIMIT 10
int largest(int pointer[]); 
int main(void)
{

int str[LIMIT];
int max;
int i = 0;

printf("Please enter 10 integer values:\n");
while (i < LIMIT)
{
    scanf("%d", &str[i]);
    i++;
}
// Thanks for your help, I've been able to make the program work with the above edit!
max = largest(str);
printf("%d = largest value\n", max);

return 0;
}

int largest(int pointer[])

{
int i;
int max = pointer[0];

for (i = 1; i < LIMIT; i++)
{
   if (max < pointer[i])
        max = pointer[i];
}
return max;
}
4

2 回答 2

1

scanf("%d", &str[LIMIT]);读入一个数字并将其放入数组末尾的内存位置。

改动后:

  1. 你不需要scanf()在你的 while 条件下;它应该进入while体内。

  2. 你的scanf()还是不太对。您需要告诉它要数组中存储输入的位置。

  3. str[i];不做任何事情。

于 2013-03-12T01:34:59.190 回答
0

printf("Please enter 10 integer values:\n"); scanf("%d", &str[LIMIT]);

这不符合你的想法。首先,它只读取一个数字。其次,您将它读入数组的最后一个位置 + 1。

于 2013-03-12T01:35:42.983 回答