練習7-4 找出不是兩個數組共有的元素 (20分)

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;	
}

詳解:

  1. 總體思路:先賦值,將a數組中不存在與b數組的元素填入c數組中,再將b數組中不存在於a數組中的元素填入c數組中,最後進行去重判斷,同時要保留一種特殊情況即:兩個數組完全相同。
  2. 判斷特殊情況只需要一個旗幟變量flag即可很容易處理。除賦值外第一個大的for循環實現a數組的添加,第二個for循環實現b數組的添加。最後一個for循環實現判斷去重。
    結果:
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章