c語言求兩個(gè)集合的交集 為什么我覺得C語言中二維數(shù)組沒用,明明兩個(gè)一維數(shù)組就能解決,為什么要有二維數(shù)組存在?
為什么我覺得C語言中二維數(shù)組沒用,明明兩個(gè)一維數(shù)組就能解決,為什么要有二維數(shù)組存在?從底層實(shí)現(xiàn)來看,無論是一維數(shù)組、二維數(shù)組還是多維數(shù)組,都是以一維方式排列在內(nèi)存中。用一維陣列模擬多維陣列。從這一點(diǎn)出
為什么我覺得C語言中二維數(shù)組沒用,明明兩個(gè)一維數(shù)組就能解決,為什么要有二維數(shù)組存在?
從底層實(shí)現(xiàn)來看,無論是一維數(shù)組、二維數(shù)組還是多維數(shù)組,都是以一維方式排列在內(nèi)存中。用一維陣列模擬多維陣列。從這一點(diǎn)出發(fā),一維陣列可以解決多維陣列的問題。常用的模擬方法:
將二維數(shù)組a[M][n]表示為一維數(shù)組a[M*n
]用[y*nx]代替[y][x
]注意這里用一維數(shù)組代替二維數(shù)組
從代碼清晰易讀的角度來看,二維數(shù)組和多維數(shù)組是不同的有意義。有很多數(shù)據(jù)可以用二維數(shù)組或多維數(shù)組來表示。如果數(shù)據(jù)以適當(dāng)?shù)姆绞奖硎荆惴▽⒑啙嵜髁?。典型?shù)據(jù)適合二維數(shù)組表示,如平面圖形、矩陣。采用二維數(shù)組,程序清晰易讀;采用一維數(shù)組,可讀性要低得多。
與匯編語言相比,C提供了一些數(shù)據(jù)抽象,如數(shù)組、結(jié)構(gòu)和聯(lián)合。事實(shí)上,沒有這些抽象,程序仍然可以被編程。但C語言的優(yōu)點(diǎn)是具有高度的抽象性,非常適合于系統(tǒng)級(jí)程序的開發(fā)和維護(hù)。如果您認(rèn)為C語言提供的抽象級(jí)別太高,那么匯編可能更適合您的項(xiàng)目。如果您認(rèn)為C語言提供的抽象級(jí)別太低,那么有很多選擇。從C、java到各種新語言,您可以嘗試替換它們。
如何寫一個(gè)c語言程序求兩個(gè)集合的交集?
定義兩個(gè)數(shù)組來存儲(chǔ)這兩個(gè)集合,然后定義一個(gè)數(shù)組來存儲(chǔ)它們的集合。使用類似于氣泡排序的算法,遍歷數(shù)組1中的第一個(gè)元素和數(shù)組2中的每個(gè)元素。如果存在相同的元素,則將此元素放入第三個(gè)數(shù)組并繼續(xù)遍歷,直到數(shù)組1遍歷了所有元素,那么數(shù)組3中的元素就是兩個(gè)數(shù)組(集)的交點(diǎn)。
c語言合并兩個(gè)數(shù)組?
代碼示例:
int main(int argc,char*argv[
]{
int a[2][3]={1,2,3,4,5,6}
int b[2][3]={7,8,9,3,2,1}
int i,J
int c[12]//c是一個(gè)數(shù)組HA
]int k=0
printf(“數(shù)組是:”)。//您已經(jīng)有了a和b,因此不需要再輸入它們了
//for(I=0I<6i)
//scanf(%d”,&A
//for(I=0I<6i)
//二維數(shù)組變成一維數(shù)組,二維數(shù)組就是一維數(shù)組,二維數(shù)組是雙循環(huán)的
對(duì)于(I=0I<2i
!][C[C[k
![C[C[C[k
!]printf(現(xiàn)在,數(shù)組是[now,數(shù)組是[now,數(shù)組是:數(shù)組是:這是數(shù)組是:這是數(shù)組是[now,數(shù)組是:這是[now,the[I
]if((I)]1)%4==0
printf(“n”)
}
return 0
}
~]include<stdio。H>#包含<string。H>int main(int argc,char*argv[]{char a[20],B[20]int n,m,J,K printf(“請(qǐng)輸入第一組內(nèi)容n”)scanf(%s”,a)J=strlen(a)printf(“請(qǐng)輸入第二組內(nèi)容n”)scanf(%s”,B)K=strlen(B)printf(“集的交集為:”)////////// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / }}}printf(“n%sn”,c)/////////計(jì)算兩個(gè)數(shù)組的并集///////flag=1 index=0 for(n=0n<jn){for(M=0m<indexm){if(d[M]==a[n])flag=0}if(flag){d[index]=a[n]}flag=1}flag=1 for(n=0n<jn){if(d[M]==B[n])flag=0}if(flag){d[index]=B[n]}flag=1}printf(“集合的并集是:”)printf(“n%sn”,d)返回0}