PTA
題目:
代碼:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a[20], b[20], c[20],flag=0;//這裏flag做旗幟變量
int m, n, i, j, k=0;
scanf("%d", &m);
for(i=0; i<m; i++)
scanf("%d", &a[i]);
scanf("%d", &n);
for(i=0; i<n; i++)
scanf("%d", &b[i]);//對數組賦值
for(i=0; i<m; i++)
{
for(j=0; j<n; j++)
if(a[i]==b[j])
break;
if(j>=n)
{
c[k]=a[i];
k++;
flag=1;
}//將不重複的數字添加到c中
}
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
if(b[i]==a[j])
break;
if(j>=m)
{
c[k]=b[i];
k++;
flag=1;
}
}
if(flag!=0)
{
printf("%d", c[0]);//這並沒用考慮到完全相同的情況
for(i=1; i<k; i++)
{
for(j=0; j<i; j++)
if(c[i]==c[j])
break;
if(j>=i)
printf(" %d", c[i]);
}
}
return 0;
}
詳解:
- 總體思路:先賦值,將a數組中不存在與b數組的元素填入c數組中,再將b數組中不存在於a數組中的元素填入c數組中,最後進行去重判斷,同時要保留一種特殊情況即:兩個數組完全相同。
- 判斷特殊情況只需要一個旗幟變量flag即可很容易處理。除賦值外第一個大的for循環實現a數組的添加,第二個for循環實現b數組的添加。最後一個for循環實現判斷去重。
結果: