如何在不使用struct的情况下在一个函数中返回两个值? #包括 #包括 双重计算(int ar[],int NPT,int*gtr); int main() { int-ar[4]={1,2,3,0}; 双重结果; 结果=计算(ar、4和ar); printf(“%lf”,结果); 返回0; } 双重计算(整数ar[],整数NPT,整数*全球技术法规) { 双倍合计=0; int i=0; 双倍平均; 对于(i=0;i

如何在不使用struct的情况下在一个函数中返回两个值? #包括 #包括 双重计算(int ar[],int NPT,int*gtr); int main() { int-ar[4]={1,2,3,0}; 双重结果; 结果=计算(ar、4和ar); printf(“%lf”,结果); 返回0; } 双重计算(整数ar[],整数NPT,整数*全球技术法规) { 双倍合计=0; int i=0; 双倍平均; 对于(i=0;i,c,C,您使函数几乎正确,必须以不同的方式进行调用 首先,不要从函数返回 *GTR < /代码>;返回平均。 然后,将呼叫更改为 #include <stdio.h> #include <stdlib.h> double calculate(int ar[], int npts, int *gtr); int main() { int ar[4] = {1,2,3,0

您使函数几乎正确,必须以不同的方式进行调用

首先,不要从函数返回<代码> *GTR < /代码>;返回<代码>平均。 然后,将呼叫更改为

        #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
设置为零,否则它将保持未初始化状态。

对于返回两个值,可以执行以下操作:

int gtr;
result = calculate(ar,4, &gtr);
printf("%lf %d\n",result, gtr);
双重计算(int-ar[],int-npts,int*gtr)
{
双倍合计=0;
int i=0;
双倍平均;

对于(i=0;i,根据我的理解,您希望返回平均值,并以某种方式获得gtr的值。您可以返回平均值,并使用指针将gtr值保存到另一个变量

    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 avergage;
    }
intmain()
{
int-ar[4]={1,2,3,0};
双重结果;
国际全球技术法规=0;
结果=计算(ar、4和全球技术法规);
printf(“%lf\n”,结果);
printf(“全球技术法规:%d\n”,全球技术法规);
返回0;
}
双重计算(整数ar[],整数NPT,整数*全球技术法规)
{
双倍合计=0,平均值;
int i=0;

对于(i=0;i)您在谈论什么
struct
?到目前为止,您发布的代码中没有任何内容。您没有收到警告吗?您可以通过引用传递变量。@stuartd但是,使用
union
很难返回两个值。
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;
}