我试图在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);
}
答案 0 :(得分:1)
正如评论中的sawims所指出的那样,union是一个保留词,你在else if (arrA[i] > arbB[j])
上输了一个错字,更改了函数的名称并修复了你的代码编写错误。