要用c语言遍一个程序,实现家谱的功能 基本要求:从文件中读入家庭成员建立家谱,以孩子兄弟表示法存储。
如果能确定家族成员个数,以及成员最大信息,可以用二维字符数组存储
char a[100][21];//代表最多可以存放100个成员,每个成员信息长度最多20,字符串结尾\0算一个
如果不能确定,要用动态创建数组
a = (char )malloc(sizeof(char ) M);//分配指针数组,M是实际运行是确定的成员个数
for(i=0; i<M; i++)
{
a[i] = (char )malloc(sizeof(char) (slen+1));//分配每个指针所指向的数组,slen是每个成员信息长度
}
C语言家谱分层输出代码如下:
/
#include
#include
#include
#include
#include"maph"
#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;//
structBiTNodelc,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;
BiTNodeListnext;
};
BiTNodeListLi
st;
voidCreatBiTree(BiTree&T,FILEin)//建立双链二叉树
{undefined
fscanf(in,"%c",&ch);
//printf("%c\n",ch);
if(ch=='@')
层,意为①重叠起来的东西;重叠起来的东西中的一部分:层次|表层|大气层。②重叠;重复:层峦叠嶂|层出不穷。③量词,用于可以分出层次的事物:三层楼|两层意思|擦掉一层灰。
家谱:又称族谱、宗谱等。是一种以表谱形式,记载一个家族的世系繁衍及重要人物事迹的书。家谱是一种特殊的文献,就其内容而言,是中华文明史中具有平民特色的文献,记载的是同宗共祖血缘集团世系人物和事迹等方面情况的历史图籍。据研究表明,中华古姓来源于图腾崇拜,系氏族徽号或标志。
计算机的程式设计主要是关于什么内容应该怎么学好这一门知识可以参考一下学习过的人的经验分享。下面是由我整理的,希望对您有用。
程式设计学习心得体会篇一
忙碌了一个多星期,在大家的共同努力下,我们总算将此程式设计出来。尽管不是自己独立完成,但仍然很高兴,因为在设计的过程中,让我了解到要设计一个大型程式,查询资料是至关重要的,在他人的基础上,再根据自己所学进行修改与除错,最后设计出自己想要的程式,这过程艰辛,但只要你持之以恒,成功指日可待。
另外平时扎实的基础也很关键,因为如果你平时学得就不怎么样,那么你面对这么一个比较有难度的程式,你可能会望而却步,看他人的程式都是个难点,更别说让你自己去设计。为了解决此。类问题,最好就是多向同学,老师请教,不要怕难为情。尤其是老师,评他们多年的编写程式的经验,要解决我们的问题,对他们来说只是 all case。
在设计这个程式时,我们刚开始是根据老师给我们提供的资料,用画图以及回圈将框架设计出来,但是接下去便无从下手了,计算是个关键和难点,我们也查了相应的资料,但是它上面用得是座标来做的,所以为了方便设计程式,我们也改为座标来做的,这样计算问题解决了。接下去就是按键问题,我们的资料是用滑鼠做的,所以关于按键这个函式就只能我们自己设计,还好手头有类似的资料,经过自己的反复尝试以及与与同学的讨论,这也不难,最好还是被我们搞定了。最后就是闪烁,这个设计的方法很死板,都一个型别,就是算座标比较烦琐,要确定好它的位置,但是这些只要你自己愿意去尝试,问题都可以迎刃而解的。 从这一个多星期的设计过程中,我看到了大家的拼搏与努力,也让我知道团队精神得难能可贵,尽管一年下来大家不怎么有多大接触,但是彼此之间的友谊已经在我们心里扎根生底,在遇到问题时,我们会共同进退,每个人都很慷慨不会因为是通过自己艰辛劳动设计出来的东西而不准他人剽窃了。
总之,这次设计程式让我受益良多,我会好好珍惜像这种难得的机会
程式设计学习心得体会篇二
在这为期半个月的时间内,通过我们小组各成员之间的相互讨论和合作,我们完成了学生资讯管理系统的程式设计,更值得高兴的是我们的程式得到了大家的喜爱,在每次的简报中都得到了较好的成绩。
虽然在上个学期中,我们已经学习了《C语言程式设计》这门课,但是我所学的知识最多也就是在做作业的时候才会用到,平时没有什么练习的机会,这次的课程设计是我第一次通过自己构思,和同学讨论并且不断查阅资料来设计一项程式。这次设计,不仅巩固了我以前所学的知识,还让我对c语言有了更深一步的了解,掌握了更多的技巧和技能。
C语言是计算机程式设计的重要理论基础,在我们以后的学习和工作中都有着十分重要的地位。要学好这种语言,仅仅学习课本上的知识是不够的,还要经常自己动手,有较强的实践能力。只有多动手,经常编写程式,才能发现我们学习上的漏洞和自己的不足,并在实践中解决这些问题,不断提高自己转化知识的能力。
在我们小组有解决不了的问题时,我们会主动查阅相关的资料,或向其他同学询问,这不仅丰富了我们的知识,还增进了我们同学之间的友谊。为了增大资讯的安全性,需要用档案来储存资讯,由于我们在上课时不注重对档案的运用,所以在这方面有较大的困难。我先将书本认认真真地一遍,又做了一下课后习题来验证和增进自己的理解,终于,经过我们的不懈努力,我们小组的程式有了突破,成功地实现了用档案来储存并检视学生的资讯。
这次设计中,我的收获还有就是学会了用流程图来表达自己的想法,并根据流程图来逐步实现程式的功能。开始的时候,我画流程图很是困难,需要一个多小时才能清楚的根据自己的想法画出图来,后来画多了,就更加了解它的功能,十分得心应手,能够比较快而准确的画出来。
在这次课程设计中,我们首先对系统的整体功能进行了构思,然后用结构化分析方法进行分析,将整个系统清楚的划分为几个模组,再根据每个模组的功能编写程式码。而且尽可能的将模组细分,最后在进行函式的呼叫。我们在函式的编写过程中,我们不仅用到了for回圈、while回圈和switch语句,还用到了函式之间的呼叫包括递回呼叫。由于我们是分工编写程式码,最后需要将每个人的程式码放到一起进行除错。因为我们每个人写的函式的思想不都一样,所以在除错的过程中也遇到了困难,但经过我们耐心的修改,终于功夫不负有心人,我们成功了!
在参考书上,我们不仅参考了曾经学过的高敬阳主编的《c语言程式设计》,还找到了由谭浩强主编的第三版《c语言》进行参考。
当然,我们的程式还有一些不完善的地方,比如说,当输入的资料不符合我们定义的资料的格式的时候,程式会出现一些错误,有时会出现主选单的死回圈;在一次程式执行中,只能行使一种许可权,要想再行使另一种许可权,就只能退出程式,然后再执行程式。
三周的小学期即将结束,时间虽短,但是我收获了很多。最后,谢谢老师和同学们的指导,更要感谢我们小组成员之间的合作与交流。
程式设计学习心得体会篇三
做了两周的课程设计,有很多的心得体会,更多的是同学之间的合作精神, 这道课程设计花了我们一到两周的时间,几人合作,老师的帮忙才完成。我第一次完成这么完美的杰作,心理有一份别样的滋味,在设计过程中,我付出了很多,也懂得了只有付出才有回报。在这次设计中,我遇到了很多困难,但我没有向困难低头,通过查询资料,虚心向同学、老师请教,才一一得到了解决。我发现平时学的太少了,在今后我首先要把老师在课堂讲的弄懂,弄透,在此基础上利用课余时间多看课外书籍,拓宽知识面。在设计过程中,合作精神必不可少。单凭一个人的力量是不能完成的,毕竟一个人学的很有限。每个人掌握的不同。我相信:态度决定一切,只有努力才有收获。
第一天上机时对如何编计数器程式一点头绪都没有,只是将从图书馆借来的关于如何制作图形一遍,大体上有了了解。
第二天我就着手画计数器图形,虽然有些人图形已画好,可我没有着急,毕竟别人花的时间比我多,为了使图形美观我不断执行、除错,直到自己满意为止。
接下来是星期五,说实话那天蛮难熬的,一天都泡在机房。眼睛有点吃不消,可没有办法,将来我们就靠计算机吃饭,再苦再累也要坚持。在已编好的程式上又加了一点精髓,怎样使字元闪烁,这也是我们几个人互相讨论的结果。接下来几天再将程式不断完善、加工,计数器程式初露头角。
最后小结:程式设计过程有如解决一实际问题,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;其次,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入汇出输出,在这个过程中,可确定所需的变数、阵列、函式,然后确定处理过程--演算法。可得最后结论。
在程式设计中,可认为也是一个社会,每个一同的社会成员都有不同的想法。程式设计学得的好坏要看你在社会中解决问题的能力的高低,所以不同的人程式设计的结果是不同的。在这个社会中,经验与想法最为重要。
这是一个二维数组的结构化函数,我把你那边的n的值改为50,表示最多能输入50个人的家谱信息
#include<stdioh>
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
#include<stdioh>
#include<stringh>
char w[5][20]={{"child"},{"parent"},{"sibling"},{"descendant"},{"ancestor"}};
int kong(char a[]) {
int n=0,i;
for(i=0;a[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=2;i<=n;i++) {
memset(name,'\0',sizeof(name));
gets(name);
b=kong(name);
if(b>a) {
if(fam[search1(t2+1,i)][0]!='\0')
t=t2+1;
else
t=t2;
}
else { if(b<a) {
h=(a-b)/2;
while(h>=1) {
t=t/2;
h--;
}
}}
if(fam[search1(t2,i)][0]!='\0')
x=t2+1;
else x=t2;
num[i]=x;
for(j=b;name[j]!='\0';j++)
fam[i][j-b]=name[j];
a=b;
}
for(i=0;i<m;i++) {
gets(word);
k=0;h=0;
memset(n1,'\0',sizeof(n1));
memset(n2,'\0',sizeof(n2));
memset(d,'\0',sizeof(d));
for(j=0;word[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==b2||a==(b2+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==a2||b==(a2+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/22+1)||(a==b-1&&b==a/22+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;
}
听说回答的够长能够自动采纳
要用c语言遍一个程序,实现家谱的功能 基本要求:从文件中读入家庭成员建立家谱,以孩子兄弟表示法存储。
本文2023-12-05 13:45:33发表“资讯”栏目。
本文链接:https://www.lezaizhuan.com/article/623463.html