《C语言》课内实验报告.doc_第1页
《C语言》课内实验报告.doc_第2页
《C语言》课内实验报告.doc_第3页
《C语言》课内实验报告.doc_第4页
《C语言》课内实验报告.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

c语言实验报告c语言课内实验报告学生姓名:及 学 号:学 院:理学院班 级:数学111课程名称:c语言实验题目:结构体的应用指导教师姓名及职称: 2012年06月05日- 13 -一、实验题目:结构体的应用二、实验目的:1进一步掌握结构体变量、数组的定义和使用方法,掌握结构体与指针的应用。2学习共用体的概念和使用。3学习链表的概念和使用。三、实验内容:1有6个学生,每个学生的数据包括学号、姓名、性别、4门课的成绩、总成绩、平均成绩。从键盘输入每个学生信息及4门课成绩,总成绩及平均成绩要通过4门课算出。然后用选择排序法按照总成绩由高到低对6个学生数据进行排序并输出排序结果。要求输入、排序、输出用3个自定义函数实现。编写源程序,给出注释及运行结果。(提示,请参阅教材上292页例11.5及例11.6的程序)。2建立一个含有10个结点的单链表,每个节点包括:学号、姓名、性别、年龄和一门课程的成绩。输入一个学号,删去等于此学号的结点;按学号排序向原单链表中插入两个新结点。编写源程序,给出注释及运行结果。(提示,请参阅教材上297页至308页例11.8-例11.11的程序)。四、实验结果:1.程序如下:#include /*连接库函数stdio.h*/struct student /*声明结构体类型struct student,并定义此结构体类型的数组stu6*/int s_no; /*定义整形变量s_no于结构体类型struct student中*/char s_name10; /*定义字符数组s_name于结构体类型struct student中*/char s_sex; /*定义字符形变量s_sex于结构体类型struct student中*/float s_score4; /*定义浮点形数组s_score于结构体类型struct student中*/float sum; /*定义浮点形变量sum于结构体类型struct student中*/float average; /*定义浮点形变量average于结构体类型struct student中*/stu6;struct student *input(struct student *stu,int n) /*定义函数input(struct student *stu,int n),此函数返回指向struct student类型数据的指针*/struct student *p; /*定义指向struct student类型数据的指针p*/int i; /*定义整型变量i*/p=stu; /* p=stu*/printf(please input the infomation of student:nn); /*输出” please input the infomation of student”*/printf( no name sex score1 score2 score3 score4n); /*输出”no name sex score1 score2 score3 score4”*/for(i=0;in;i+,p+) /*i=0;当is_no,p-s_name,&p-s_sex,&p-s_score0,&p-s_score1,&p-s_score2,&p-s_score3); /*输入struct student所需的数据,储存在p指向的变量的地址*/return(&stu0); /*函数返回&stu0的值*/void output(struct student *p,int n) /*定义空型函数output(struct student *p,int n)*/int i; /*定义整型变量i*/printf(nnthe information of the students is:nn); /*输出”the information of the students is:”*/printf(no name sex score1 score2 score3 score4 sum averagen); /*输出no name sex score1 score2 score3 score4 sum average”*/ for(i=0;in;i+) /*i=0;当is_no,pi-s_name,pi-s_sex,pi-s_score0,pi-s_score1,pi-s_score2,pi-s_score3,pi-sum,pi-average); /*输出pi所指向变量的各个数据*/void count(struct student *stu,int n) /*定义空型函数count(struct student *stu,int n)*/struct student *p; /*定义指向struct student类型变量的指针p*/int i; /*定义整型变量i*/p=stu; /* p=stu*/for(i=0;in;i+,p+) /*i=0;当isum=p-s_score0+p-s_score1+p-s_score2+p-s_score3; /*计算p-sum的值*/p-average=p-sum/4; /* p-average=p-sum/4*/ void sorted(struct student *stu,struct student *p,int n) /*定义空型函数sorted(struct student *stu,struct student *p,int n)*/int i,j,k; /*定义整型变量i,j,k*/struct student *temp; /*定义指向struct student类型变量的指针temp*/ for(i=0;in-1;i+) /*i=0;当in-1时,执行循环,i自加*/k=i; /* k=i*/for(j=i+1;jn;j+) /*j=i+1;当isumsum) /*如果pk-sumsum*/k=j; /* k=j*/if(k!=i) /*如果k!=i*/temp=pi; /* temp=pi; pi=pk; pk=temp;*/ pi=pk;pk=temp;void main() /*空型定义主函数*/int i; /*定义整型变量i*/struct student *p6; /*定义指向struct student类型变量的指针数组p*/for(i=0;i6;i+) /*i=0;当i6时,执行循环,i自加*/pi=stu+i; /* pi=stu+i*/input(stu,6); /*执行函数input(stu,6)*/count(stu,6); /*执行函数count(stu,6)*/sorted(stu,p,6); /*执行函数sorted(stu,p,6)*/output(p,6); /*执行函数output(p,6)*/程序运行结果如下:2.程序如下:#include /*连接库函数stdio.h*/ #include/*连接库函数malloc.h*/#define len sizeof(struct student) /*定义符号常量len,为sizeof(struct student)*/struct student /*声明结构体类型struct student*/int no; /*定义整形变量no于结构体类型struct student中*/char name20; /*定义字符数组name20 于结构体类型struct student中*/char sex5; /*定义字符数组sex5 于结构体类型struct student中*/int age; /*定义整形变量age于结构体类型struct student中*/float score; /*定义浮点型变量score于结构体类型struct student中*/struct student *next; /*定义指向结构体变量struct student的指针变量next于结构体类型struct student中*/;int n=0; /*定义全局整型变量n=0*/struct student *creat(void) /*定义函数student *creat(void),此函数返回指向struct student类型数据的指针*/struct student *p1,*p2,*head; /*定义指向struct student类型变量的指针p1,p1,head*/int k=1; /*定义整型变量k=1*/head=null; /* head=null ;n=0*/n=0;p1=p2=(struct student *)malloc(len); /*开辟len大小的空间令p1,p2指向空间的首地址*/if(p1!=null) /*如果p1!=null*/printf(%sn,请输入学生信息); /*输出“请输入学生信息”*/printf(%sn,学号 姓名 性别 年龄 成绩); /*输出“学号 姓名 性别 年龄 成绩”*/ scanf(%d%s%s%d%f,&p1-no,p1-name,p1-sex,&p1-age,&p1-score);/*输入struct student所需的数据,储存在p1指向的变量的地址*/while(k!=2) /*当k!=2时,执行循环*/n=n+1; /* n=n+1*/if(n=1) head=p1; /*如果n=1,head=p1*/else p2-next=p1; /*否则p2-next=p1*/p2=p1; /* p2=p1*/printf(%s,是否继续 1 是;2 否 ); /*输出“是否继续 1 是;2 否”*/scanf(%d,&k); /*输入k的值*/if(k=2) break; /*如果k=2,跳出循环*/p1=(struct student *)malloc(len); /*开辟len大小的空间令p1指向空间的首地址*/if(p1!=null) /*如果p1!=null*/ scanf(%d%s%s%d%f,&p1-no,p1-name,p1-sex,&p1-age,&p1-score);/*输入struct student所需的数据,储存在p1指向的变量的地址*/ else goto loop; /*否则跳到loop标记的程序*/ p2-next=null; /* p2-next=null*/return(head); /*返回head作为函数的返回值*/elseloop: printf(%s,内存不够,无法建立链表); /*否则输出“内存不够,无法建立链表”并用loop标记*/return(head); /*返回head作为函数的返回值*/struct student *insert(struct student *head)/*定义函数insert(struct student *head),此函数返回指向struct student类型数据的指针*/struct student *p1,*p2,*p0; /*定义指向struct student类型变量的指针p1,p1,p0*/p2=p1=head; /* p2=p1=head */if(head=null)printf(n%sn,请先建立学生信息); return(head); /*如果head=null,输出“请先建立学生信息”,返回dead*/p0=(struct student *)malloc(len); /*开辟len大小的空间令p0指向空间的首地址*/printf(%sn,请输入学生信息); /*输出“请输入学生信息”*/ printf(%sn,学号 姓名 性别 年龄 成绩); /*输出“学号 姓名 性别 年龄 成绩”*/ scanf(%d%s%s%d%f,&p0-no,p0-name,p0-sex,&p0-age,&p0-score); /*输入struct student所需的数据,储存在p0指向的变量的地址*/if(head=null) /*如果(head=null*/head=p1;p1-next=null;n+; /* head=p1;p1-next=null;n+*/printf(n%sn,学生信息添加成功); /*输出“学生信息添加成功”*/else /*否则*/while(p0-nop1-no&p1-next!=null) /*当p0-nop1-no且p1-next!=null执行循环*/p2=p1; /* p2=p1; p1=p1-next;*/ p1=p1-next; if(p1-next=null) /*如果p1-next=null*/p1-next=p0; /* p1-next=p0;p0-next=null;n+;*/p0-next=null;n+;printf(n%sn,学生信息添加成功); /*输出“学生信息添加成功”*/else /*否则*/p2-next=p0; /* p2-next=p0;p0-next=p1;n+;*/p0-next=p1;n+;printf(n%sn,学生信息添加成功); /*输出“学生信息添加成功”*/return(head); /*函数返回head*/struct student *del(struct student *head) /*定义函数insert(struct student *head),此函数返回指向struct student类型数据的指针*/struct student *p1,*p2; /*定义指向struct student类型变量的指针p1,p1*/int num; /*定义整型变量num*/printf(%s,请输入要删除学生的学号:); /*输出“请输入要删除学生的学号”*/scanf(%d,&num); /*输入num的值*/p2=p1=head; /* p2=p1=head*/if(p1=null) /*如果p1=null*/ printf(n%sn,此链表为空,无法删除); /*输出此链表为空,无法删除*/else /*否则*/while(p1-no!=num & p1-next!=null) /*当(p1-no!=num且p1-next!=null时执行循环*/p2=p1; /* p2=p1; p1=p1-next;*/p1=p1-next;if(p1-next=null&p1-no!=num) /*如果p1-next=null且p1-no!=num*/printf(n%sn,无此学生的信息); /*输出“无此学生的信息”*/else /*否则*/if(p1=p2) /*如果p1=p2*/head=p1-next;n-; /* head=p1-next;n-*/printf(n%sn,学生信息删除成功); /*输出“学生信息删除成功”*/else /*否则*/p2-next=p1-next;n-; /* p2-next=p1-next;n-*/printf(n%sn,学生信息删除成功); /*输出“学生信息删除成功”*/return(head); /*函数返回head*/void output(struct student *head) /*定义空型函数output(struct student *head)*/struct student *p; /*定义指向struct student类型变量的指针p*/p=head; /* p=head*/printf(%s%d%snn,此链表有,n,条信息); /*输出“此链表有,n,条信息”*/if(head!=null) /*如果head!=null*/printf(%sn,学号 姓名 性别 年龄 成绩); /*输出“学号 姓名 性别 年龄 成绩”*/while(p!=null) /*当p!=null时,执行循环*/printf(%-4d%5s%-4s%-5d%-7.2fn,p-no,p-name,p-sex,p-age,p-score); /*输出p1所指向变量的各个数据*/p=p-next; /* p=p-next*/int index() /*定义返回整形数据的函数index()*/int flag; /*定义整型变量flag*/printf(n*%s*nn,学生信息管理系统); /*输出“*学生信息管理系统*”*/printf( 1%sn,建立学生信息); /*输出“1建立学生信息”*/ printf( 2%sn,添加学生信息); /*输出“2添加学生信息”*/printf( 3%sn,删除学生信息); /*输出“3删除学生信息”*/printf( 4%sn,显示学生信息); /*输出“4显示学生信息”*/printf( 0%snn,退出); /*输出“0退出”*/printf( %s,请选择: ); /*输出“请选择”*/scanf(%d,&flag); /*输入flag的值*/ return(flag); /*函数返回flag*/void main() /*定义空型主函数*/ struct student *head=null; /*定义指向struct student类型变量的指针head=null*/ int f

温馨提示

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

评论

0/150

提交评论