编辑代码

#include <stdio.h>
#include <stdlib.h>
typedef struct people{
	char name[20];
	int is_married;
	char sex;
	int age;
}p;
typedef struct f_people{
	p I;
	p par;
	struct f_people *lchild;
	struct f_people *rbro;
	
}f;
//将数据输入
void input_f(f *people){
	people=(f*)malloc(sizeof(f));
	printf("请输入他/她的姓名");
	scanf("%s",people->I.name);
	printf("请输入他/她的性别(男M/女W)");
    getchar();
	scanf("%c",&people->I.sex);
	if(people->I.sex=='M'||people->I.sex=='m'){
		printf("请输入他的年龄");
		scanf("%d",&people->I.age);
        printf("请输入他是否已婚(是1/否0)");
	    scanf("%d",&people->I.is_married);
    if(people->I.is_married==1){
        	printf("请输入她的姓名");
	        scanf("%s",people->par.name);
            printf("请输入她的年龄");
		    scanf("%d",&people->par.age);
            if(prople->I.sex=='m'||people->I.sex=='M'){
                prople->par.sex='W';
            }else{
                prople->par.sex='m';
            }
            people->par.is_married=1;
            

    }else{
        return;
    }
		
	}else{
		printf("请输入她的年龄");
		scanf("%d",&people->I.age);
	}
    printf("请输入他/她是否已婚(是1/否0)");
	scanf("%d",&people->I.is_married);
    if(people->I.is_married==1){
        	printf("请输入他/她的姓名");
	scanf("%s",people->I.name);
    printf("请输入她的年龄");
		scanf("%d",&people->I.age);

    }else{
        return;
    }
	
	
	
	
}
//创建家庭族谱(按照前根遍历),循环结束的标志是I.name=#;
void create (f* people){
	if(people->I.name=='#'){
		return;
	}
	input_f(people);
	create(people->lchild);
	create(people->rbro);
}
//创建家庭族谱(按照层次引导进行)
void create2 (f*people){
    input_f(prople)
     

}
//打印家庭族谱
void print (f*people){




}


int main(){
	int a1=0,a2=0;
	printf("家庭族谱管理系统");
	printf("********************************");
	printf("1.创建一个家庭族谱/n2.读取存档的家庭族谱/n请输入1/2");
	printf("********************************");
	scanf("%d",a1);
	while(1){
		switch (a1) {
		case 1:
			f *people;
			printf("1.通过前根遍历的顺序将空的位置补#来实现/n2.通过层次顺序来实现/n请输入1/2" );
			printf("********************************");
				scanf("%d",a2);
			switch (a2) {
			case 1:
				create(people);
				break;
			case 2:
				
				break;
			default:
				//TODO
				break;
			}
			//TODO
			break;
		case 2:
			//TODO
			break;
		default:
			//TODO
			break;
		}
		
	}
	
}