《C语言实习报告_计算机-.NET.pdf》由会员分享,可在线阅读,更多相关《C语言实习报告_计算机-.NET.pdf(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、题目一 线性结构的操作 1.用线性表的顺序存储(数组)保存数据 算法的 N-S图或流程图 输入要待查找的学号 输入的与学生里面的学 号是否相等 输出该信息 输出没有此人 N Y 输入待删除的学号 输入的与学生里面的学号是否相等 N Y 没有该学生 删除该学生学号 欢迎下载 2 2.用线性表的链式存储(链表)保存数据 插入:删除:r include#include typedef struct int num;/学号 char name10;/姓名 student;/定义的抽象元素类型 Elemtype typedef struct Node /*结点类型定义*/A1 H C1 s C1 H C
2、i-1 C2 C1 S C1 H s Ai-1-An Ai L p Ai AI-1 A1 Ai+1 An L P 输出该信息输出没有此人算法的图或流程图输入待删除的学号输入的与学生里面的学号是否相等删除该学生学号没有该学生用线性表的链式存储链表保存数据插入删除学号姓名定义的抽象元素类型结点类型定义欢迎下载为结构指针生信息结点申请一个空间输入学号输入结点的数据学号输入姓名输入结点的数据域姓名为数组类型数组名为首地址所有此处不需要地址符号链表中没有元素只有头节点把插入到之后欢迎下载链表中已有结点元素结点采用尾插入法每存在结点学号姓名结点的数据域学号和姓名输出该下一个元素把链表中的文件信息放入文件中
3、写入语句不能打开文件欢迎下载写入成功功能菜单提示性语句退出输入输出写入头结点申请空间头结点的为空输入一个整数欢迎下载题目 欢迎下载 3 student data;struct Node*next;Node,*LinkList;/*LinkList为结构指针类型*/static int count;/学生人数 /带头结点的尾插入法创建链表 void insert(LinkList head)LinkList p,q;/p 代表的待插元素代入最后一个元素 q=head;/q 指向head结点 printf(输入学生人数:);scanf(%d,&count);for(int i=0;idata.nu
4、m);/输入结点p的数据学号 printf(n 输入姓名:);scanf(%s,p-data.name);/输入结点的数据域姓名 name为数组类型 数组名为首地址 所有此处不需要地 址符号 if(i=0)head-next=p;/i=0 链表中没有元素只有头节点把插入到head之后 输出该信息输出没有此人算法的图或流程图输入待删除的学号输入的与学生里面的学号是否相等删除该学生学号没有该学生用线性表的链式存储链表保存数据插入删除学号姓名定义的抽象元素类型结点类型定义欢迎下载为结构指针生信息结点申请一个空间输入学号输入结点的数据学号输入姓名输入结点的数据域姓名为数组类型数组名为首地址所有此处不需
5、要地址符号链表中没有元素只有头节点把插入到之后欢迎下载链表中已有结点元素结点采用尾插入法每存在结点学号姓名结点的数据域学号和姓名输出该下一个元素把链表中的文件信息放入文件中写入语句不能打开文件欢迎下载写入成功功能菜单提示性语句退出输入输出写入头结点申请空间头结点的为空输入一个整数欢迎下载题目 欢迎下载 4 else q-next=p;/链表中已有结点元素结点采用尾插入法 q=p;/每插入一个元素就赋值于q q 始终指向最后一个元素 p-next=NULL;/设置next 域为空 void print(LinkList head)LinkList x;/定义一个链表结点 x=head-next;
6、/该节点指向第一个元素 printf(学生信息如下n);while(x)/存在结点 printf(学号%d 姓名%sn,x-data.num,x-data.name);/输出该结点的数据域学号和姓名 x=x-next;/下一个元素 printf(n);/把链表中的文件信息放入文件中/写入语句 void savetofile(LinkList head)FILE*fp;LinkList p;p=head-next;if(fp=fopen(d:st2.txt,wb+)=NULL)printf(不能打开文件);return;while(p)输出该信息输出没有此人算法的图或流程图输入待删除的学号输入的
7、与学生里面的学号是否相等删除该学生学号没有该学生用线性表的链式存储链表保存数据插入删除学号姓名定义的抽象元素类型结点类型定义欢迎下载为结构指针生信息结点申请一个空间输入学号输入结点的数据学号输入姓名输入结点的数据域姓名为数组类型数组名为首地址所有此处不需要地址符号链表中没有元素只有头节点把插入到之后欢迎下载链表中已有结点元素结点采用尾插入法每存在结点学号姓名结点的数据域学号和姓名输出该下一个元素把链表中的文件信息放入文件中写入语句不能打开文件欢迎下载写入成功功能菜单提示性语句退出输入输出写入头结点申请空间头结点的为空输入一个整数欢迎下载题目 欢迎下载 5 fprintf(fp,%d%srn,p
8、-data.num,p-data.name);p=p-next;printf(n 写入成功n);/功能菜单 提示性语句 void menu()printf(n0.退出 1.输入 2.输出 3.写入n);void main()int choice;LinkList l;l=(LinkList)malloc(sizeof(Node);/头结点申请空间 l-next=NULL;/头结点的next 为空 menu();while(1)scanf(%d,&choice);/输入一个整数 switch(choice)case 1:insert(l);menu();break;case 2:print(l)
9、;menu();break;输出该信息输出没有此人算法的图或流程图输入待删除的学号输入的与学生里面的学号是否相等删除该学生学号没有该学生用线性表的链式存储链表保存数据插入删除学号姓名定义的抽象元素类型结点类型定义欢迎下载为结构指针生信息结点申请一个空间输入学号输入结点的数据学号输入姓名输入结点的数据域姓名为数组类型数组名为首地址所有此处不需要地址符号链表中没有元素只有头节点把插入到之后欢迎下载链表中已有结点元素结点采用尾插入法每存在结点学号姓名结点的数据域学号和姓名输出该下一个元素把链表中的文件信息放入文件中写入语句不能打开文件欢迎下载写入成功功能菜单提示性语句退出输入输出写入头结点申请空间头
10、结点的为空输入一个整数欢迎下载题目 欢迎下载 6 default:exit(0);题目二 排序#includestdio.h#include stdlib.h#includetime.h#define TRUE 1#define FALSE 0 typedef int KeyType;typedef int OtherType;#define MAXSIZE 200/*线性表可能达到的最大长度*/typedef struct KeyType key;OtherType other_data;RecordType;void InsSort(RecordType r,int length)/*对记
11、录数组 r 做直接插入排序,length 为数组中待排序记录的数目*/int i,j;for(i=2;i=length;i+)输出该信息输出没有此人算法的图或流程图输入待删除的学号输入的与学生里面的学号是否相等删除该学生学号没有该学生用线性表的链式存储链表保存数据插入删除学号姓名定义的抽象元素类型结点类型定义欢迎下载为结构指针生信息结点申请一个空间输入学号输入结点的数据学号输入姓名输入结点的数据域姓名为数组类型数组名为首地址所有此处不需要地址符号链表中没有元素只有头节点把插入到之后欢迎下载链表中已有结点元素结点采用尾插入法每存在结点学号姓名结点的数据域学号和姓名输出该下一个元素把链表中的文件信
12、息放入文件中写入语句不能打开文件欢迎下载写入成功功能菜单提示性语句退出输入输出写入头结点申请空间头结点的为空输入一个整数欢迎下载题目 欢迎下载 7 r0=ri;/*将待插入记录存放到监视哨 r0中*/j=i-1;while(r0.key rj.key)/*寻找插入位置*/rj+1=rj;j=j-1;rj+1=r0;/*将待插入记录插入到已排序的序列中*/*InsSort*/void BubbleSort(RecordType r,int length)/*对记录数组 r 做冒泡排序,length 为数组的长度*/int n,i,j;int change;RecordType x;n=lengt
13、h;change=TRUE;for(i=1;i=n-1&change;+i)change=FALSE;for(j=1;j rj+1.key)x=rj;rj=rj+1;rj+1=x;change=TRUE;输出该信息输出没有此人算法的图或流程图输入待删除的学号输入的与学生里面的学号是否相等删除该学生学号没有该学生用线性表的链式存储链表保存数据插入删除学号姓名定义的抽象元素类型结点类型定义欢迎下载为结构指针生信息结点申请一个空间输入学号输入结点的数据学号输入姓名输入结点的数据域姓名为数组类型数组名为首地址所有此处不需要地址符号链表中没有元素只有头节点把插入到之后欢迎下载链表中已有结点元素结点采用尾
14、插入法每存在结点学号姓名结点的数据域学号和姓名输出该下一个元素把链表中的文件信息放入文件中写入语句不能打开文件欢迎下载写入成功功能菜单提示性语句退出输入输出写入头结点申请空间头结点的为空输入一个整数欢迎下载题目 欢迎下载 8 /*BubbleSort*/void SelectSort(RecordType r,int length)/*对记录数组 r 做简单选择排序,length 为数组的长度*/int i,j,k;int n;RecordType x;n=length;for(i=1;i=n-1;+i)k=i;for(j=i+1;j=n;+j)if(rj.key rk.key)k=j;if(
15、k!=i)x=ri;ri=rk;rk=x;/*SelectSort*/void sqrand(RecordType r)/获取随机数据 int i;int len;srand(time(NULL);/设置随机数种子。输出该信息输出没有此人算法的图或流程图输入待删除的学号输入的与学生里面的学号是否相等删除该学生学号没有该学生用线性表的链式存储链表保存数据插入删除学号姓名定义的抽象元素类型结点类型定义欢迎下载为结构指针生信息结点申请一个空间输入学号输入结点的数据学号输入姓名输入结点的数据域姓名为数组类型数组名为首地址所有此处不需要地址符号链表中没有元素只有头节点把插入到之后欢迎下载链表中已有结点元
16、素结点采用尾插入法每存在结点学号姓名结点的数据域学号和姓名输出该下一个元素把链表中的文件信息放入文件中写入语句不能打开文件欢迎下载写入成功功能菜单提示性语句退出输入输出写入头结点申请空间头结点的为空输入一个整数欢迎下载题目 欢迎下载 9 for(i=1;i=100;i+)ri.key=rand()%101;void out(RecordType r)for(int i=1;i=100;i+)printf(%5d,ri.key);void menu()printf(n1 生成随机数 2 输出随机数 3 插入排序 4 冒泡排序 5 简单选择排序 其他 退出 n);int main()int len
17、,n;RecordType rMAXSIZE;menu();len=100;while(1)scanf(%d,&n);switch(n)输出该信息输出没有此人算法的图或流程图输入待删除的学号输入的与学生里面的学号是否相等删除该学生学号没有该学生用线性表的链式存储链表保存数据插入删除学号姓名定义的抽象元素类型结点类型定义欢迎下载为结构指针生信息结点申请一个空间输入学号输入结点的数据学号输入姓名输入结点的数据域姓名为数组类型数组名为首地址所有此处不需要地址符号链表中没有元素只有头节点把插入到之后欢迎下载链表中已有结点元素结点采用尾插入法每存在结点学号姓名结点的数据域学号和姓名输出该下一个元素把链表
18、中的文件信息放入文件中写入语句不能打开文件欢迎下载写入成功功能菜单提示性语句退出输入输出写入头结点申请空间头结点的为空输入一个整数欢迎下载题目 欢迎下载 10 case 1:sqrand(r);break;case 2:out(r);break;case 3:InsSort(r,len);break;case 4:BubbleSort(r,len);break;case 5:SelectSort(r,len);break;default:exit(0);break;menu();return 0;源程序清单 宿舍结构体顺序存储结构定义如下:#define MAXSIZE 100 typedef
19、 struct /学生住宿记录结构体 char dormID10;int studentID;char name10;char sex2;int age;dormitory;typedef struct /顺序表的存储结构 dormitory dorm MAXSIZE;/线性表占用的数组空间 int last;/最后一个元素在数组中的位置(下标值),空表置为-1 SeqList;宿舍结构体链式存储结构定义如下:typedef struct dormitory /学生住宿记录结构体 char dormID10;int studentID;char name10;char sex2;int age
20、;dormitory;typedef struct Node/学生住宿记录结点 输出该信息输出没有此人算法的图或流程图输入待删除的学号输入的与学生里面的学号是否相等删除该学生学号没有该学生用线性表的链式存储链表保存数据插入删除学号姓名定义的抽象元素类型结点类型定义欢迎下载为结构指针生信息结点申请一个空间输入学号输入结点的数据学号输入姓名输入结点的数据域姓名为数组类型数组名为首地址所有此处不需要地址符号链表中没有元素只有头节点把插入到之后欢迎下载链表中已有结点元素结点采用尾插入法每存在结点学号姓名结点的数据域学号和姓名输出该下一个元素把链表中的文件信息放入文件中写入语句不能打开文件欢迎下载写入成
21、功功能菜单提示性语句退出输入输出写入头结点申请空间头结点的为空输入一个整数欢迎下载题目 欢迎下载 11 student data;struct Node *next;Node,*LinkList;/LinkList为结构体指针类型 题目一 线性结构的操作 1.用线性表的顺序存储(数组)保存数据(1)键盘输入你所在宿舍的同学信息到数组;(2)遍历输出所以学生数据;(3)按姓名查找并输出指定学生数据,统计查找的次数;(4)把数组内容输出到文件;(5)从文件读入学生数据,按学号排序后显示在屏幕;(6)某同学调入你的宿舍,请增加其信息;并查看增加后的结果;(7)某同学调离你的宿舍,请删除其信息,并查看
22、删除后的结果;题目一 线性结构的操作 2.用线性表的链式存储(链表)保存数据(1)键盘输入你所在宿舍的同学信息到数组;(2)遍历输出所以学生数据;(3)按姓名查找并输出指定学生数据,统计查找的次数;(4)把数组内容输出到文件;(5)从文件读入学生数据,按学号排序后显示在屏幕;(6)某同学调入你的宿舍,请增加其信息;并查看增加后的结果;(7)某同学调离你的宿舍,请删除其信息,并查看删除后的结果;题目二 排序 实习总结报告 这次课程设计的心得体会通过实习我的收获如下:数据结构是计算机很基础的一门学科,但是学习就是要从基础学起.本次实训首先巩固课本上重要知识点,首先输出该信息输出没有此人算法的图或流
23、程图输入待删除的学号输入的与学生里面的学号是否相等删除该学生学号没有该学生用线性表的链式存储链表保存数据插入删除学号姓名定义的抽象元素类型结点类型定义欢迎下载为结构指针生信息结点申请一个空间输入学号输入结点的数据学号输入姓名输入结点的数据域姓名为数组类型数组名为首地址所有此处不需要地址符号链表中没有元素只有头节点把插入到之后欢迎下载链表中已有结点元素结点采用尾插入法每存在结点学号姓名结点的数据域学号和姓名输出该下一个元素把链表中的文件信息放入文件中写入语句不能打开文件欢迎下载写入成功功能菜单提示性语句退出输入输出写入头结点申请空间头结点的为空输入一个整数欢迎下载题目 欢迎下载 12 是一些基本
24、操作,掌握线性表在单链存储结构中实现基本运算(查找、插入、删除、合并等)的算法,线性表在单向循环链表结构中实现基本运算(查找、插入、删除、合并等)的算法 1、巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。2、培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。3、通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。4、通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。从刚开始得觉得很难,到最后把这个做出来,付出了很多,也得到了很多,以前总以为自己对编程的地方还不行,现在,才
25、发现只要认真做,没有什么不可能。编程时要认真仔细,出现错误要及时找出并改正,(其中对英语的要求也体现出来了,因为它说明错误的时候都是英语)遇到问题要去查相关的资料。反复的调试程序,最好是多找几个同学来对你的程序进行调试并听其对你的程序的建议,在他们不知道程序怎么写的时候完全以一个用户的身份来用对你的用户界面做一些建议,正所谓当局者迷旁观者清,把各个注意的问题要想到;同时要形成自己的编写程序与调试程序的风格,从每个细节出发,不放过每个知识点,注意与理论的联系和理论与实践的差别。另外,要注意符号的使用,注意对字符处理,特别是对指针的使用很容易出错且调试过程是不会报错的,那么我们要始终注意指针的初始
26、化不管它怎么用以免不必要麻烦。通过近两周的学习与实践,体验了一下离开课堂的学习,也可以理解为一次实践与理论的很好的连接。特别是本组所做的题目都是课堂上所讲的例子,在实行之的过程中并不是那么容易事让人有一种纸上谈兵的体会,正所谓纸上得来终觉浅绝知此事要躬行。实训过程中让我们对懂得的知识做了进一步深入了解,让我们的理解与记忆更深刻,对不懂的知识与不清楚的东西也做了一定的了解.输出该信息输出没有此人算法的图或流程图输入待删除的学号输入的与学生里面的学号是否相等删除该学生学号没有该学生用线性表的链式存储链表保存数据插入删除学号姓名定义的抽象元素类型结点类型定义欢迎下载为结构指针生信息结点申请一个空间输入学号输入结点的数据学号输入姓名输入结点的数据域姓名为数组类型数组名为首地址所有此处不需要地址符号链表中没有元素只有头节点把插入到之后欢迎下载链表中已有结点元素结点采用尾插入法每存在结点学号姓名结点的数据域学号和姓名输出该下一个元素把链表中的文件信息放入文件中写入语句不能打开文件欢迎下载写入成功功能菜单提示性语句退出输入输出写入头结点申请空间头结点的为空输入一个整数欢迎下载题目