本例項有求設計乙個模擬社會關係的資料結構,每個人的資訊用結構表示,包含名字,性別和指向父親,母親,配偶,子女的指標(設只限兩個子女)。要求編寫以下函式:
增加乙個新人的函式
建立人與人之間關係的函式,父子 、母子、配偶等
檢查某兩人之間是否是堂兄妹
該例項的主要目的是聯絡c中結構體的使用,下面是函式的實現:
#include
#include
#include
#define children 2
/** * 設計乙個模擬社會關係的資料結構,每個人的資訊用結構表示,包含名字,
* 性別和指向父親,母親,配偶,子女的指標(設只限兩個子女)。要求編寫
* 以下函式:(1)增加乙個新人的函式 (2)建立人與人之間關係的函式,父子
* 、母子、配偶等 (3)檢查某兩人之間是否是堂兄妹
*/struct person;
/* [函式] 新增乙個新人 */
struct person * newperson(char *name,char ***)
return p;
};/* [函式] 建立父子關係 */
void father_child(struct person *father,struct person *child)
/* [函式] 建立母子關係 */
void mother_child(struct person *mother,struct person *child)
/* [函式] mate 建立配偶關係 */
void mate(struct person *h,struct person *w)
/** [函式] 判斷是否為堂兄妹
* params:
* struct person *p1:被判斷的人
* struct person *p2:被判斷的人
* return:
* 0:不是堂兄妹關係
* 1:是堂兄妹關係
*/int brothersinlaw(struct person *p1,struct person *p2)
return
0; }
/* [函式] 輸出人物關係 */
void print_relate(struct person *p)
printf("\n");
}int main()
; char male='m',female='f';
struct person *pgrandfather,*pfather1,*pfather2,*pmother1,*pmother2,*pson,*pdaughter,*pcousin;
pgrandfather = newperson(name[0],male);
pfather1 = newperson(name[3],male);
pfather2 = newperson(name[4],male);
pmother1 = newperson(name[1],female);
pmother2 = newperson(name[2],female);
pson = newperson(name[5],male);
pdaughter = newperson(name[6],female);
pcousin = newperson(name[7],female);
father_child(pgrandfather,pfather1);
father_child(pgrandfather,pfather2);
father_child(pfather1,pson);
father_child(pfather1,pdaughter);
father_child(pfather2,pcousin);
mate(pfather1,pmother1);
mate(pfather2,pmother2);
mother_child(pmother1,pson);
mother_child(pmother1,pdaughter);
mother_child(pmother2,pcousin);
/* 輸出各種關係 */
print_relate(pgrandfather);
print_relate(pfather1);
print_relate(pfather2);
print_relate(pmother1);
print_relate(pmother2);
print_relate(pson);
print_relate(pdaughter);
print_relate(pcousin);
if(!brothersinlaw(pdaughter,pcousin))
printf("%s and %s are not brothers (sisters) in law.\n",pdaughter->name,pcousin->name);
else
printf("%s and %s are brothers (sisters) in law.\n",pdaughter->name,pcousin->name);
if(!brothersinlaw(pson,pcousin))
printf("%s and %s are not brothers (sisters) in law.\n",pson->name,pcousin->name);
else
printf("%s and %s are brothers (sisters) in law.\n",pson->name,pcousin->name);
if(!brothersinlaw(pson,pdaughter))
printf("%s and %s are not brothers (sisters) in law.\n",pson->name,pdaughter->name);
else
printf("%s and %s are brothers (sisters) in law.\n",pson->name,pdaughter->name);
return
0;}
總體來說,該例項並不難,並沒有涉及到比較複雜的演算法,其中稍微有些需要考慮的地方就是在判斷兩個人是否是堂兄妹的時候,用到了一點小方法,也不是很難。
下面我們來看一下程式的執行結果:
Hifan 中國社會關係的特點 Hifan
中國社會關係的特點 033205 王琪 軟體學院 首先我就我自己的感覺說,我覺得中國就是乙個人情社會,這也是我們一直受孔子儒家思想統治的結果。在中國,絕大部分人都是信 人性本善論 的。這樣他就會把別人和社會想的很美好,所以相關的法律就不會很完善。其實我們也是不知道社會到底是怎麼乙個樣子的,只是中國人...
社會關係網之中心性分析法
經常研究社會關係網的同學應該對社會關係網中的分析法比較熟悉,最近在寫畢業設計用到了這方面的知識,所以在這做個總結。社會關係網是一門研究社會中社會實體 稱為參與者 以及他們之間的活動與關係的學問。這種關係和活動可以用網路或者圖來進行表示,其中,每乙個頂點用來表示乙個參與者,而一條邊的鏈結用來表示兩個參...
社會關係網路 SNA 如何應用於團夥欺詐識別
金融風控反欺詐線條裡,運用社會關係網路 sna 技術結合信貸產品業務場景發現疑似團夥欺詐,已經成為近年反欺詐技術的成功應用和熱點,不僅是金融科技公司不斷公升級欺詐監測技術,就連傳統銀行,也開始著力搭建自己的反欺詐技術團隊。反欺詐策略規則,雖然可以在多個規則緯度交叉關聯匹配下,構建客戶規則節點的關聯關...