【问题标题】:Why does my C function doesny print anything?为什么我的 C 函数不打印任何内容?
【发布时间】:2022-01-09 07:26:37
【问题描述】:

这是我的主要功能:

void arrCalc(int*, int, int*, int*, int*, double*, int*);
int main()
{
    int a[5] = {1, 2, 3, 4, 5}, n = 5, *max, *min, *sum, *isEven;
    double *avg;
    arrCalc(a, n, max, min, sum, avg, isEven);
    printf("%d %d %d %lf %d", *max, *min, *sum, *avg, *isEven);
    return 0;
}

这是我的任务:

void arrCalc(int *arr, int n, int *max, int *min, int *sum, double *avg, int *isEven)
    int i;
    *min = arr[0];
    *max = arr[0];
    for (i = 0; i < n; i++)
    {
        if (arr[i] < *min)
            *min = arr[i];
        if (arr[i] > *max)
            *max = arr[i];
        if (!(arr[i] % 2))
            *isEven = 1;
        *sum += arr[i];
    }
    *avg = (double) *sum / n;
}

当我运行程序时,它什么也没打印出来。我认为它与 arrCalc 中的 min 和 max 的定义有某种联系。有人可以更正我的代码吗?

【问题讨论】:

  • 当然……你重新定义了min(还有max
  • 可能不是您的主要问题,但在行尾打印换行符不会有什么坏处:printf("%d %d %d %lf %d\n"

标签: arrays c pointers


【解决方案1】:

main() 中,您将minmaxsumisEven 声明为int*,但您没有为实际的int 分配任何空间重新应该指向。您应该在 main 中将这些变量声明为 int,然后将指向它们的指针传递给您的 arrCalc 函数,如下所示:

int main()
{
    int a[5] = {1, 2, 3, 4, 5}, n = 5, max, min, sum, isEven;
    double avg;
    arrCalc(a, n, &max, &min, &sum, &avg, &isEven);
    printf("%d %d %d %lf %d", max, min, sum, avg, isEven);
    return 0;
}

【讨论】:

    猜你喜欢
    • 2019-10-11
    • 1970-01-01
    • 2016-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    相关资源
    最近更新 更多