我正在开发一个程序,它将接受用户输入来填充数组,然后在用户输入q时退出。接下来,将数组传递给查找数组中最大值的函数。我的程序似乎可以工作,但我相信数组的用户输入不正确,我不知道如何解决它。
#include <stdio.h>
#define SIZE 30
int maxnum(int userarray[], int maxx);
int main()
{
int i;
int nums[SIZE];
int largest;
printf("Type integer numbers (up to 30), followed by q to quit:\n");
while(scanf("%d", &nums[i]) == 1)
{
for(i = 0; i < SIZE; i++)
{
//blank
}
}
largest = maxnum(nums, SIZE);
printf("The largest number is: %d\n", largest);
return 0;
}
int maxnum(int userarray[], int maxx)
{
int i;
int maxnumber;
maxnumber = userarray[0];
for(i = 1; i < maxx; i++)
{
if(maxnumber < userarray[i])
{
maxnumber = userarray[i];
}
}
return maxnumber;
}
答案 0 :(得分:3)
首先i
已经酉化了。
然后你的内部for
循环很奇怪(为什么有人会这样做?)并最终将i
设置为SIZE
,这是不好的。
我没有提供更多详细信息,但i
的价值一直是垃圾,因为它应该是2个错误:
int i = 0;
while((i<SIZE) && (scanf("%d", &nums[i]) == 1))
{
i++;
}
所以你逐个阅读,并防止第二个条件超出数组范围。
之后,您将通过NUMS
largest = maxnum(nums, SIZE);
而数组可能包含较少的有效值。只需通过
largest = maxnum(nums, i);
答案 1 :(得分:0)
以下是您问题的另一种解决方案。
在 main()功能
中int n,i=0;
while(scanf("%d",&n) == 1){
nums[i++] = n;
}
n = maxnum(nums, i);
printf("The largest number is: %d\n", n);
注意:初始化 i = 0 的值,然后输入并更新 nums [] 数组
在 maxnum()功能
中for(i = 0; i < maxx; i++) {
if(maxnumber < userarray[i]){
maxnumber = userarray[i];
}
}
注意:开始 i = 0 并找到最大值并返回值