C语言创建家谱

来源:百度知道 编辑:UC知道 时间:2024/05/24 16:36:21
struct people
{ char name[10];
char fathername[10];
};
已经有数据struct people family[n],根据以上人的名和他父亲的名重构一棵树。树结构要有利于画家谱图,我为这事伤透了脑筋啊,请详细点。
注意以上有关数据我都能从也创的文件中提取出来,并放在struct people family[n]中,现在是要用这些数据去画家谱图,像下
。。。。。。。。-----
。。。。。。。|。。name。。|
。。。。。。。------
。。。。。。。。。|
。。。。-----------
。。。。|。。。。。。。。。|
。。----- 。。。。-----
。。|。name 。|。。。|。。name。。|
。。------。。。------
上面的图有点问题,其实就是三个方框,之间用线连接,那个“。”都不要。
不知道上面的结构合不合适画,是否要改为树结构呢,如要的话,请帮忙改一下,并写出能画出家谱图的代码。
人数只有十几个,是五六代吧

如果你保证他们一大家子没人重名还是比较简单的问题。

不知道你想听思路还是要代码?

画出家谱就比较麻烦了,天知道屏幕够不够大。

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

拿2分走人..........

这是一个二维数组的结构化函数,我把你那边的n的值改为50,表示最多能输入50个人的家谱信息
#include<stdio.h>
struct people
{
char name[10];
char fathername[10];
};
void main()
{
struct people family[50];
int i,row=0;
char c;
for(i=0;i<50;i++)
{
printf("请输入第%d个人的姓名:",i+1);
gets(family[i].name);
printf("请输入第%d个人父亲的姓名:",i+1);
gets(family[i].fathername);
printf("是否继续(y/n):");
scanf(" %c",&c);
if(c=='n'||c=='N')
break;
}
row=i+1;
printf("儿子姓名\t父亲姓名\n");
for(i=0;i<row;i++)
{
printf("%s\t%s\n",family[i].name,family[i].fathername);
}
}
就这么简单,看看是不是这样的,上面的row是你实际输入用户数量的行数,每输完一组用户的信息,都会提示是否继续,选y继续循环,n退出循环row=i+1

我也在找代码,求发,谢谢!