似乎无法理解c程序中最后遗留的错误

时间:2017-12-27 13:33:20

标签: c

错误我不明白如何修复并需要帮助:

  第20行和第28行

     

[错误]无法将参数'1'的'int **'转换为'int *'为'void   lotto(int *,int,int,int,int,int)'

在此部分代码中:

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

    int read1();
    int even1();
    int even2();
    int sum1();
    int sum2();
    void lotto(int*, int, int, int, int, int);
    int* table_num(int);

    int main()
    {
        int a=read1();
        int* t = table_num(a);
        int x=even1();
        int y=even2();
        int g=sum1();
        int h=sum2();
        lotto(&t, a, x, y, g, h); /*error here*/
        return 0;
    }

以下是功能:

void lotto(int* a, int n, int armax, int armin, int atmax, int atmin)
{
    int q, w, z=1;

    for (int i = 0; i < n-5; ++i) 
    {
        for (int j = i+1; j < n-4 ; ++j) 
        {
            for (int k = j+1; k < n-3 ; ++k) 
            {
                for (int l = k+1; l < n-2 ; ++l) 
                {
                    for (int m = l+1; m < n-1 ; ++m) 
                    {
                        for (int i1 = m+1; i1 < n; ++i1) 
                        {

                            q=0;

                            (i%2==0)?q+=1:2;
                            (j%2==0)?q+=1:2;
                            (k%2==0)?q+=1:2;
                            (l%2==0)?q+=1:2;
                            (m%2==0)?q+=1:2;
                            (i1%2==0)?q+=1:2;

                            w=i+j+k+l+m+i1;

                            if((q<=armax||q>=armin)&&(w>=atmin||w<=atmax))
                            {

                                printf("The %d st/nd/rd/th group of 6 numbers is :\t",z);
                                printf("%d ,%d ,%d ,%d ,%d ,%d \n\n",*(a+i), *(a+j), *(a+k), *(a+l), *(a+m), (a+i1));
                                z++;

                            }else
                                continue;



                        }

                    }

                }

            }

        }

    }

}

如果你想要回答我的问题需要整个代码,我可以在

中编辑它

2 个答案:

答案 0 :(得分:1)

将此lotto(&t, a, x, y, g, h);替换为lotto(t, a, x, y, g, h);

在函数声明中,您已经将输入参数称为指向int 的指针,但是您再次将指针传递给指向int 的指针,这会导致错误。

答案 1 :(得分:1)

问题在于&#39;&amp; t&#39;在你的乐透()中,你要指定&#39; int *&#39;并发送&#39; int **&#39;。尝试编译时不要使用&#39;&amp;&#39;