C语言家谱如何分层输出

C语言家谱如何分层输出,第1张

C语言家谱分层输出代码如下:

*/

#include

#include

#include

#include

#include"map.h"

#defineMAXN100

#defineMAXMEM100

#defineElemtypechar

//

//树

typedefstructBiTNode

{undefined

intmark//标记

intlevel

charname[50]//姓名

charbirthday[50]//生日

charaddress[MAXN]//住址

boolmarriage//婚否(true表示结婚,false表示没结婚)

boollive//建在(true表示活着,false表示过世)

boolsex//性别(true表示男,false表示女)

charlivemassage[50]//死亡日期(如果其已经死亡)

Elemtypedata//

structBiTNode*lc,*rc

}BiTNode,*BiTree

//

//树的相关 *** 作

charnametemp[50]//姓名

charbirthdaytemp[50]//生日

charaddresstemp[MAXN]//住址

boolmarriagetemp//婚否(true表示结婚,false表示没结婚)

boollivetemp//建在(true表示或者,false表示过世)

boolsextemp

charlivemassagetemp[MAXN]//死亡日期(如果其已经死亡)

charch//额外使用

intleveltemp//人的代数

intNth//显示第n代人时要用

charsearchdata[50]

charsearchname[50]

intcount//计数

intchoice//各种选择

intuse

BiTreetemp

structBiTNodeList

{undefined

BiTreedata

BiTNodeList*next

}

BiTNodeList*Li

st

voidCreatBiTree(BiTree&T,FILE*in)//建立双链二叉树

{undefined

fscanf(in,"%c",&ch)

//printf("%c\n",ch)

if(ch=='@')

层,意为①重叠起来的东西;重叠起来的东西中的一部分:层次|表层|大气层。②重叠;重复:层峦叠嶂|层出不穷。③量词,用于可以分出层次的事物:三层楼|两层意思|擦掉一层灰。

家谱:又称族谱、宗谱等。是一种以表谱形式,记载一个家族的世系繁衍及重要人物事迹的书。家谱是一种特殊的文献,就其内容而言,是中华文明史中具有平民特色的文献,记载的是同宗共祖血缘集团世系人物和事迹等方面情况的历史图籍。据研究表明,中华古姓来源于图腾崇拜,系氏族徽号或标志。

#include<stdio.h>

#include<string.h>

char w[5][20]={{"child"},{"parent"},{"sibling"},{"descendant"},{"ancestor"}}

    int kong(char a[]) {

    int n=0,i

    for(i=0a[i]!='\0'i++) {

    if(a[i]==' ')

    n++

    else

    break

    }

    return n

}

char fam[200][20]

int num[200]={0}

int search(char a[],int n) {

    int i=1

    while(1) {

    if(!strcmp(a,fam[i]))

    return i

    i++

    }

    return 0

}

int search1(int n,int x) {

    int i=1

    while(i<x) {

    if(num[i]==n)

    return i

    i++

    }

    return 0

}

char name[1000],word[1000],n1[100],n2[100],d[100]

int main() {

    int n,m,i,j,a,b,t,x,k,h

    while(scanf("%d%d",&n,&m)!=EOF) {

        memset(fam,'\0',sizeof(fam))

        memset(num,'\0',sizeof(num))

        scanf("%s",fam[1])

        getchar()

        a=b=2

        t=1

        num[1]=1

    for(i=2i<=ni++) {

        memset(name,'\0',sizeof(name))

        gets(name)

        b=kong(name)

        if(b>a) {

            if(fam[search1(t*2+1,i)][0]!='\0')

                t=t*2+1

            else 

                t=t*2

        }

        else { if(b<a) {

            h=(a-b)/2

            while(h>=1) {

                t=t/2

                h--

            }

        }}

    if(fam[search1(t*2,i)][0]!='\0')

    x=t*2+1

    else x=t*2

    num[i]=x

    for(j=bname[j]!='\0'j++)

    fam[i][j-b]=name[j]

    a=b

    }

    for(i=0i<mi++) {

    gets(word)

    k=0h=0

    memset(n1,'\0',sizeof(n1))

    memset(n2,'\0',sizeof(n2))

    memset(d,'\0',sizeof(d))

    for(j=0word[j]!='\0'j++) {

    if(word[j]==' ') {

    k++

    h=0

    continue

    }

    if(k==0)

    n1[j]=word[j]

    if(k==5) {

    n2[h]=word[j]

    h++

    }

    if(k==3) {

    d[h]=word[j]

    h++

    }

    }

    if(!strcmp(d,w[0])) {

    a=search(n1,n)a=num[a]

    b=search(n2,n)b=num[b]

    if(a==b*2||a==(b*2+1))

    printf("True\n")

    else printf("False\n")

    continue

    }

    if(!strcmp(d,w[1])) {

    a=search(n1,n)a=num[a]

    b=search(n2,n)b=num[b]

    if(b==a*2||b==(a*2+1))

    printf("True\n")

    else printf("False\n")

    continue

    }

    if(!strcmp(d,w[2])) {

    a=search(n1,n)a=num[a]

    b=search(n2,n)b=num[b]

    if((a==b+1&&a==b/2*2+1)||(a==b-1&&b==a/2*2+1))

    printf("True\n")

    else printf("False\n")

    continue

    }

    if(!strcmp(d,w[3])) {

    a=search(n1,n)a=num[a]

    b=search(n2,n)b=num[b]

    while(a>0) {

    a=a/2

    if(a==b) {

    printf("True\n")

    break

    }

    if(a==0)

    printf("False\n")

    }

    continue

    }

    if(!strcmp(d,w[4])) {

    a=search(n1,n)a=num[a]

    b=search(n2,n)b=num[b]

    while(b>0) {

    b=b/2

    if(a==b) {

    printf("True\n")

    break

    }

    if(b==0)

    printf("False\n")

    }

    continue

    }

    }

    }

    return 0

}

听说回答的够长能够自动采纳


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8051798.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存