求任意两个集合的交集并集差集 用c语言求两个集合的交集,并集,差集
\u5982\u4f55\u6c42\u4e24\u4e2a\u96c6\u5408\u7684\u4ea4\u96c6\u5e76\u96c6\u8865\u96c6\u4ea4\u96c6\u662f\u4e24\u4e2a\u96c6\u5408\u7684\u516c\u5171\u5143\u7d20\uff0c\u5373\u4e24\u4e2a\u65b9\u7a0b\u7684\u516c\u5171\u89e3\uff1b
\u5e76\u96c6\u662f\u4e24\u4e2a\u96c6\u5408\u7684\u5143\u7d20\u7684\u603b\u4e2a\u6570\uff08\u76f8\u540c\u7684\u5143\u7d20\u53ea\u5199\u4e00\u6b21\uff09\uff1b
\u5dee\u96c6\uff1a\u5982\u679c\u4e24\u4e2a\u96c6\u5408\u6709\u4ea4\u96c6\uff0c\u5219\u5927\u96c6\u5143\u7d20\u4e2d\u6240\u6709\u4e0d\u5c5e\u4e8e\u5c0f\u96c6\u5408\u7684\u5143\u7d20\u7684\u96c6\u5408\u662f\u5dee\u96c6\uff0c\u5982\u679c\u6ca1\u6709\u4ea4\u96c6\uff08\u7a7a\u96c6\uff09\uff0c\u5219a-b=a,
b-a=b
#include #include #include #define ARR_LEN 255/*\u6570\u7ec4\u957f\u5ea6\u4e0a\u9650*/#define elemType char/* \u96c6\u5408\u5143\u7d20\u6570\u636e\u7c7b\u578b *//* \u96c6\u5408\u6570\u636e\u7ed3\u6784 */typedef struct set {elemType data[ARR_LEN];int length;} set;/* \u521d\u59cb\u5316\u96c6\u5408 */void initSet (set *S) {S->length = 0;} /* \u4ea4\u96c6 *//* A\u4e0eB\u7684\u4ea4\u96c6\uff08A\u2229B\uff09\uff1a\u65e2\u5c5e\u4e8eA\u53c8\u5c5e\u4e8eB\u7684\u5143\u7d20\u6784\u6210\u7684\u96c6\u5408 */int setIntersection (set A, set B, set *dest) {int i = 0, j = 0, k = 0;dest->length = 0;for (i=0; idata[k] = A.data[i];k++;}}}dest->length = k;if (dest->length)return 1;elsereturn 0;}/* \u5e76\u96c6 *//* A\u4e0eB\u7684\u5e76\u96c6\uff08A\u222aB\uff09\uff1aA\u4e0eB\u6240\u6709\u5143\u7d20\u6784\u6210\u7684\u96c6\u5408 */int setUnion (set A, set B, set *dest) {int i = 0, j = 0, k = 0;dest->length = 0;for (i=0; idata[k] = A.data[i];k++;}}for (j=0; jdata[k] = B.data[j];k++;}dest->length = k;if (dest->length)return 1;elsereturn 0;}/* \u8865\u96c6 *//* B\u5728A\u4e2d\u7684\u76f8\u5bf9\u8865\u96c6\uff08A\uff3cB\uff09\uff1a\u5c5e\u4e8eA\u4f46\u4e0d\u5c5e\u4e8eB\u7684\u5143\u7d20\u6784\u6210\u7684\u96c6\u5408 */int setComplement (set A, set B, set *dest) {int i = 0, j = 0, k = 0;dest->length = 0;for (i=0; idata[k] = A.data[i];k++;}}dest->length = k;if (dest->length)return 1;elsereturn 0;}/* \u6253\u5370\u96c6\u5408\u5185\u5bb9 */int printSet (set S) {int i;if (S.length == 0) {puts ("The set is empty! ");return 0;}for (i=0; i<S.length; i++)printf ("%c", S.data[i]);putchar ('\n');return 1;}int main (void) {set A, B;set AIB, AUB, ACB; /* \u4ea4\u96c6\u3001\u5e76\u96c6\u3001\u8865\u96c6 */initSet (&A); initSet (&B);initSet (&AIB); initSet (&AUB); initSet (&ACB);strcpy (A.data, "123");A.length = strlen (A.data);strcpy (B.data, "4532");B.length = strlen (B.data);printf ("A:\t");printSet (A);printf ("B:\t");printSet (B);putchar ('\n');printf ("A\u2229B:\t");setIntersection (A, B, &AIB);printSet (AIB);printf ("A\u222aB:\t");setUnion (A, B, &AUB);printSet (AUB);printf ("A\uff3cB:\t");setComplement (A, B, &ACB);printSet (ACB);getch (); /*\u5c4f\u5e55\u6682\u7559*/return 0;}
调试过了,成功。
想变换数组个数就改
#define M 10
#define N 10
后面的数字!
#include "stdio.h"
#define M 10
#define N 10
main() {
int i,j,k=-1,n=0;
int jj=-1,bb=-1;
int a[M],b[N],c[M*N],d[M+N],x[M*N],y[M+N];
for(i=0;i<M;i++)
scanf("%d",&a[i]);
for(i=0;i<M;i++)
scanf("%d",&b[i]);
for(i=0;i<M;i++){
for(j=0;j<N;j++)
if(a[i]==b[j]){
k++;
c[k]=a[i];
}
}
printf("
jiao ji :
");
for(i=0;i<=k;i++){
n=0;
for(j=i+1;j<=k;j++){
if(c[i]!=c[j]){
n++;}
}
if(n==k-i){
jj++;
x[jj]=c[i];
printf("%d " ,c[i]);
}
}
printf("
bing ji :
");
for(i=0;i<M;i++)
d[i]=a[i];
for(j=0;j<N;j++)
d[M+j]=b[j];
for(i=0;i<=M+N-1;i++){
n=0;
for(j=i+1;j<=M+N-1;j++){
if(d[i]!=d[j]){
n++;}
}
if(n==M+N-1-i){
bb++;
y[bb]=d[i];
printf("%d " ,d[i]);
}
}
printf("
cha ji :
");
for(i=0;i<=bb;i++){
n=0;
for(j=0;j<=jj;j++){
if(y[i]!=x[j]){
n++;
}
}
if(n-1==jj)
printf("%d ",y[i]);
}
}
不知道你想要什么= =
绛旓細瑕佹兂瀛︿範闆嗗悎鐨勪氦闆銆骞堕泦銆宸泦鍜屽绉宸泦杩愮畻鏂规硶锛岄鍏堟垜浠潵浜嗚В杩欎簺鍚嶈瘝鐨勫惈涔夛細璁続銆丅涓や釜闆嗗悎锛岀敱鎵鏈夊睘浜庨泦鍚圓涓斿睘浜庨泦鍚圔鐨勫厓绱犳墍缁勬垚鐨勯泦鍚堬紝鍙仛闆嗗悎A涓庨泦鍚圔鐨勪氦闆嗐傚湪Python涓紝杩涜浜ら泦杩愮畻鏃朵娇鐢ㄢ&鈥濈鍙枫傜粰瀹氫袱涓泦鍚圓銆丅锛屾妸浠栦滑鎵鏈夌殑鍏冪礌鍚堝苟鍦ㄤ竴璧风粍鎴愮殑闆嗗悎锛屽彨鍋氶泦鍚圓涓庨泦鍚圔...
绛旓細P(AB) - P(BC) - P(CA)锛婸(ABC)銆備氦闆嗙敤鈥溾埄鈥濊〃绀猴紝浜ょ殑鏄袱鑰呯殑鐩稿悓閮ㄥ垎锛屽锛欰=锝1,2,3,4锝,B=锝3,4,5,6锝,鍒橝B鐨勪氦闆鍗矨鈭〣=锝3,4锝 骞堕泦涓撶敤鈥溾埅鈥濊〃绀猴紝骞剁殑鏄簩鑰呯殑灞炴墍鏈夊厓绱狅紝濡備笂渚嬶紝鍒橝B鐨勫苟闆嗭紝鍗矨鈭狟=锝1,2,3,4,5,6锝濇敞鎰闆嗗悎涓笉鑳芥湁閲嶅鐨勫厓绱犮
绛旓細鍗冲彧鍖呭惈浜 A 鍜 B 涓や釜闆嗗悎涓叡鏈夌殑鍏冪礌銆傞渶瑕佹敞鎰忕殑鏄紝骞堕泦鍜浜ら泦閮芥槸闆嗗悎杩愮畻锛屾搷浣滅殑瀵硅薄鏄泦鍚堬紝鑰屼笉鏄泦鍚堜腑鐨勫厓绱犮傚湪杩涜骞堕泦鍜屼氦闆嗚繍绠楁椂锛岄渶瑕佹敞鎰忛泦鍚堜腑鍏冪礌鐨勯噸澶嶆儏鍐碉紝缁撴灉闆嗗悎涓殑鍏冪礌鏄笉閲嶅鐨勩傛澶栵紝楂樹腑鏁板涓繕鏈琛ラ泦銆宸泦绛夐泦鍚堣繍绠楋紝姣忕杩愮畻閮芥湁鍏剁壒瀹氱殑搴旂敤鍜岃绠楁柟寮忋
绛旓細闆嗗悎棰樺湪鏁板鐨勪笘鐣屼腑锛岄泦鍚堟槸涓涓熀纭涓旈噸瑕佺殑姒傚康锛屾秹鍙婇泦鍚堢殑棰樼洰涔熸椂甯稿嚭鐜板湪瀛︾敓鐨勮鏈拰鑰冨嵎涓傚父瑙佺殑闆嗗悎棰樼洰鍖呮嫭姹傝В涓や釜闆嗗悎鐨勪氦闆銆骞堕泦銆宸泦绛夈傜粰鍑轰袱涓泦鍚圓鍜孊锛岃姹傚鐢熸眰鍑篈鍜孊鐨勪氦闆嗗窞绋匡紝鎴栬呮眰鍑哄睘浜嶢浣嗕笉灞炰簬B鐨勫厓绱犳瀯鎴愮殑闆嗗悎銆傝繖绫婚鐩棬鍦ㄨ冨療瀛︾敓瀵归泦鍚堣繍绠楃殑鎺屾彙绋嬪害銆傞櫎浜...
绛旓細1. 骞堕泦锛氬浜庝袱涓粰瀹氶泦鍚圓鍜孊锛屽畠浠殑骞堕泦鏄敱杩涓や釜闆嗗悎涓墍鏈夌殑鍏冪礌鏋勬垚鐨勯泦鍚堛備緥濡傦紝濡傛灉闆嗗悎A鍖呭惈鍏冪礌3鍜5锛岄泦鍚圔鍖呭惈鍏冪礌2銆3銆4鍜6锛岄偅涔圓鍜孊鐨勫苟闆嗘槸{2, 3, 4, 5, 6}銆2. 浜ら泦锛氬浜庝袱涓粰瀹氶泦鍚圓鍜孊锛屽畠浠鐨勪氦闆鏄敱鍚屾椂灞炰簬A鍜孊鐨勬墍鏈夊厓绱犳瀯鎴愮殑闆嗗悎銆備緥濡傦紝濡傛灉闆嗗悎A鍖呭惈...
绛旓細} /* 浜ら泦 *//* A涓嶣鐨勪氦闆锛圓鈭〣锛夛細鏃㈠睘浜嶢鍙堝睘浜嶣鐨勫厓绱犳瀯鎴愮殑闆嗗悎 */int setIntersection (set A, set B, set *dest) {int i = 0, j = 0, k = 0;dest->length = 0;for (i=0; i<A.length; i++) { /* 澶栧惊鐜亶鍘咥 */for (j=0; j<B.length; j++) { /* ...
绛旓細set1 = set(eval(s1))set2 = set(eval(s2))璁$畻涓や釜闆嗗悎鐨宸泦锛骞堕泦鍜屼氦闆 diff = set1 - set2 # 宸泦 union = set1 | set2 # 骞堕泦 inter = set1 & set2 # 浜ら泦 杈撳嚭缁撴灉 print("涓や釜闆嗗悎鐨勫樊闆嗘槸锛", diff)print("涓や釜闆嗗悎鐨勫苟闆嗘槸锛", union)print("涓や釜闆嗗悎鐨勪氦闆鏄細"...
绛旓細浜よ繍绠楋細闆嗗悎璁轰腑锛岃A锛孊鏄涓や釜闆嗗悎锛岀敱鎵鏈夊睘浜庨泦鍚圓涓斿睘浜庨泦鍚圔鐨勫厓绱犳墍缁勬垚鐨勫厓绱狅紝鍙仛瀛愰泦A涓庨泦鍚圔鐨勪氦闆锛坕ntersection锛夛紝璁颁綔A鈭〣銆傚苟杩愮畻锛氳嫢A鍜孊鏄泦鍚堬紝鍒橝鍜孊骞堕泦鏄湁鎵鏈堿鐨勫厓绱犲拰鎵鏈塀鐨勫厓绱狅紝鑰屾病鏈夊叾浠栧厓绱犵殑闆嗗悎銆侫鍜孊鐨勫苟闆嗛氬父鍐欎綔 "A鈭狟"锛岃浣溾淎骞禕鈥濓紝鐢ㄧ鍙疯瑷...
绛旓細浠ュ墠鍐欒繃涓涓函C鐨勶紝 鐢ㄧ殑鏄暟缁勶紝妯℃嫙C++ STL閲岄潰鐨剆et_intersection锛宻et_union鍜宻et_difference鐨勫疄鐜般 绋嶄綔浜嗕慨鏀癸紝娣诲姞浜嗕簺娉ㄩ噴锛屽笇鏈涜兘甯埌浣犮傛敞鎰忥細蹇呴』鍏堝杈撳叆闆嗗悎鎺掑簭锛涜緭鍑虹粨鏋滃拰C++ STL鐨勬祴璇曠粨鏋滃惢鍚堛俰nclude <stdio.h>#include <stdlib.h>#include <string.h>int set_intersection (...
绛旓細鐢ㄥぇ鎷彿{}琛ㄧず涓涓泦鍚堬紝鍏朵腑鐨勫厓绱犵敤閫楀彿鍒嗛殧銆備緥濡傦細{1,2,3,4}琛ㄧず涓涓寘鍚洓涓厓绱犵殑闆嗗悎銆2銆侀泦鍚堢殑杩愮畻锛骞堕泦锛氱敤绗﹀彿Union琛ㄧず涓や釜闆嗗悎鐨勫苟闆嗭紝鍗冲皢涓や釜闆嗗悎涓殑鎵鏈夊厓绱犲悎骞舵垚涓涓柊闆嗗悎銆備氦闆嗭細鐢ㄧ鍙稩ntersection琛ㄧず涓や釜闆嗗悎鐨勪氦闆锛屽嵆涓や釜闆嗗悎涓叡鍚屾嫢鏈夌殑鍏冪礌缁勬垚涓涓柊闆嗗悎銆宸泦锛氱敤...