c语言程序课程设计
}//查找该节点的双亲#include
c语言课程设计小结 c语言课程设计总结报告
c语言课程设计小结 c语言课程设计总结报告
#define SIZE 10
typedef struct student
{int num;
char name[20];
int score[3];
float erage;
}student;
void indata(student stu)
{int i;
for (i = 0; i < SIZE; i++)
{scanf("%d %s %d %d %d%c", &stu[i].num, stu[i].name, &stu[i].score[0],
&stu[i].score[1], &stu[i].score[2]);
void outdata(student stu)
{int i;
for (i = 0; i < SIZE; i++)
{printf("%d %s %d %d %d %f\n", stu[i].num, stu[i].name, stu[i].score[0],
stu[i].score[1], stu[i].score[2], stu[i].erage);
int main()
{student stu[SIZE];
int i, j;
student temp;
printf("请输入信息:\n");
indata(stu);
for (i = 0; i < SIZE; i++) //算平均分
{stu[i].erage = 0;
for (j = 0; j < 3; j++)
stu[i].erage += stu[i].score[j];
stu[i].erage /= 3;
}for (i = 0; i < SIZE - 1; i++) //按平均分进行排序
{t = i;
for (j = i + 1; j < SIZE; j++)
{if (stu[t].erage > stu[j].erage)
t = j;
}if (t == b.done = temp;i)
continue;
else
{temp = stu[i];
stu[i] = stu[t];
stu[t] = temp;
printf("排序后信息为:\n");
outdata(stu);
return 0;
}
发,消,息,给,你了
c语言课程设计
C语言课程设计
scanf("%d",&r->sum);在vc 6.0的环境下可以运行。
短短一周的课程设计很快结束了,我发现我对计算机这个专业、对嵌入式技术、对都有了新的认识。通过这次的实训,我了解到,要真真正正的掌握计算机程序还不是一件简单容易的事儿,但真正掌握后,它带给我们的将是无穷的便捷与科技,我喜欢高端便捷的生活。我希望我能做计算机这个机器人的主人而不是奴隶,我会努力加油的!感谢学校,感谢老师给我的帮助,让我的思想、技能又上了一个台阶!感谢!加油!代码如下:
#include"stdio.h"
#include"string.h"
struct stu
{char number[4],name[5];
int age;
int score[2];
};
void count(struct stu);
void sort(struct stu,int );
int main()
{int n,i;
printf("输入有多少个学生:");
scanf("%d",&n);
struct stua=new struct stu[n];
struct stup=a;
for(i=0;i {printf("输入第%d个学生的学号:",i+1); scanf("%s",&(p->number)); printf("姓名:"); scanf("%s",&(p->name)); printf("年龄:"); scanf("%d",&(p->age)); printf("两门成绩:"); scanf("%d%d",&(p->score[0]),&(p->score[1])); }p=a; //在COUNT函数中输出个人总分和平均分 for(i=0;i {count(p); }p=a; //输出总分的学生 int max=0;char maxname[4]; for(i=0;i {if(max score[0]+p->score[1]) {max=p->score[0]+p->score[1]; strcpy(maxname,p->name); printf("\n\n获得分的学生是:%s\n",maxname); delete[]a; return 0; }void count(struct stu x) {int k=x.score[0]+x.score[1]; printf("%s的总成绩为:%d,平均分为:%d\n",x.name,k,k/2); }void sort(struct stu a,int n) {int i,j,x,y; struct stu p=a,temp; for(i=0;i {for(j=i+1;j {x=p->score[0]+p->score[1]; y=(p+j)->score[0]+(p+j)->score[1]; if(x {temp=p; p=(p+j); (p+j)=temp; }p=a; printf("\n\n学号 姓名 年龄 成绩1 成绩2\n"); for(i=0;i {printf("%s %s %d %d %d\n",p->number,p->name,p->age,p->score[0],p->score[1]); dsajfkl ;aksdfcase 9: 校园课程设计与评价学习总结 校园课程设计与评价学习的进行有利于提升教育的质量,吸引学生们的学习兴趣。下面校园课程设计与评价学习总结是我想跟大家分享的,欢迎大家浏览。 校园课程设计与评价学习总结(一) 本学期为期一周的嵌入式课程设计在不知不觉中结束了,虽说这次课程设计时间不是很长,但是感觉自己收获颇丰,不仅学习到了一些新知识,回顾了以前的一些快要遗忘的知识点,而且使自己的学习目标更加明确,学习方法更加完善,也体会到软件开发的趣味,更加清楚地认识到了自己在软件开发及学习上的一些不足之处。下面就来详细写一下我关于此次课程设计的心得体会: 此次课程设计的实训的是由上海杰普公司的楚老师带我们完成的。楚老师看上去比较年轻,给我们很有亲和力,技术上也很强,而且讲解的比较详细,作上相当娴熟。让我们感觉到了计算机科学技术学习的趣味性,计算机技术的实用性。此次课程设计给老师选择项目是在下用C语言开发一个摄像头驱动程序。项目的实施方式是团队分组合作,共同完成,让我们体验了一下公司开发项目的氛围。我们一人一机,老师边讲边练,还有企业项目的全程指导。虽说一些些技术我们在课堂上也曾学习过,但是大多停留在理论学习上,实际开发很少,而这次课程设计给了我们一个很好的边学习边实践的机会,对我们深入学习这些技术有很大帮助,深刻体会到了这些技术的实用性。每当自己成功调试一段代码或者通过自己的努力克服一个技术困难,都颇有收获感。这次实训让我们体验了软件开发的全过程,发现自己的不足,了解了当前流行技术的软件开发,增加了一定的项目开发经验,增强了一定的就业竞争力。简短的回顾一下这几天我们所学习的: 实训的前一天下午,我们先明确了一下下周课程设计的要求和目的,跟上海杰普公司的楚老师相互认识了一下。然后楚老师给我们详细的讲解了这一周我们要做什么,并演示了一个他自己开发的摄像头驱动程序。同学们看了,都很感兴趣,如果自己能开发出这样的一个小程序,着实让人高兴。接下来的这几天我们就跟着范老师一起学习摄像头驱动的开发,同时我们也分了小组,模拟体验一下公司的团队开发 ,同学们都积极策划自己团队的名字、团队的口号、队歌…… 我们首先从基本的命令学起,以及底下的C语言的一些基本知识。虽说这学期我们也学过开发技术,有一定的基础,但这几天的学习,还是感觉到我们学的太浅,很多的东西需要去深入的学习才能有所收获。而且深刻的体会到“熟能生巧”这句良训,光学不练还是白搭。后两天我们学习了底下一些开发工具的使用,如Qt,感觉这些工具功能确实够强大。当通过自己写的代码能够控制摄像头拍照时,别提有多高兴了。当然在调试的过程中也遇到不少错误,每当通过自己的努力把问题解决(一般自己思考一下,查查资料都没问题),也是一种很好的收获。还有一个比较深刻的体会就是API及一些文档的查阅,这对开发人员来说是一个必须具备的能力。 此次实训的收获不是我学习到了多少知识而是这几天实训给我的感悟:首先是心态。一定要有一个积极的心态,解决问题的意识,培养扎实基础的认识。不要什么东西都感觉跟简单(很多东西可能是看似简单)就不去做了或者不屑一做,以至于性网上搜搜就可以了,这样很不好。有自己的东西有自己的付出才会有程序运行成功时的喜悦和小自豪,这样也有助于培养自己的兴趣。要时刻牢记态度决定一切。其次是兴趣,感觉学习工作中兴趣很关键,只是一个引发人积极性的问题,有了兴趣就自觉了,效率自然就高了。再次要敢于尝试和挑战。不要安于现成的程序,而且不要害怕失败,在程序调试的过程中这点尤为重要,“发现出问题然后解决问题”是一个积累经验的过程,而且很高效。要不懈追求。对于源代码进行不断的完善,要尽可能的实现课题所要求的功能。对于初学者或者开发较少的人来说,大量大写程序还是有必要的,但同时要注意思考,理解其实现的内在意义。还可以自己添加一些有意义的功能来实现。当看到自己编写的程序正常运行时,兴趣也会随之而来,乐此不疲,形成一个良性循环。 校园课程设计与评价学习总结(二) 时光匆匆而过,一周转瞬即逝。在过去的这一周时间里面,原本以为会比较轻松的设计任务却让我觉得有点措手不及。虽然困难重重,但是在遇到的各种各样的问题中,我学会了耐心,学会了坚持,也学会了以前掌握得不太牢固的数电和模电知识。收获颇丰。 在这次电子课程设计中,我们小组的设计题目是汽车尾灯控制。在设计中我们使用了基本的芯片:双向移位寄 74LS194,二输入与非门74LS00、四输入与非门74LS20、六反相器74LS04、3-8译码器,555定时器及电阻电容进行搭建。设计的时候并不是特别顺利,芯片的选择和电路的接法对于我这样从来没有实际作过的学生还是有一定的难度的。经过我们大家集体的讨论过后,我们还是把最终的电路图拿出来了。这让我充分体会到团队的力量,团结才能让大家把事情干好。一个人的力量始终太渺小,集思广益才能让我们进步得更快,让我们学到更多的知识。 最让我头疼的是在实际作的过程中,我们经常会因为一个小的失误,比如线接错了,有些地方的线没有接上等等问题而让实验板上的灯无法亮起来。这些都是让我始料不及的。由于不细心的地方太多,当时甚至有过要放弃的念头。但是我坚持了下来,当最终看到成果的时候,我觉得这一切都是值得的。记得汪中求说过细节决定成败。以前感触不深,没有注意太多的细节,总是抱着不多就行了或者放纵自己的心态来面对生活学习中的许多问题。但是我现在明白了,这是不对的。对于科学我们就应该保持严谨的态度。课程设计中的许多细节都没有注意,老是求快,想早点完成设计和连接实验板的工作,但是这反而导致了很多次的失败。好在最终摆正了心态,细心检查之后,最终完成了连线。 我从这次的设计中还感受到坚持的重要性。做事情不能轻言谈放弃,虽然过程不顺利,与想象中相去甚远。但是只要我们能坚持,朝着自己既定的目标前进,就一定会走到终点。一点小小的挫折实际上是在为的美景做铺垫,当我们守得云开见月明的时候,就会发现,沿途的曲折其实是在考验我们的目标是否坚定。坚持下来,我们会收获丰硕的果实。 电子课程设计,不仅让我们的知识更加牢固,还让我意识到我们所学的知识可以与生活紧密的联系起来。这让我对自己有了更多的信心,因为我们在大学里面不是混日子,而是在学习真正对我们的生活有帮助的知识和能力。一个小小的课程设计,却让我有了大大的希望。我会更加珍惜现在这么好的学习环境,努力学习知识,让自己在激烈的竞争中立足,也把自己所学的知识运用到生活实际中来回报。 再次感谢老师和同学们对我的无私的帮助,希望老师们工作顺利、身体健康,同学们的学习生活更上一层楼。 校园课程设计与评价学习总结(三) 随着课程改革的进一步深入,教师的学习活动也在不断的加强。从书籍中了解更多的理论知识和实践经验,为我们搞好课改增添了活力。 本学期我阅读了《新课程教学评价方法与设计》一书。全书共分九个章节,从不同角度,不同侧面阐述与分析着怎样进行课程评价?怎样在教学评价中自我反思?怎样评价综合实践活动?新课程下教学评价方式有何创新? 从我踏上教师岗位开始,一些老教师在作经验交流时,都谈到了教学评价中自我反思的重要性。对此,本书中就教学评价中教师的自我评价中反思这一问题进行了阐述,摘录如下: 一、新课程教学评价中教师自我反思的形式。 1、 课后备课 即教师上完课之后,根据课堂上所获得的反馈信息进一步修改和完善教案,明确课堂教学改进的方向和措施,使教师从正反两个方面及时总结经验教训,有效地增强教学效果和提高教学水平。 2、 教学后记 即教师在课堂教学结束后,对教学过程的设计和实施,结合对课堂教学的观察,进行全面的回顾和小结,将经验和教训记录在教案的各个环节上,简捷、及时地将教学设计与教案实践上的成败之处记录、修正过来,对学生的学情掌握及对教学设计的处理有最实质性的帮助,长期坚持以记促思,对教师专业的发展必有好处。 3、 反思日记 教师可以在一课时或一天的工作后,写教师心得体会,把当时教学中所遇到的或看到的成功与不成功教学,以及造成的原因、中包含的理论、改进措施等写到教学日记中,并与同行或指导教师共同分析,这种方法更适合于新教师。反思日记通常表现为随笔形式,书写格式非常随意,因而,也是很能完整体现教学各层面内容反思的一种形式,有针对性也便于作。行了解和研究,逐步减少对教学工作认识上的偏,进行行动研究,不断反思,从而提高教学能力和教学水平。 5、 教学诊断 “课程反思是一门遗憾的艺术,”而科学、有效的教学诊断可以帮助我们减少遗憾。反思的过程实质上就是一个诊断的.过程。 6、 案例研究 即对教学中含有问题或者是对问题情境在内的真实发生的典型,通过研究,促进教师研究自己,分享别人的成长的经验,积累反思教材,从而调整行为,提高课上教学技能。 案例是教学问题解决的源泉。教师必须结合案例教学中涉及的大背景,多角度、全方位的解读、分析、并可以就其中涉及教学理论问题进行阐释。 7、 观摩分析 “他山之石,可以攻玉”。教师通过观摩其他教师上课,并与他们对话、交流,并进行自我反思相同与不同之处,问题及的处理,等等,得到启发,收到提高自身的效果。 二、 新课程教学评价中如何进行自我反思 1、 在自我评价中反思 自评是促进教师反思能力发展的途径,评价的目的不在于评优评劣,而在于由此形成改进的,促进教师自身的提高。我们主张教师要在以下五个方面进行自评: (1) 思所得、扬长处、展优势。 (2) 思所失、取教训、补不足。 (3) 思所疑、深研究、理透彻。 (4) 思所难、化为易、求突破。 (5) 思创新、敢取舍、求精辟。 2、 在他人评价中反思 俗话说当局者迷,旁观者清。若能从学生、其他教师、家长教研员等到各方面发现教师自我评价难以认识到的问题,对教师行为的改进和教学水平的提高会产生积极的影响。 因此我们相应要采取他人评价手段,重点是要同事和学生的评价,结对子,一帮一,集体备课听课,评课、学生座谈、问卷等,都是他们评价的具体作法,从而促使教师多方位深层次反思,避免孤芳自赏,实现“蒸蒸日上”的进步。 3、 在评价学生中反思 评价学生包括对学生学习过程观察、学习行为的分析、学习结果的反思,这些环节是教师对自己教学进行全面分析和判断的更有利环节,能更具体的帮助教师分析自己的优势和不足,明确自己的努力方向。因此,我们坚持让教师在教学中体现学生为主体的教育思想,转变观念的同时,必须转换角色意识,关注每一位学生,关注每一位学生的学习情况和效果,从而真正达到教学相长。 在读了这一节之后,对于教学评价中教师自我反思的形式还可以从教学前、教学中、教学后三个阶段进行反思。同时通过阅读思考反思比较自己的实践效果,从其中发现距。 教前反思,要求教师在备课前认真分析教材、学生及学生以前生活、学习状况,通过教学前深思准备出符合班情、生情的个性化教案,这种反思具有前瞻性,能使教学成为一种自觉的实践,并有效地提高教师的教学预测和分析能力。 教中反思,即及时、自动地在行动过程中反思,根据课堂上随时出现的问题即时反思,抓住契机,调整自已的教学策略这种反思具有性,能使教学高质高效地进行,并有助于提高教师的教学调控和应变能力。 教后反思,这种反思具有批判性,能使教学经验理论化,并有助于提高教师的教学总结能力和评价能力。 阅读反思,通过阅读教育教学专著不断的汲取先进的教育教学理念来促进自己的专业素养。 反思有利于教师在经验上量的积累、质的提高和准备性的增强。通过反思、通过研究,教师可以不断更新教学观念,改善教学行为,提升教学水平;同时形成自己对教学现象,教学问题的思考和创造性见解,使自己真正成为教学和教学研究的主人。 ;int t; 举手之劳,帮你弄了。 下面的是树的各种作的一个完整的c程序,在win-tc和Dev-c++下运行通过。 #include #include struct node { int value; struct node left; struct node right; }; typedef struct node NODE; typedef struct node PNODE; void new_node (PNODE n, int value) { n = (PNODE)malloc (sizeof(NODE)); if (n != NULL) { (n)->value = value; (n)->left = NULL; (n)->right = NULL; void free_node (PNODE n) { if ((n) != NULL) { free (n); n = NULL; void free_tree (PNODE n) { if (n == NULL) return; if ((n)->left != NULL) { free_tree (&((n)->left)); }if ((n)->right != NULL) { free_tree (&((n)->right)); }free_node (n); }/ 查找结点 / PNODE find_node (PNODE n, int value) { if (n == NULL) { return NULL; } else if (n->value == value) { return n; } else if (value <= n->value) {printf(" %d ",world[i][j]); return find_node (n->left, value); } else { return find_node (n->right, value); / 插入结点 / void insert_node (PNODE n, int value) { if (n == NULL) { new_node (n, value); } else if (value == (n)->value) { return; } else if (value < (n)->value) { insert_node (&((n)->left), value); } else { insert_node (&((n)->right), value); / 最长路径 / int get_max_depth (PNODE n) { if (n == NULL) { return 0; }if (n->left != NULL) { left = 1 + get_max_depth (n->left); }if (n->right != NULL) { right = 1 + get_max_depth (n->right); }return (left > right ? left : right ); }/ 最短路径 / int get_min_depth (PNODE n) { if (n == NULL) { return 0; }if (n->left != NULL) { left = 1 + get_min_depth (n->left); }if (n->right != NULL) { right = 1 + get_min_depth (n->right); }return (left < right ? left : right ); }int get_num_nodes (PNODE n) { if (n == NULL) { return 0; }if (n->left != NULL) { left = get_num_nodes (n->left); }if (n->right != NULL) { right = get_num_nodes (n->right); }return (left + 1 + right); }/ 最短路径长度 / int get_min_value (PNODE n) { if (n == NULL) return 0; if (n->left == NULL) { } else { return get_min_value(n->left); / 最长路径长度 / int get_max_value (PNODE n) { if (n == NULL) return 0; if (n->right == NULL) { } else { return get_max_value(n->right); / 删除结点 / void deletenode (PNODE n) { PNODE tmp = NULL; if (n == NULL) return; if ((n)->right == NULL) { tmp = n; n = (n)->left; free_node (n); } else if ((n)->left == NULL) { tmp = n; n = (n)->right; free_node (n); } else { for (tmp = (n)->right; tmp->left != NULL; tmp = tmp->left); tmp->left = (n)->left; tmp = (n); n = (n)->right; free_node (&tmp); void delete_node (PNODE n, int value) { PNODE node; if (n == NULL) return; node = find_node (n, value); if ((n)->value == value) { deletenode (n); } else if (value < (n)->value) { delete_node (&((n)->left), value); } else { delete_node(&((n)->right), value); void pre_order_trersal(PNODE n) {if (n != NULL) { printf ("%i ", n->value); pre_order_trersal (n->left); pre_order_trersal( n->right); void in_order_trersal (PNODE n) {if (n != NULL) { in_order_trersal (n->left); printf ("%i ", n->value); in_order_trersal ( n->right); void t_order_trersal (PNODE n) {if (n != NULL) { t_order_trersal (n->left); t_order_trersal (n->right); printf ("%i ", n->value); int main() { char buf[50]; int option; PNODE tree = NULL; PNODE node = NULL; while (1) { printf ("--------------------------\n"); printf ("Options are:\n\n"); printf (" 0 Exit\n"); printf (" 1 Insert node\n"); printf (" 2 Delete node\n"); printf (" 3 Find node\n"); printf (" 4 Pre order trersal\n"); printf (" 5 In order trersal\n"); printf (" 6 Post order trersal\n"); printf (" 7 Max depth\n"); printf (" 8 Min depth\n"); printf (" 9 Max value\n"); printf (" 10 Min value\n"); printf (" 11 Node Count\n\n"); printf ("--------------------------\n"); printf ("Select an option: "); fgets (buf, sizeof(buf), stdin); sscanf (buf, "%i", &option); printf ("--------------------------\n"); if (option < 0 || option > 11) { fprintf (stderr, "Invalid option"); continue; }switch (option) { case 0: exit (0); printf ("Enter number to insert: "); fgets (buf, sizeof(buf), stdin); sscanf (buf, "%i", &option); printf ("\n\n"); insert_node (&tree, option); break; case 2: printf ("Enter number to delete: "); fgets (buf, sizeof(buf), stdin); sscanf (buf, "%i", &option); printf ("\n\n"); delete_node (&tree, option); break; case 3: printf ("Enter number to find: "); fgets (buf, sizeof(buf), stdin); sscanf (buf, "%i", &option); printf ("\n\n"); node = find_node (tree, option); if (node != NULL) { printf ("Found node\n\n"); } else { printf ("Couldn't find node\n\n"); }break; case 4: printf ("Pre order trersal: "); pre_order_trersal (tree); printf ("\n\n"); break; case 5: printf ("In order trersal: "); in_order_trersal (tree); printf ("\n\n"); break; case 6: printf ("Post order trersal: "); t_order_trersal (tree); printf ("\n\n"); break; case 7: printf ("Max depth is %i\n\n", get_max_depth (tree)); break; case 8: printf ("Min depth is %i\n\n", get_min_depth (tree)); break; printf ("Max value is %i\n\n", get_max_value (tree)); break; case 10: printf ("Min value is %i\n\n", get_min_value (tree)); break; case 11: printf ("Node Count is %i\n\n", get_num_nodes (tree)); break; return 0; } 还不错 //简单学籍管理程序 #include #include #include //学生姓名、成绩都采用数组存放。学号为数组下标 //定义学生姓名长度为8以下,学生数不超过 char name[][8]; float score[20][]; ///////////////////////////////////////////////////////////////////// //程序入口,接收所有用户的指令 main() {int i,command; //程序采用指令式,设指令不超过255个字节 //姓名个字节为"&"刚表示该记录已删 for(i=1;i<=;i++) name[i][0]='&';//初始化所有记录 printf("简单学籍管理程序 Ver 1.0 CopyRight 雪原\n"); start:; {printf("\n请输入指令,?取得帮助:==>"); command=getch(); switch (command) {case 63:{printf("帮助\n");();}break;//?帮助 case 97:{printf("增加记录\n");add();}break;//a增加记录 case 100:{printf("删除记录\n");dele();}break;//d删除记录 case 102:{printf("查找记录\n");search();}break;//f查找记录 case 108:{printf("读盘\n");loadfile();}break;//l读盘 case 112:{printf("列出记录\n");list();}break;//p列出记录 case 27:{printf("退出\n");quit();}break;//q退出 case 115:{printf("存盘\n");sefile();}break;//s存盘 default:printf("错误的命令!\n\n");//报错 goto start; }//////////////////////////////////////////////////////////////////// int ()//帮助模块 {printf("/---------------程序使用说明-temp = a.done;--------------\\\n"); printf("|------------------------------------------|\n"); printf("|指令| 功能 | 说明 |\n"); printf("| ? | 取得帮助 |显示本帮助信息 |\n"); printf("| a | 添加记录 |向表中添加一条或多条记录 |\n"); printf("| d | 删除记录 |删除表中某条或某段记录 |\n"); printf("| f | 查找记录 |按学号或姓名查找表中的记录|\n"); printf("| p | 显示记录 |显示表中全部记录 |\n"); printf("| l | 读取文件 |读入磁盘文件 |\n"); printf("| s | 存为文件 |将当前工作保存为文件 |\n"); printf("|Esc | 退出程序 |退出本系统 |\n"); printf("\\------------------------------------------/\n"); return(0); } # include # include # include # include # define LEN sizeof(Node) # define MAXO 50 # define MAXT 300 int Pop=0; int Gop=0; int Dop=0; int Fop=0; //节点 typedef struct TreeNode {int flag; char Name[MAXO]; struct TreeNode Lchild; struct TreeNode Rchild;} Node; //二叉树节点队列 typedef struct queue{ Node data[MAXT]; int front; int rear; }queue; //创建二叉树 Node Creat() {Node root; Node CurrentNode; CurrentNode=(Node )malloc(LEN); scanf("%s",&CurrentNode->Name); if(strcmp(CurrentNode->Name,"#")==0) {return NULL;} else {root=CurrentNode; root->Lchild=Creat(); root->Rchild=Creat(); return root; //查找该节点的孩子 void Print(Node root,char a[]) { Dop++; if(root!=NULL) {if(strcmp(root->Name,a)==0) {if(root->Lchild==NULL&&root->Rchild==NULL) {printf("%s的孩子:\n",root->Name); printf("# "); printf("#\n");} else if(root->Rchild==NULL) {printf("%s的孩子:\n",root->Name); printf("%s ",root->Lchild->Name); printf("#\n"); } else if(root->Lchild==NULL) {printf("%s的孩子:\n",root->Name); printf("# "); printf("%s\n",root->Rchild->Name);} else {printf("%s的孩子:\n",root->Name); printf("%s ",root->Lchild->Name); printf("%s\n",root->Rchild->Name); }Pop++; }else {Print(root->Lchild,a);//递归调用 Print(root->Rchild,a); Dop--; }//家谱的层次输出 void Ll(Node root,int num) {int comp=2; int i=1; queue q;//队列 q.data[0]=NULL; q.data[1]=root; q.front=1;q.rear=2; printf("家谱的层次结构:\n"); while(i<=num) {if(q.data[q.front]) {printf("%s ",q.data[q.front]->Name);//数据出队 if((q.front+1)==pow(2,(i))) {printf("\n"); i++;} q.data[q.rear++]=q.data[q.front]->Lchild;//数据入队 q.data[q.rear++]=q.data[q.front]->Rchild; comp=comp+2; q.front++; Fop=Fop+1; }else {printf("# "); if((q.front+1)==pow(2,(i))) {printf("\n"); i++;} q.data[q.rear++]=NULL; q.data[q.rear++]=NULL; comp+=2; q.front++; printf("\n"); void SearchP(Node root,char a[]) {int i=0; if(root!=NULL) {if(!(root->Lchild==NULL&&root->Rchild==NULL)) {if(root->Lchild!=NULL){ if(strcmp(root->Lchild->Name,a)==0) Gop++; i++; if(root->Rchild!=NULL){ if(strcmp(root->Rchild->Name,a)==0) Gop++; i++; if(i==0) {SearchP(root->Lchild,a); SearchP(root->Rchild,a); //家族代数的确定 int Height(Node root) {int u,v; if(root==NULL) return 0; u=Height(root->Lchild); //递归调用 v=Height(root->Rchild); if(u>v) return (u+1) ; return (v+1) ; }//主函数 int main() {Node P; int i,k; char Cod; char a[MAXO]; P=(Node )malloc(LEN); printf("输入成员名字(先序输入,输入‘#’表示无孩子)\n"); P=Creat(); k=Height(P); printf("共有%d代\n",k); Ll(P,k); printf("共有%d个人\n",Fop); printf("输入要查找的名字:\n"); scanf("%s",a); //if(strcmp(P->Name,aint right = 0;)==0) //printf("无父节点\n"); //else if(Gop==0) printf("父节点No fined\n"); Print(P,a); if(Pop==0) printf("孩子 No Fined\n"); if(Dop<=k) printf("是第%d代\n",Dop); printf("输入任意字符结束:\n"); scanf("%d",&i); }二叉树创建家谱 1. 问题描述: <1>.用二叉树表示家谱; <2>.能输入家谱; <3>.以层次结构输出家谱; <4>.查找任一节点的双亲和孩子; 2. 设计: 程序将包含以下模块: <1>.以递归方式创建家谱(二叉树链表存储); <2>.以递归方式遍历二叉树实现节点双亲的查找; <3>.以队列的方式实现家谱的层次输出; <4>.以递归方式遍历二叉树实现节点孩子的查找; <5>.代数确定模块; <6>.住程序模块; 3. 调试分析: 用递归遍历建立家谱时须有结束条件,即输入‘#’号,如果不加条件程序将无休止循环;应用字符串处理函数时须加stdio.h头文件;节点数组要足够大,不然会产生溢出错误;节点的查找采用递归遍历形式,在判断是否找到时应用了两个全局变量Pop、Gop不便于程序的结构化;家谱的层次输出采用队列形式,需人为的输入家谱代数num,在每层输出的个数上采用一个math.h中的函数pow,其值为double类型,须注意; 4. 用户使用说明: 首先以先序遍历输入数据,#代表此处无节点,再输入需查找的名字.(注意:所有名字均不得加空格可以下划线代替) 这是我以前的作业,挺简单的,适合你,呵呵 //修改完毕 #include #include #include #include const int W = 3;//横 const int H = 3;//竖 int world[W][H];//棋盘0为没放的,1是人类放的棋子,2是计算机放的棋子 int hard; class player {public: }a,b;//姑且让a为人类,b为计算机 void Change()//走完一步后,人与计算机的先后循序颠倒一下 {int temp; a.done = b.done; }void New()//初始化界面 {int i,j; srand((unsigned) time(NULL));//产生随机数用 for(i=0;i for(j=0;j world[i][j] = 0;//初始化棋盘 a.done = rand()%2 + 1; //这里是初始化让谁先走,1先走,2后走 b.done = a.done % 2 +1;//这里是初始化让谁先走,1先走,2后走 }void Print()//打印界面 {int i,j; ("cls"); printf("请按小键盘1~9键\n"); if(a.done == 1) printf("now it's human's turn\n"); else printf("now it's comr's turn\n"); for(i=0;i {for(j=0;j putchar('\n'); int AI_easy()//计算机走棋,这个是简单版的,有点傻 {int i,j; srand((unsigned) time(NULL));//产生随机数用 i = rand()%W; j = rand()%H; if(world[W/2][H/2]==0) {world[W/2][H/2] = 2; Change(); Print(); return 0; }while(1) {world[i][j] = 2; Change(); Print(); return 0; }else i = rand()%W; j = rand()%H; int Win(int step)//判断获胜 {int i,j,win;int n=0; win = step; for(i=0;i if(world[i][0]==win&&world[i][1]==win&&world[i][2] == win) return win; for(i=0;i if(world[0][i]==win&&world[1][i]==win&&world[2][i] == win) return win; if(world[0][0]==win&&world[1][1]==win&&world[2][2]==win) return win; if(world[0][2]==win&&world[1][1]==win&&world[2][0]==win) return win; for(i=0;i for(j=0;j if(world[i][j]==0)n++; if(n==0) {printf("Draw!\n");exit(0);}//平局……因为……没地方放棋子了 return 0; }int Human()//人走 {char in; in = getch(); while (in < '1' || in > '9') {in = getch(); }if(in == '7') {if(world[0][0] != 0) Human(); else {world[0][0] = 1; Change(); Print(); return 0; if(in == '8') {if(world[0][1] != 0) Human(); else {world[0][1] = 1; Change(); Print(); return 0; if(in == '9') {if(world[0][2] != 0) Human(); else {world[0][2] = 1; Change(); Print(); return 0; if(in == '4') Human(); else {world[1][0] = 1; Change(); Print(); return 0; if(in == '5') {if(world[1][1] != 0) Human(); else {world[1][1] = 1; Change(); Print(); return 0; if(in == '6') {if(world[1][2] != 0) Human(); else {world[1][2] = 1; Change(); Print(); return 0; if(in == '1') {if(world[2][0] != 0) Human(); else {world[2][0] = 1; Change(); Print(); return 0; if(in == '2') {if(world[2][1] != 0) Human(); else {world[2][1] = 1; Change(); Print(); return 0; if(in == '3') {if(world[2][2] != 0) Human(); else {world[2][2] = 1; Change(); Print(); return 0; return 0; }void Start()//游戏开始 {while(1) {Print(); if(a.done == 1) {Human(); if(Win(1)) {printf("Winner is human!\n");exit(0);} }else {AI_easy(); if(Win(2)){printf("Winner is comr!\n");exit(0);}; }int main() {New(); Start(); return 0 ; }附流程说明: 用数组定义棋盘world[H][W]=0;1为人落得子;2为计算机落得子 初始化() 哪方先行(定义一个变量done记录是否已经行动过了) 1:计算机->AI()->判断是否获胜()->人()->判断是否获胜()->循环 2:人()->判断是否获胜()->计算机AI()->判断是否获胜()->循环 获胜函数() AI 放中间 先判断能否直接获胜 放边角 给你一个简单的吧 #include #include #include int main(int argc, char argv[]) {int u; int }}count=0; int n; srand((unsigned)time(NULL)); u=1+rand()%10; printf("系统产生了一个1~10之间的整数,猜猜它是几?\n"); printf("请输入一个1~10之间的整数:"); for(int i=0;i<10;i++) {scanf("%d",&n); if(n>u) printf("输入你输入的数大了,再猜:"); count++; if(n printf("输入你输入的数小了,再猜:"); count++; if(n==u) {if(count<=4) {printf("恭喜你,猜对了!你真牛"); break; }if(count>4&&count<=6) {printf("猜对了!只是次数有点多哈哈"); break; }if(count>6) {printf("笨笨,这么多次才猜对"); break; }return 0; } 程序如下: / 课题:猜数游戏 功能要求:计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,继续猜,直至猜到,给出所用时间和评语。 / #include #include #include void main() {int u,n; int count=0; clock_t start,finish; double elapsed_time; srand((unsigned)time(NULL)); u=1+rand()%10; printf("系统产生了一个1~10之间的整数,猜猜它是几?\n\n"); start=clock(); printf("请输入一个1~10之间的整数:"); scanf("%d",&n); while(n!=u) {if(n>u) {printf("输入你输入的数大了,再猜:"); count++; }else if(n {printf("输入你输入的数小了,再猜:"); count++; }scanf("%d",&n); }finish=clock(); elapsed_time=finish-start; if(count<=4)printf("恭喜你,猜对了!你真棒!!\n用时%.2f毫秒.\n",elapsed_time); else if(count>4&&count<=6)printf("猜对了!只是次数有点多哈哈.\n用时%.2f毫秒\n",elapsed_time); else printf("笨笨,猜这么多次才对!!\n用时%.2f毫秒\n",elapsed_time); }运行结果: 系统产生了一个1~10之间的整数,猜猜它是几? 请输入一个1~10之间的整数:8 输入你输入的数大了,再猜:7 输入你输入的数大了,再猜:6 输入你输入的数大了,再猜:5 输入你输入的数大了,再猜:4 输入你输入的数大了,再猜:3 猜对了!只是次数有点多哈哈. 用时9734.00毫秒 Press any key to continue C语言程序设计报告 课题名称:学生成绩管理 1 系统概述: 本程序为一个学生成绩管理系统,对学生的成绩进行管理,学生的信息包括学号,姓名,学期,三门课程的成绩,输入这些信息,本程序可以自动计算总成绩,可以按高分到低分进行排名,并对输入信息的人数进行汇总. 2 数据结构设计: (1)结构体; (2)数组的设计:运用指针代替数组,使用指针来建立线性表,使程序更加简洁,可读性更强. 3 各函数的设计: 函数原型:void InitList(SqLinkList &L); 功能: 创建一个空的线性链表; 入口参数:L为要创建的线性链表; 出口参数:创建链表的L.head为空,L.length为0; 返回值: 无; 函数原型:void EmptyLinkList(SqLinkList &L); 功能: 清空整个线性链表; 入口参数:L为要清空的链表名称; 出口参数:若清空成功则链表长度L.length为0; 返回值: 无; 函数原型:int ScanE(ElemType &e); 功能: 输入学生信息; 入口参数:e为要输入信息的学生名称; 出口参数:e.num保存学号,e.name保存姓名,e.team保存所在学期,e.s1,e.s2,e.s3分别保存三门课程的成绩; 返回值: 输入合法返回1,否则返回0; 错误处理:若学号、姓名等输入不合有提示及重输; 函数原型:Status SqLinkListAppend(SqLinkList &L,ElemType e); 功能: 追加一个结点到线性链表中; 入口参数:e为所追加的结点名称,L为e所追加到的线性链表的名称; 出口参数:若追加成功,则e为头结点,链表长度L.length增1; 返回值: 若追加成功返回1; 函数原型:Link SearchNode(SqLinkList L,int NUM); 功能: 查找学号为NUM的学生; 入口参数:查找的链表名称L,学号NUM; 出口参数:若找到结点指针p指向该结点,否则指向空结点; 返回值: 结点指针p; 函数原型:void SearchTeam(SqLinkList L,int team); 功能: 查找学期为team的所有记录并输出其信息; 入口参数:查找的链表名称L,要查找的学期team; 出口参数:无; 返回值: 无; 函数原型:void SearchUnpass(SqLinkList L,float s1,float s2,float s3); 功能: 查找所有有挂科记录的学生并输出其信息; 入口参数:查找的链表名称L,要查找的各门学科成绩s1,s2,s3; 出口参数:无; 返回值: 无; 功能: 对链表进行分类查找; 入口参数:要查找的链表名称L; 出口参数:无; 返回值: 无; 函数原型: void inputData(SqLinkList &L); 功能: 输入数据,并追加一个结点; 入口参数: L为要追加结点的链表名称; 出口参数: 无; 返回值: 无; 函数原型:void SqLinkListTrerse(SqLinkList L); 功能: 输出链表中所有学生成绩列表; 出口参数:无; 返回值: 无; 函数原型:void PrintE(ElemType e); 功能: 输出一个结点的所有信息; 入口参数:要输出的结点名称e; 出口参数:无; 返回值: 无; 4 使用程序的说明: 本程序为一个学生成绩管理系统。对学生的成绩信息进行管理,学生的信息包括学号、姓名、学期、三门课程的成绩、平均成绩、名次。本管理系统实现学生的学号、姓名、学期、每门课程的成绩的录入,并自动按平均分排名,使用时按屏幕上的提示,输入使用代码.如下图所示: 例如:输入代码数字”1”,程序执行”输入学生成绩或已存在的学生成绩进行修改”这条小程序.输入学生个人信息后,如下图所示: 如此分别输入相应的程序代码,就执行相应的程序段. 如下的程序是按学号进行成绩排名: 当输入”6”时,执行相应的程序,即汇总一共输入学生的人数: 5 总结和体会: 通过对C语言学习,尤其是这学期本班开展C语言双语教学,体会到学习难的同时,也真正了解到C语言作为一门高级的计算机语言的强大功能,特别是在当今实际生活,生产,办公,信息管理等方面的强大作用. 这次合作我们遇到了许多的困难。时间的紧迫,知识的不足,给我很大的压力。最终我还是还是完成了任务。团结就是力量是我这次最真切的感受。 6 程序代码: void InitList(SqLinkList &L) { // 构造一个空的线性表L; L.head = 0; //头指针为空; L.length = 0; //长度初始为0; }void EmptyLinkList(SqLinkList &L){ //入口参数为整个线性表的数据,功能为清空线性表; Node p; if(!L.head)printf("系统中不存在记录。\n"); else { while (L.head){ //每个循环将下一结点赋值给头指针,并释放本结点空间,直至线性表清空; L.head=p->next; free(p); } //end while; L.length=0; //长度为0; printf("该管理系统学生信息已清空。\n"Pointer p;); }//end else; }int ScanE(ElemType &e){ //输入一个学生的成绩数据结点。返回0为无效结点数据,1为有效结点数据; printf("\n学号:"); scanf("%d",&e.num);输入学员性别:"); if(e.num==0){ //学号为0输入不合法,重新输入; printf("学号输入不合法.\n"); return 0; }printf("\n姓名:"); scanf("%s",&e.name); printf("\n学期:"); scanf("%d",&e.team); while(e.team>12){ //系统只记录小于12的学期数; printf("输入的学期不能大于12,请重新输入:"); scanf("%d",&e.team); }printf("\n成绩A:"); scanf("%f",&e.s1); printf("\n成绩B:"); scanf("%f",&e.s2); scanf("%f",&e.s3); return OK; }Status SqLinkListAppend(SqLinkList &L,ElemType e){ //追加一个结点到线性表中; Node p; p=SearchNode(L,e.num); //查找学号为e.num的记录并将其地址赋给指针p; if (p==0){ //若不存在添加学号相同的结点,追加一个结点; p=(Node )malloc(sizeof(Node)); if (!p) return ERROR; memcpy(&(p->data),&e,sizeof(ElemType)); p->next=L.head ; L.head=p; L.length++; //表长度加1; }else { //如果该学号记录已存在,则进行修改作; memcpy(&(p->data),&e,sizeof(ElemType)); printf("该学生记录已经存在,已完成修改作。\n"); }return OK; }Link SearchNode(SqLinkList L,int NUM){ //查找学生记录,该学生的学号为NUM; Node p; p=L.head; //p先指在头结点; while (p&& p->data.num !=NUM ) p=p->next; //如果该学生的学号不为NUM则查找下一个结点; return p; }void SearchTeam(SqLinkList L,int team){ //按学期查找并输出所有该学期存在的记录; Node p; //sum记录该学期的学生总人数; printf("请输入您要查询的学生的学期:"); scanf("%d",&n); printf("\n学号 姓名 学期 成绩A 成绩B 成绩C 平均成绩\n"); while(p&&p->next){ //如果p结点和它的下一结点不为空,且该结点的学期等于要查找学期,则格式输出所有该学期学生信息; if(p->data.team==n){ PrintE(p->data提取码: 1111); sum++; //查找到一个该学期的学生记录计数加1; }p=p->next; //转向下一结点; } //end while; if(p->data.team==n){ //如果p的下一结点为空,且本结点学期为n,则格式输出该结点信息; sum++; PrintE(p->data); }if(sum==0)printf("没有这学期的记录。\n"); if(sum)printf("该学期共有%d人的记录.\n",sum); }void SearchUnpass(SqLinkList L,float s1,float s2,float s3){ //查找并输出有挂科的学生信息; Node p; int sum=0; //sum计数挂科总人数,初始为0; printf("以下是有一门以上不及格科目的学生的成绩:\n"); printf("\n学号 姓名 学期 成绩A 成绩B 成绩C 平均成绩\n"); while(p&&p->next){ //如果p及其下一结点为真,且该结点有一门以上科目分数低于60则输出该结点成绩并使sum计数加1; if((p->data.s1<60)||(p->data.s2<60)||(p->data.s3<60)) {PrintE(p->data); sum++; } //end if; p=p->next; //转到下一结点; } //end while; if((p->data.s1<60)||(p->data.s2<60)||(p->data.s3<60)){ //查看一个结点,若有挂科,sum加1并格式输出结点信息; sum++; PrintE(p->data); }if(sum==0)printf("没有不及格的记录。\n"); if(sum)printf("共有%d人的挂科记录.\n",sum); }void SqLinkListSearch(SqLinkList L){ //分类查找学生记录; Node p; int n,reg; //reg为查询方式的指令; printf("1--按学号查询\n2--按学期查询\n3--挂科学生信息列表\n"); printf("请您输入查询方式:"); scanf("%d",®); if(L.length){ if(reg>3)printf("对不起没有您要求的选项。\n"); //若reg>3则输入不合法; else if(reg==1){ printf("请输入您要查询的学生的学号:"); scanf("%d",&n); while(p&&p->next&& p->data.num !=n) p=p->next; //当p和他下一结点为真时且结点数据不为要查找数据时转向下一结点; if(p->data.num==n){ //找到所要查询结点,格式输出; printf("\n学号 姓名 学期 成绩A 成绩B 成绩C 平均成绩\n"); PrintE(p->data); }else printf("没有您要查找的学号。\n"); } //end reg==1 if ; else if(reg==2)SearchTeam(L,p->data.team); //reg==2,调用SearchTeam函数按学期查询并输出; //reg==3,调用SearchUnpass函数,输出全部有挂科记录的学生信息; }//end if; else printf("系统中无记录.\n"); }void inputData(SqLinkList &L){ //请求输入学生成绩,则追加一个结点并输入; ElemType e; if (ScanE(e)) SqLinkListAppend(L,e); //输入数据,追加一个结点; }void SqLinkListTrerse(SqLinkList L){ //所有学生信息列表输出; Node p; char c; if(p) //非空表; {printf("\n学号 姓名 学期 成绩A 成绩B 成绩C 平均成绩\n"); for (p=L.head ;p;p=p->next )PrintE(p->data); //从个结点开始输出所有信息直到结点为空; }else printf("系统中无记录。\n"); //空表; c=getchar(); }void PrintE(ElemType e){ //输出各科成绩和平均成绩; printf("%d\t%s\t%d\t%f\t%f\t%f\t%f\n",e.num,e.name,e.team,e.s1,e.s2,e.s3,(e.s1+e.s2+e.s3)/3); //格式输出学生的学号、姓名、学期、A、B、C三门成绩以及平均成绩; } 之前写过的,你可以拿去参考 #include #include #include typedef struct guest {int number; char name[10]; int sum; char time[5]; struct guest next; }GuestLink,Pointer; GuestLink stu[10]; int i,j,k; void Insert(Pointer Head); void Search(Pointer Head); void Update(Pointer Head); void Delete(Pointer Head); void Show(Pointer Head); void Sort(Pointer Head); void Se(Pointer Head); void Put(Pointer Head); int main() {Pointer Head=NULL; int i; do{ printf(" "); printf("1---增加订餐客户信息 "); printf("2---查询订餐客户信息 "); printf("3---修改订餐客户信息 "); printf("4---删除订餐客户信息 "); printf("5---浏览客户订餐信息 "); printf("6---按照用餐时间升序排序 "); printf("7---保存订餐信息到数据文件 "); printf("8---查看数据文件中的订餐信息 "); printf("9---退出 "); printf(" "); printf("请选择1--9:"); scanf("%d",&i); switch(i) {case 1:Insert(&Head); break; case 2:Search(Head); break; case 3:Update(Head); break; case 4:Delete(&Head); break; case 5:Show(Head); break; case 6:Sort(Head); break; case 7:Se(Head); break; case 8:Put(Head); break; break; break; }}while(i!=9); return 0; }void Insert(Pointer Head) {int in_number; Pointer p,q,r; printf("请输入编号: "); scanf("%d",&in_number); p=q=Head; while(p!=NULL) {if(p->number==in_number) {printf("已经有相同编号:"); return; }else {q=p;p=p->next; r=(Pointer)malloc(sizeof(GuestLink));//没有号 r->next=NULL; if(r==NULL) {printf("分配空间失败"); return; }if(q==NULL)//如果是空表,判断空表用q!!!! Head=r; else {q->next=r;} r->number=in_number; printf("请输入姓名: "); scanf("%s",r->name); printf("请输入人数: "); printf("请输入时间: "); scanf("%s",r->time); }/ void Insert(Pointer Head) {int in_number; Pointer p,q,r; p=q=Head; printf("请输入号码:"); scanf("%d",&in_number); while(p!=NULL) {if(in_number==p->number) {printf("已存在号码!");} else {q=p;p=p->next;} }r=(Pointer)malloc(sizeof GuestLink); r->next=NULL; if(q==NULL) Head=r; else q->next=r; printf("请输入姓名:"); scanf("%s",r->name); printf("请输入人数"); scanf("%f",&r->sum); printf("请输入时间"); scanf("%s",r->time); }/ void Search(Pointer Head) {int flag=1; int number; printf("请输入要查询的编号:"); scanf("%d",&number); p=Hedefault:printf("选择错误!请重新选择!");ad; while(p!=NULL&&flag) {if(p->number==number) { printf("编号\t姓名\t人数\t时间 "); printf("%s\t",p->name); printf("%d\t",p->sum); printf("%s\t ",p->time); flag=0; }else p=p->next; }if(flag) printf("没有查询到!"); }/ void Search(Pointer Head) {int flag=0; int number; p=Head; scanf("%f",&number); while(p!=NULL&&flag) {if(p->number==number) {printf("已查询到您要的编号"); flag=0; }else {p=p->next; if(flag==1) {printf("姓名:%s",p->name); printf("编号:%f",p->number); printf("人数:%f",p->sum); printf("时间:%s",p->time); }else {printf("没有查询到您要查询的编号!");} }/ void Update(Pointer Head) {int flag=1; int number; printf("请输入要修改的编号:"); scanf("%d",&number); p=Head; while(p!=NULL&&flag) {if(p->number==number) {printf("请输入人数:"); scanf("%d",&p->sum); printf("请输入用餐时间:"); scanf("%s",p->time); flag=0; }else p=p->next; }if(flag) printf("没有找到要修改的记录!"); }//update与查询过程相似!!! void Delete(Pointer Head) {int flag=1; int number; Pointer p,q; printf("请输入要删除的数据编号:"); scanf("%d",&number); p=q=Head; while(p!=NULL&&flag) {if(p->number==number) {if(p==Head) {Head=p->next;free(p);//删除结点后要及时释放内存!!! }else {q->next=p->next;free(p);} flag=0; }else {q=p;p=p->next;} }if(flag) printf("没有找到可以删除的数据!!"); }/ void Delete(Pointer Head) {Pointer p,q; p=q=Head; int number; int flag=1; printf("请输入您要删除的结点:"); scanf("%d",&number); while(p!=NULL) {if(p->number==number) { if(p==Head) {Head=p->next;free(p); }else {q->next=p->next;free(p); }flag=0; }else {q=p;p=p->next; if(flag) {printf("没有找到要删除的数据!");} }/ void Show(Pointer Head) {Pointer p; p=Head; printf("编号\t姓名\t人数\t用餐时间 "); while(p!=NULL) {printf("%d\t",p->number); printf("%s\t",p->name); printf("%d\t",p->sum); printf("%s\t ",p->time); p=p->next; void Sort(Pointer Head) {//三个for循环,个赋给结构数组 第二个排序,第三个输出 p=Head; int count=0; GuestLink temp; for(i=0;p!=NULL;i++) {strcpy(stu[i].name,p->name); stu[i].number=p->number; stu[i].sum=p->sum; strcpy(stu[i].time,p->time); count++; p=p->next; }for(i=0;i {k=i; for(j=i+1;j if(strcmp(stu[j].time,stu[k].time)<0)k=j; if(k!=i) {temp=stu[i];stu[i]=stu[k];stu[k]=temp;}//一个字都不能改!!!! //{temp=stu[k];stu[k]=stu[i];stu[i]=temp;} }printf("编号\t姓名\t人数\t用餐时间 "); for(i=0;i {printf("%d\t",stu[i].number); printf("%s\t",stu[i].name); printf("%d\t",stu[i].sum); printf("%s\t ",stu[i].time); /Head=p=stu; while(p!=NULL) {printf("姓名:%-10s",p->name); printf("人数:%-10d",p->sum); printf("用餐时间:%-10s",p->time); printf("编号:%-10d ",p->number); p=p->next; }/ / void Sort(Pointer Head) {Pointer p; p=Head; GuestLink temp; count=0; while(p!=NULL) {p=p->next; count++; }p=Head; while(p!=NULL) {for(i=0;i {stu[i].number=p->number; strcpy(stu[i].name,p->name); stu[i].sum=p->sum; strcpy(stu[i].time,p->time); }p=p->next; }for(i=0;i {k=i; for(j=0int done;//判断这步谁走……;j {if(strcmp(stu[j].time,stu[k].time)<0)k=j; if(k!=i) {temp=stu[k];stu[k]=stu[i];temp=stu[i];} }/ void Se(Pointer Head) {Pointer p; FILE fp; p=Head; for(i=0;p!=NULL;i++) {strcpy(p->name,stu[i].name); p->number=stu[i].number; p->sum=stu[i].sum; strcpy(p->time,stu[i].time); p=p->next; }if((fp=fopen("stud","w"))==NULL) {printf("can't open !");} p=Head; while(p!=NULL) {if(fwrite(p,sizeof(GuestLink),1,fp)!=1) printf("can't write! "); p=p->next; }fclose(fp); }/ void Se(Pointer Head) {FILE fp; p=Head; for(i=0;p!=NULL;i++) {stu[i].number=p->number; strcpy(stu[i].name,p->name); stu[i].sum=p->sum; strcpy(stu[i].time,p->time); p=p->next; }p=Head; if((fp=fopen("stud","w"))==NULL) {printf("cam't open the file"); }for(i=0;i if(fwrite(p,sizeof(GuestLink),1,fp)!=1) {printf("cant write"); }fclose(fp); }/ void Put(Pointer Head) {FILE fp; p=Head; if((fp=fopen("stud","r"))==NULL) {printf("can't open the File ");} printf("编号\t姓名\t人数\t用餐时间 "); while(p!=NULL) {if(fread(p,sizeof(GuestLink),1,fp)!=1) {printf("can't read!");} printf("%d\t",p->number); printf("%s\t",p->name); printf("%d\t",p->sum); printf("%s\t ",p->time); p=p->next; }fclose(fp); }采纳哦~ 3、班级通p++;讯录管理系统设计与实现 以本班同学的具体数据为背景,设计一个本班同学实现以下功能: 1)通讯录编辑(添加、删除) ; 2)按不同的项进行查找; 3)对已存在的通讯录按不同的项排序; 4)将通讯录写入文件; 5)从文件读入通讯录。 备注:通讯录至少应该有以下数据项:姓名,地址,电话,邮编,E-mail。 链接: 6、成绩记录簿设计与实现 实现以下功能: 1)创建信息并以磁盘文件保存; 2)读取磁盘文件并显示输出所有学生的成绩; 3)按学号或姓名查询成绩; 4)添加成绩记录; 5)修改指定姓名或学号的学生的成绩并可存盘; 6)显示输出60分以下、60 79、80 89、90分以上各分数段的学生信息。 备注:每个学生信息包括:学号、姓名、C语言成绩。 链接: 7、学生籍贯信息记录簿设计与实现 实现以下功能: 1)创建信息并以磁盘文件保存; 2)读取磁盘文件并显示输出所有学生的籍贯信息; 3)按学号或姓名查询其籍贯; 4)按籍贯查询并输出该籍贯的所有学生; 5)能添加、删除和修改学生的籍贯信息; 6)显示输出四川籍和非四川籍学生的信息并可分别存盘。 备注:每个学生信息包括:学号、姓名、籍贯 链接: 9、图书信息管理系统设计与实现 实现以下功能: 1)系统以菜单方式工作; 2)图书信息录入功能(图书信息用文件保存); 3)图书信息浏览功能; 4)查询和排序功能; 备注:图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。 链接: 10、学生信息管理系统设计与实现 实现以下功能: 1)系统以菜单方式工作; 2)学生信息录入功能(学生信息用文件保存) ; 3)学生信息浏览功能; 4)查询、排序功能(至少两种查询依据和两种排序依据); 5)学生信息删除、修改功能。 备注:学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E- mail等。 链接: 12、职工工作量统计系统设计与实现 完成以下功能: 1)输入职工工号和完成的产品数量,程序允许同- -职工有多次输入,由程序对 其完成的产品数量实现累计; 2)按完成数量对职工排序,并确定名次; 3)按完成的产品数量由多到少的顺序,输出名次、同一名次的职工人数及他们 的工号(工号由小到大顺序输出)。 链接: 要是用代码告诉你的话,可能我也case 1:写不出来,毕竟东西太多,但是知识的难度不大,看看数据结构基本上都能解决的。 跟你说说主要的知识点,首先是结构体的使用,也就是每个人的属性(姓名、手机、电子邮箱、类别),其次,是链表的增删改查的功能(自己选一种链表类型来满足目前的功能),是C语言对2进制文件的读写作; 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 12345678@qq.com 举报,一经查实,本站将立刻删除。校园课程设计与评价学习总结
int n,sum=0;C语言数据结构课程设计
{printf("%s的双亲是:\n%s\n",a,root->Name);c语言课程设计
//reg==1按学号查询;C语言课程设计
{if(world[i][j] == 0)C语言课程设计
{printf("学生成绩记录薄 c语言 课程设计报告
c语言课程设计?
{if(world[1][0] != 0)C语言课程设计
入口参数:L为要输出信息的链表名称;c语言课程设计
SearchP(P,a);