題目:人見人愛A-B
這題的要求是,輸入兩個(gè)集合A、B,然后輸出兩個(gè)集合A-B。
題目的要求非常簡(jiǎn)單,但是要注意的一點(diǎn)就是要先給集合A進(jìn)行排序,因?yàn)轭}目要求從小到大輸出答案。
第二個(gè)要注意的是輸出的格式,題目要求輸出的每個(gè)元素后面要跟一個(gè)空格。
我的思路就是要讓B集合中的每個(gè)數(shù)跟A集合進(jìn)行對(duì)比。定義兩個(gè)整形變量flag=0 和 num=0。flag是用來判斷B中是否有元素與A中的元素相同。而num是記錄一共有多少個(gè)元素相同。
#include <stdio.h>
int main(){
int a[100],b[100];
int n,m;
int i,j;
int flag,num;
int t;
while(~scanf("%d%d",&n,&m)){
if(n==0&&m==0) break;
num=0;
for(i=1;i<=n;i++){
scanf("%d",&a[i]);
}
for(j=1;j<=m;j++){
scanf("%d",&b[j]);
}
for(i=1;i<=n;i++){ //對(duì)數(shù)組a進(jìn)行排序
for(j=1;j<=n-1;j++){
if(a[j]>a[j+1]){
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=1;i<=n;i++){
flag=0; //每次循環(huán)開始的時(shí)候,flag都等于0
for(j=1;j<=m;j++){
if(a[i]==b[j]){
flag++; //當(dāng)數(shù)組b中有一個(gè)元素與數(shù)組a中的元素一樣的時(shí)候,flag自增且結(jié)束循環(huán)
break;
}
}
if(flag!=0) num++; //有元素相同的時(shí)候,用num記錄相同元素的個(gè)數(shù)
if(flag==0) {
printf("%d ",a[i]);//沒有相同元素的時(shí)候,直接輸出這個(gè)元素,且元素后面有空格
}
}
if(num==n) printf("NULL");//如果記錄相同元素的個(gè)數(shù)等于數(shù)組a的個(gè)數(shù)的時(shí)候,輸出NULL
printf("\n");
}
}