C语言实习报告_第1页
C语言实习报告_第2页
C语言实习报告_第3页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、题目一线性结构的操作1.用线性表的顺序存储(数组)保存数据算法的N-S图或流程图2.用线性表的链式存储(链表)保存数据插入:HSin elude <stdio.h> #include <stdlib.h> typedef structint num; / 学号char name10;/ 姓名student; /定义的抽象元素类型Elemtype typedef struct Node /* 结点类型定义 */ student data;struct Node *next;Node, *LinkList; /* LinkList 为结构指针类型 */static int

2、count; / 学生人数/ 带头结点的尾插入法创建链表void insert(LinkList head)LinkList p,q; /p 代表的待插元素代入最后一个元素q=head; q 指向 head结点printf( " 输入学生人数 :" );scanf( "%d",&count);for (int i=0;i<count;i+)printf( "n输入第c个学生信息:n" ,i+1);p = (LinkList)malloc(sizeof (Node); / 结点 p申请一个空间printf( "输

3、入学号 :" );scanf( "%d",&p->data.num);/ 输入结点 p的数据 ° 学号printf( "n 输入姓名 :" );scanf( "%s",p->);/输入结点的数据域姓名 name为数组类型数组名为首地址所有此处不需要地址符号if (i=0)head->next = p; /i=0 链表中没有元素只有头节点把插入到 head之后elseq->next = p; / 链表中已有结点元素结点采用尾插入法q = p; / 每插入一个元素就赋值

4、于 q q 始终指向最后一个元素p->next = NULL; / 设置 next 域为空void print(LinkList head)LinkList x; / 定义一个链表结点x = head->next ;/ 该节点指向第一个元素printf( " 学生信息如下 n" );while (x) / 存在结点printf("学号 d 姓名 sn" ,x->data.num,x->);/ 输出该结点的数据域学号和姓名x = x->next ;/ 下一个元素printf( "n" );

5、/ 把链表中的文件信息放入文件中/ 写入语句void savetofile(LinkList head)FILE*fp;LinkList p; p=head->next;if (fp=fopen( "d:st2.txt","wb+")=NULL)printf( "不能打开文件 ");return ;while (p)fprintf(fp, "%d%srn" ,p->data.num,p->); p=p->next;printf( "n 写入成功 n" )

6、;/ 功能菜单 提示性语句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 ;default :

7、 exit(0);题目二 排序#include"stdio.h"#include "stdlib.h"#include"time.h"#define TRUE 1#define FALSE 0typedef int KeyType;typedef int OtherType;#define MAXSIZE 200 /* 线性表可能达到的最大长度 */typedef struct KeyType key;OtherType other_data;RecordType;void InsSort(RecordType r, int leng

8、th)/* 对记录数组 r 做直接插入排序, length 为数组中待排序记录的数目 */ int i,j;for (i=2; i<=length; i+)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

9、,j;int change;RecordType x;n=length; change=TRUE;for ( i=1 ; i<= n-1 && change ;+i ) change=FALSE;for ( j=1 ; j<= n-i ; +j)if (rj.key > rj+1.key )x= rj;rj= rj+1; rj+1= x;change=TRUE; /* BubbleSort */void SelectSort(RecordType r, int length)/* 对记录数组 r 做简单选择排序, length 为数组的长度 */ int i,

10、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 ( k!=i)x= ri;ri= rk;rk=x; /* SelectSort */void sqrand(RecordType r)/获取随机数据int i;int len;srand(time(NULL);/ 设置随机数种子。for(i=1;i<=100;i+)ri.key = rand()%101;void out(RecordType r)

11、for(int i=1;i<=100;i+)printf("%5d",ri.key );void menu()printf("n1 生成随机数 2 输出随机数 3 插入排序 4 冒泡排序 5 简单选择 排序 其他 退出 n");int main()int len,n;RecordType rMAXSIZE;menu();len=100;while(1)scanf("%d",&n);switch(n)case 1: sqrand(r);break;case 2: out(r);break;case 3:InsSort(r,

12、len);break;case 4:BubbleSort(r,len);break;case 5:SelectSort(r,len);break;default :exit(0);break;menu();return 0;源程序清单 宿舍结构体顺序存储结构定义如下:#define MAXSIZE 100typedef struct / 学生住宿记录结构体char dormID10;int studentID;char name10;char sex2;int age;dormitory;typedef struct / 顺序表的存储结构dormitory dorm MAXSIZE; / 线性

13、表占用的数组空间int last; / 最后一个元素在数组中的位置(下标值),空表置为 -1 SeqList;宿舍结构体链式存储结构定义如下:typedef struct dormitory / 学生住宿记录结构体char dormID10;int studentID;char name10;char sex2;int age;dormitory;typedef struct Node / 学生住宿记录结点为结构体指针类型student data; struct Node *next;Node, *LinkList; /LinkList题目一 线性结构的操作1. 用线性表的顺序存储(数组)保存

14、数据(1)键盘输入你所在宿舍的同学信息到数组;(2)遍历输出所以学生数据;(3)按姓名查找并输出指定学生数据,统计查找的次数;(4)把数组内容输出到文件;(5)从文件读入学生数据,按学号排序后显示在屏幕;(6)某同学调入你的宿舍,请增加其信息;并查看增加后的结果;(7)某同学调离你的宿舍,请删除其信息,并查看删除后的结果; 题目一 线性结构的操作2. 用线性表的链式存储(链表)保存数据(1)键盘输入你所在宿舍的同学信息到数组;(2)遍历输出所以学生数据;(3)按姓名查找并输出指定学生数据,统计查找的次数;(4)把数组内容输出到文件;(5)从文件读入学生数据,按学号排序后显示在屏幕;(6)某同学

15、调入你的宿舍,请增加其信息;并查看增加后的结果;(7)某同学调离你的宿舍,请删除其信息,并查看删除后的结果; 题目二 排序实习总结报告 这次课程设计的心得体会通过实习我的收获如下 : 数据结构是计算机很基础的一 门学科, 但是学习就是要从基础学起 .本次实训首先巩固课本上重要知识点, 首先是一些基本操作,掌握线性表在单链存储结构中实现基本运算(查找、插入、删 除、合并等)的算法,线性表在单向循环链表结构中实现基本运算 (查找、插入、 删除、合并等)的算法 1巩固和加深了对数据结构的理解,提高综合运用本课 程所学知识的能力。2、培养了我选用参考书,查阅手册及文献资料的能力。培 养独立思考,深入研

16、究,分析问题、解决问题的能力。3、通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。4、通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全 局观念。从刚开始得觉得很难,到最后把这个做出来,付出了很多,也得到了很 多,以前总以为自己对编程的地方还不行,现在,才发现只要认真做,没有什么 不可能。编程时要认真仔细,出现错误要及时找出并改正,(其中对英语的要求也体现出来了,因为它说明错误的时候都是英语) 遇到问题要去查相关的资料。反复 的调试程序,最好是多找几个同学来对你的程序进行调试并听其对你的程序的建 议,在他们不知道程序怎么写的时候完全以一个用户的身份来用对你的用户界面 做一些建议,正所谓当局者迷旁观者清,把各个注意的问题要想到;同时要形成 自己的编写程序与调试程序的风格, 从每个细节出发,不放过每个知识点,注意 与理论的联系和理论与实践的差

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论