c - 如何在不使用结构体的情况下在一个函数中返回两个值?

标签 c

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


        double calculate(int ar[], int npts, int *gtr);


        int main()
        {

            int ar[4] = {1,2,3,0};
            double result;
            result = calculate(ar,4, &ar);
            printf("%lf ",result );         


            return 0;
        }


        double calculate(int ar[], int npts, int *gtr)
        {
            double total =0;
            int i = 0;

            double average;

            for(i=0; i<npts; i++)
            {
                total = total + ar[i];
            }

            average = total / npts;
            return average;

            for(i=0; i<npts; i++)
            {
                if(average < ar[i])
                {
                    *gtr++; 
                }
            }     

            return *gtr;
        }

当我调用函数计算时,我想返回平均值和 *gtr 值 但平均仅返回平均值。 *gtr 用于计算有多少个数字大于数组中的平均数字。

最佳答案

据我了解,您想要返回平均值,并以某种方式获取 gtr 的值。您可以返回平均值,并使用指针将 gtr 值保存到另一个变量。

int main()
{

    int ar[4] = {1,2,3,0};
    double result;
    int gtr = 0;
    result = calculate(ar,4,&gtr);
    printf("%lf\n",result );
    printf("gtr : %d\n",gtr);


    return 0;
}


double calculate(int ar[], int npts, int *gtr)
{
    double total = 0 , average;

    int i = 0;

    for(i=0; i<npts; i++)
    {
        total = total + ar[i];
    }

    average = total / npts;

    for( i = 0 ; i < npts ; i++ )
    {
         if(average < ar[i])
                 {
                      *gtr += 1; 
                  }
           }
    return average;
}

关于c - 如何在不使用结构体的情况下在一个函数中返回两个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33259430/

相关文章:

C - 如何拆分用户输入的字符串

c - 读取空格后的行

c - pthread_create 内存泄漏

C scanf 第二次跳过

与以下选择排序代码混淆

c - 如何使用回调函数获取Tizen中区域变量的值?

c - NCURSES - 在 pad 中移动光标

c - 新手线程问题 (FFTW)

c - 对 printf 输出感到困惑

c - 是否有 Linux 系统调用提供自特定日期以来的秒数?