首页 新闻 会员 周边 捐助

谁能帮我解决下这个c语言程序的问题,这个宏定义问题在哪里没看出来,求大神帮忙解决

0
[已解决问题] 解决于 2016-10-24 14:58

#include <stdio.h>
#include <stdlib.h>
#define N 20
#define M 20
int main()
{
int M,N,i,j,k,l,counter;

scanf("%d",&N);
int A[N];
for(i=0;i<N;i++)
{
scanf(" %d",&A[i]);
}
/*排除A【】数组里面的重复数字*/
for(i=0;i<N;i++)
{
for(j=i+1;j<N;j++)
{
if(A[i]==A[j]) //发现数组里面重复的数字
{
for(k=j+1;k<N;k++) //重复的数字后面的数字全部向前移动一下
{
A[k-1]=A[k];
}
N--;
} //减小这个数组的一个长度
}
}

scanf("%d",&M);
int B[M];
for(j=0;j<M;j++)
{
scanf(" %d",&B[j]);
}

 

for(j=0;j<M;j++)
{
for(i=j+1;i<M;i++)
{
if(B[j]==B[i])
{
for(l=i+1;l<M;l++)
{
B[l-1]=B[l];
}
M--;
}
}
}


counter=M+N;
int C[counter],H;
H=0;


for(i=0;i<N;i++)
{

for(j=0;j<M;j++)
{
if(A[i]==B[j])
{
break;
}
}
if(j==M)
{
C[H]=A[i];
H++;
}
}


printf("%d",C[0]);
for(i=1;i<H;i++)
{
printf(" %d",C[i]);
}


for(j=0;j<M;j++)
{
for(i=0;i<N;i++)
{
if(B[j]==A[i])
{
break;
}
}
if(i==N)
printf(" %d",B[j]);
}

 

}

大家好!我是王端的主页 大家好!我是王端 | 菜鸟二级 | 园豆:202
提问于:2016-10-23 12:05
< >
分享
最佳答案
0

#define N 20
#define M 20 

已经定义了宏,后面的int M,N ,错误,替换语句之后是 int 20,20,肯定出错

奖励园豆:5
悦光阴 | 老鸟四级 |园豆:2251 | 2016-10-23 12:34

 但是怎么改呢

大家好!我是王端 | 园豆:202 (菜鸟二级) | 2016-10-23 20:36

@大家好!我是王端:将宏换成字符串,有意义的字符串,唉,定义M.N,谁知道是什么意思?

悦光阴 | 园豆:2251 (老鸟四级) | 2016-10-23 21:25
其他回答(1)
0

为什么宏定义了M,N。 后面又自己重新定义了下M,N?

chenhuan001 | 园豆:202 (菜鸟二级) | 2016-10-23 12:15

 哦,是有点别扭   但是 要怎么改呢

支持(0) 反对(0) 大家好!我是王端 | 园豆:202 (菜鸟二级) | 2016-10-23 20:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册