#include<stdlib.h>
#include<stdio.h>
int main()
{
int m,n;
int i,j,k,t;
i=0;
j=0;
k=0;
int swap;
int a[100],b[100],c[100];
while (scanf("%d%d",&m,&n),m+n)
{
for(i=0;i<m;i++)//输入数组a
{
scanf("%d",&a[i]);
}
for(j=0;j<n;j++)//输入数组b
{
scanf("%d",&b[j]);
}
for(i=0;i<m;i++)
{
t=1;
for(j=0;j<n;j++)
{
if(a[i]==b[j])
{
t=0;
}
}
if(t)
{
c[k++]=a[i];
}
}
if(k==0)
{
printf("NULL");
}
for(i=0;i<k-1;i++)
{
for(j=i+1;j<k;j++)
{
if(c[i]>c[j])
{
swap=c[i];
c[i]=c[j];
c[j]=swap;
}
}
}
for(i=0;i<k;i++)
{
printf("%d ",c[i]);
}
k=0;
printf("\n");
}
return 0;
}
做这道题的时候出现了几个问题,下面总结一下。
1,刚开始的时候思路始定义两个数组,分别是a,b两个数组,然后在做循环的时候删去a数组中在b数组中出现的元素,然后减小数组a的长度,之后发现a数组长度是循环的判断条件,更改之后会让输出错误,然后有加了一个数组C将只在a中出现不在b中出现的元素赋值给C,就可以解决这个问题。
2,循环的初始条件也也会让程序出错。多多注意。
3,输出的格式要注意,例如回车,空格。
4,熟悉了排序,下面是一种排序的方法。
for(i=0;i<k-1;i++)
{
for(j=i+1;j<k;j++)
{
if(c[i]>c[j])
{
swap=c[i];
c[i]=c[j];
c[j]=swap;
}
}
}