首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“赋值在没有强制转换的情况下从指针生成整数”?

“赋值在没有强制转换的情况下从指针生成整数”?
EN

Stack Overflow用户
提问于 2021-01-21 08:50:07
回答 2查看 366关注 0票数 1

我真的是个新手。我从来没有做过这样的事情,所以我对这段代码有问题。我得到了一个模板,可以像这样在不同的函数中编写代码,尽管我自己添加了findPos函数。我收到了"assignment makes from pointer without a cast“的警告,而且我的max、min、sum、avg以及max和min的位置显然都不是正确的数字。我只是想知道有没有人能把我引向正确的方向。

代码语言:javascript
复制
#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;
}
EN

回答 2

Stack Overflow用户

发布于 2021-01-21 10:23:15

代码语言:javascript
复制
max = findMax;
min = findMin;
pos = findPos;
sum = findSum;

将函数指针而不是返回值赋值给整型变量。你必须做一些像max = findMax(arr, size)这样的事情。同样,在这种情况下,您应该在调用arr之前为其赋值。

票数 1
EN

Stack Overflow用户

发布于 2021-01-21 15:08:50

代码中有几个问题。让我遍历相同的

在创建的阵列中填充数据

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

代码语言:javascript
复制
 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]);
  }

此代码段应重新排序,并移动到函数调用的上方,紧跟在int arr[size];之后

函数调用

您的所有函数(即findMax、findMin、findPos、findSum )都需要两个参数

  1. arr - array you

created

  1. size -从scanf()

读取的大小值

假设您希望将函数的返回值存储在主int变量max、min、pos、sum、avg中

这些语句

代码语言:javascript
复制
max = findMax;
min = findMin;
pos = findPos;
sum = findSum;

应替换为函数调用,如

代码语言:javascript
复制
max = findMax(arr, size);
min = findMin(arr, size);
pos = findPos(arr, size);
sum = findSum(arr, size);

最终的主代码将是

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65819727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档