gpt4 book ai didi

c - 最小值和最大值不是数组中的数字

转载 作者:行者123 更新时间:2023-11-30 20:21:44 25 4
gpt4 key购买 nike

我需要找到数组中的最小值和最大值及其位置;我的数组是从 0 到 1000 的随机值,用户指定生成多少个随机数。为什么我得到的最大值、最小值及其位置的值不在数组中?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 1000
int arrSum(int arr[SIZE], int b)
{
if(b < 0)
{
return 0;
} else
{
return arr[b] + arrSum(arr, b-1);
}
}

int main()
{
int inputNum;
int i,q;
int arr1[SIZE];
int sum;
int avg;
int min;
int max;
int location1,location2, j = 1;
srand(time(0));

min = arr1[0];

for(j = 1; j < inputNum; j++)
{
if(arr1[j] > max)
{
max == arr1[j];
location1 = j + 1;
}
else if (arr1[j] < min)
{
min == arr1[j];
location2 = j + 1;
}
}

printf("Enter an integer between 0 and 1000: ");
scanf("%d",&inputNum);

for(q = 0; q < inputNum; q++)
{
arr1[q] = rand() % 1001;
}

printf("min: %6d pos:%4d\n",min,location2);
printf("max: %6d pos:%4d\n",max,location1);

sum = arrSum(arr1, inputNum);
printf("sum: %6d\n", sum );

avg = sum / inputNum;
printf("avg: %6d\n\n",avg);

printf(" Pos | Val\n");
printf("-------------\n");

for (i = 0; i < inputNum; i++)
{
printf("%4d |%4d\n", i,arr1[i]);
}
return 0;
}

最佳答案

  1. 你不太了解语言,== 不是赋值运算符
  2. 你不知道如何编写可读的代码
  3. 您没有初始化一些变量
  4. 完成该工作后,您使用 rand() 初始化了数据。
  5. 代码的某些部分没有逻辑
  6. 索引从0开始

部分固定的代码,可以工作,但最好从头开始编写:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <limits.h>
#define SIZE 1000
int arrSum(int arr[SIZE], int b)
{
if(b < 0)
{
return 0;
}
else
{
return arr[b] + arrSum(arr, b-1);
}
}

int main()
{
int inputNum = 0;
int arr1[SIZE];
memset(&arr1, 0, sizeof(arr1));
int sum = 0;
int avg = 0;
int min = INT_MAX;
int max = INT_MIN;
int location1 = 0,location2 = 0;
srand(time(NULL));

printf("Enter an integer between 0 and 1000: ");
scanf("%d",&inputNum);

for(size_t q = 0; q < inputNum; ++q)
{
arr1[q] = rand() % 1001;
}

for(size_t j = 0; j < inputNum; ++j)
{
if(arr1[j] > max)
{
max = arr1[j];
location1 = j;
}
if (arr1[j] < min)
{
min = arr1[j];
location2 = j;
}
}


printf("min: %6d pos:%4d\n",min,location2);
printf("max: %6d pos:%4d\n",max,location1);

sum = arrSum(arr1, inputNum);
printf("sum: %6d\n", sum );

avg = sum / inputNum;
printf("avg: %6d\n\n",avg);

printf(" Pos | Val\n");
printf("-------------\n");

for (size_t i = 0; i < inputNum; ++i)
{
printf("%zu |%d\n", i,arr1[i]);
}
return 0;
}

关于c - 最小值和最大值不是数组中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41654612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com