Arrays &引用;赋值从指针生成整数,不带强制转换“;?

Arrays &引用;赋值从指针生成整数,不带强制转换“;?,arrays,c,warnings,Arrays,C,Warnings,我对这真的很陌生。我从来没有做过这样的事情,所以我对这段代码有问题。虽然我自己添加了findPos,但我得到了一个模板,可以在类似这样的单独函数中编写代码。我得到了“赋值从指针生成整数而不进行强制转换”的警告,而且我的max、min、sum、avg以及max和min的位置显然不是正确的数字。我只是想知道是否有人能把我引向正确的方向 #include <stdio.h> #include <stdlib.h> #include <time.h> int fin

我对这真的很陌生。我从来没有做过这样的事情,所以我对这段代码有问题。虽然我自己添加了findPos,但我得到了一个模板,可以在类似这样的单独函数中编写代码。我得到了“赋值从指针生成整数而不进行强制转换”的警告,而且我的max、min、sum、avg以及max和min的位置显然不是正确的数字。我只是想知道是否有人能把我引向正确的方向

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int findMin(int arr[], int size);
int findMax(int arr[], int size);
int findSum(int arr[], int size);
int findPos(int arr[], int size);
int size;
int i;
int max;
int min;
int avg;
int sum;
int pos;

int main()
{
  srand(time(0));

  printf("Enter an integer: ");
  scanf("%d", &size);

  int arr[size];

  max = findMax;
  min = findMin;
  pos = findPos;
  sum = findSum;
  avg = sum / size;

  printf("max:%7d\tpos:%d\t\n", max, pos);
  printf("min:%7d\tpos:%d\t\n", min, pos);
  printf("avg:%7d\n", avg);
  printf("sum:%7d\n", sum);

  printf("\n");

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

  for (i = 0; i < size; i++) {
    arr[i] = (rand() % 1001);
    printf("%4d  :%6d\n", i, arr[i]);
  }
    return 0;
}

int findMin(int arr[], int size)
{
  min = arr[0];
  for (i = 0; i < size; i++) {
    if (arr[i] < min) {
      min = arr[i];
    }
  }

  return min;
}

int findMax(int arr[], int size)
{
  max = arr[0];
  for (i = 0; i < size; i++) {
    if (arr[i] > max) {
      max = arr[i];
    }
  }

  return max;
}

int findSum(int arr[], int size)
{
  sum = 0;
  for (i = 0; i < size; i++) {
    sum = sum + arr[i];
  }

  return sum;
}

int findPos(int arr[], int size)
{
  for (i = 0; i < size; i++) {
    pos = i;
  }

  return pos;
}
#包括
#包括
#包括
int findMin(int arr[],int size);
int findMax(int arr[],int size);
int findSum(int arr[],int size);
int findPos(int arr[],int size);
整数大小;
int i;
int max;
int-min;
国际平均值;
整数和;
int pos;
int main()
{
srand(时间(0));
printf(“输入一个整数:”);
scanf(“%d”,大小(&S);
int arr[尺寸];
max=findMax;
min=findMin;
pos=findPos;
sum=findSum;
平均值=总和/大小;
printf(“最大值:%7d\tpos:%d\t\n”,最大值,位置);
printf(“最小值:%7d\tpos:%d\t\n”,最小值,位置);
printf(“平均值:%7d\n”,平均值);
printf(“总和:%7d\n”,总和);
printf(“\n”);
printf(“Pos:Val\n”);
printf(“--------------\n”);
对于(i=0;i最大值){
max=arr[i];
}
}
返回最大值;
}
int findSum(int arr[],int size)
{
总和=0;
对于(i=0;i
max=findMax;
min=findMin;
pos=findPos;
sum=findSum;

将函数指针而不是返回值赋给整型变量。您必须执行类似于
max=findMax(arr,size)
的操作。同样在这种情况下,您应该在调用它之前将值赋给
arr

该代码有几个问题。让我再重复一遍

在创建的数组中填充数据

由于在执行任何操作之前,数据必须显示创建的数组

 printf("\n");

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

  for (i = 0; i < size; i++) {
    arr[i] = (rand() % 1001);
    printf("%4d  :%6d\n", i, arr[i]);
  }
应该替换为函数调用,如

max = findMax(arr, size);
min = findMin(arr, size);
pos = findPos(arr, size);
sum = findSum(arr, size);
最终主代码将为

int main()
{
  srand(time(0));

  printf("Enter an integer: ");
  scanf("%d", &size);

  int arr[size];

 printf("\n");

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

  for (i = 0; i < size; i++) {
    arr[i] = (rand() % 1001);
    printf("%4d  :%6d\n", i, arr[i]);
  }

  max = findMax(arr, size);
  min = findMin(arr, size);
  pos = findPos(arr, size);
  sum = findSum(arr, size);
  avg = sum / size;

  printf("max:%7d\tpos:%d\t\n", max, pos);
  printf("min:%7d\tpos:%d\t\n", min, pos);
  printf("avg:%7d\n", avg);
  printf("sum:%7d\n", sum);
 
    return 0;
}
intmain()
{
srand(时间(0));
printf(“输入一个整数:”);
scanf(“%d”,大小(&S);
int arr[尺寸];
printf(“\n”);
printf(“Pos:Val\n”);
printf(“--------------\n”);
对于(i=0;i
int main()
{
  srand(time(0));

  printf("Enter an integer: ");
  scanf("%d", &size);

  int arr[size];

 printf("\n");

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

  for (i = 0; i < size; i++) {
    arr[i] = (rand() % 1001);
    printf("%4d  :%6d\n", i, arr[i]);
  }

  max = findMax(arr, size);
  min = findMin(arr, size);
  pos = findPos(arr, size);
  sum = findSum(arr, size);
  avg = sum / size;

  printf("max:%7d\tpos:%d\t\n", max, pos);
  printf("min:%7d\tpos:%d\t\n", min, pos);
  printf("avg:%7d\n", avg);
  printf("sum:%7d\n", sum);
 
    return 0;
}