数据类型错误 - 找到两个数组的并集的程序(c)

时间:2015-03-29 23:29:14

标签: c arrays

我试图在C中编写一个程序来创建两个数组之间的联合,然后输出新数组中的元素总数。编译代码(gcc)时出现以下错误。

test.c:44:11:错误:预期'{'之前'('令牌  void union(int arrA [],int arrB [],int m,int n)            ^ test.c:44:6:错误:声明说明符中有两个或更多数据类型  void union(int arrA [],int arrB [],int m,int n)       ^

我已经检查了缺少分号等等。所以,除非我错过了它,否则我无法弄清楚问题的来源。任何帮助,将不胜感激。

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

    int main()
    {
        int n;
        int m;
        int i;
        int k;
        printf("Enter the size of array A: ");
        scanf("%d",&n);
        int arrA[n];
        printf("Enter the element(s) of array A: ");
        for(i=0;i<n;i++)
            {   
                scanf("%d",&arrA[i]);
            }
        for(i=0; i<n; i++)
            {
                printf("%d",arrA[i]);
            }
        printf("\n");

        printf("Enter the size of array B: ");
        scanf("%d",&m);
        int arrB[m];
        printf("Enter the element(s) of array B: ");
        for(i=0;i<m;i++)
            {
                scanf("%d",&arrB[i]);
            }
        for(i=0; i<m; i++)
            {
        printf("%d",arrB[i]);
            }
        printf("\n");

        printf("%d\n",k);
        return 0;
    }


    int union(int arrA[], int arrB[], int m, int n)
    {
        int i = 0;
        int j = 0;
        int k = 0;
        int l = 0;
        if(n > m)
            {
                n = l;
            }
        else
            {
                m = l;
            }
        int arrC[l];
        while ((i < n) && (j < m))
        {
            if (arrA[i] < arrB[j])
            {
                arrC[k] = arrA[i];
                i++;
                k++;
            }
            else if (arrA[i] > arbB[j])
            {
                arrC[k] = arrB[j];
                j++;
                k++;
            }
            else
            {
                arrC[k] = arrA[i];
                i++;
                j++;
                k++;
            }
        }
        if (i == n)
        {
            while (j < m)
            {
                arrC[k] = arrB[j];
                j++;
                k++;
            }
        }
        else
        {
            while (i < n)
            {
                arrC[k] = arrA[i];
                i++;
                k++;
            }
        }
        return(k);
    }

1 个答案:

答案 0 :(得分:1)

正如评论中的sawims所指出的那样,union是一个保留词,你在else if (arrA[i] > arbB[j])上输了一个错字,更改了函数的名称并修复了你的代码编写错误。

http://ideone.com/ubB1eG