c语言实训报告模板.docx

上传人:b****6 文档编号:7026397 上传时间:2023-01-16 格式:DOCX 页数:5 大小:16.34KB
下载 相关 举报
c语言实训报告模板.docx_第1页
第1页 / 共5页
c语言实训报告模板.docx_第2页
第2页 / 共5页
c语言实训报告模板.docx_第3页
第3页 / 共5页
c语言实训报告模板.docx_第4页
第4页 / 共5页
c语言实训报告模板.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

c语言实训报告模板.docx

《c语言实训报告模板.docx》由会员分享,可在线阅读,更多相关《c语言实训报告模板.docx(5页珍藏版)》请在冰豆网上搜索。

c语言实训报告模板.docx

c语言实训报告模板

c语言实训报告模板

  暨南大学本科实验报告专用纸

  课程名称高级语言程序设计成绩评定实验项目名称结构体和共用体指导教师张晓刚实验项目编号08实验项目类型综合性实验地点C301学生姓名  苟长弘学号XX051282学院信息科学技术  系计算机科学专业软件工程  实验时间XX年6月12日下午~6月13日下午温度℃湿度

  实验目的

  1.

  2.

  3.

  4.掌握结构体类型变量的定义和使用。

掌握结构体类型数组的概念和应用。

掌握链表的概念,初步学会对链表进行操作。

掌握共用体的概念与使用。

  实验内容和要求

  实验内容1:

试编写一个程序完成:

有5个学生,每个学生的数据包括学号、姓名、3门课

  的成绩,从键盘输入5个学生数据,要求输出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩、平均分数)。

  实验要求:

要求用一个input函数输入5个学生数据;应一个average函数求平均分;

  用max函数求出最高分学生数据;总平均分和最高分的学生的数据都在主函数中输出。

  输入事先已编好的程序,并运行该程序。

分析运行结果是否正确。

  实验内容2:

试编写一个程序完成:

建立一个链表,每个结点包括:

学号、姓名、性别、年

  龄。

输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。

  实验要求:

用链表实现。

  输入事先已编好的程序,并运行该程序。

分析运行结果是否正确。

  主要仪器设备

  仪器:

计算机

  实验环境:

WindowsXP+VisualC++

  实验原理

  实验1的N-S图如下:

  图片已关闭显示,点此查看

  实验2的N-S图如下:

  creat函数:

  图片已关闭显示,点此查看

  print函数:

  图片已关闭显示,点此查看

  del函数:

  图片已关闭显示,点此查看

  主函数:

  图片已关闭显示,点此查看

  源程序

  实验1的源程序如下:

  #include

  structstudent

  {

  intnumber;

  charname[10];

  intclasses[3];

  intaverage;

  }stu[5];

  voidinput(structstudent*p)

  {

  inti;

  for(i=0;i  {

  printf("Pleaseinput%dthstudent'sdata:

",i+1);

  scanf("%d%s%d%d%d",&p->number,p->name,&p->classes[0],&p->classes[1],&p->classes[2]);

  }

  }

  average(structstudent*p)

  {

  intm=0;

  m=p->classes[0]+p->classes[1]+p->classes[2];

  m=m/3;

  p->average=m;

  return(m);

  }

  structstudent*max(structstudent*p,intj)

  {

  inti,n;

  structstudent*q;

  for(i=0;i  if(p->classes[j]>=n)

  {

  n=p->classes[j];

  q=p;

  }

  return(q);

  }

  voidmain()

  {

  inti,m[5];

  structstudent*p;

  input(stu);

  p=stu;

  for(i=0;i  {

  m[i]=average(&stu[i]);

  printf("The%s'saveragescoreis:

%d",p->name,m[i]);

  }

  for(i=0;i  {

  p=max(stu,i);

  printf("Theclasses%d'smaxscoreis:

%d%s%d%d%d%d",i+1,p->number,p->name,p->classes[0],p->classes[1],p->classes[2],p->average);

  }

  }

  实验2的源程序如下:

  #include

  #include

  #defineNULL0

  #defineLENsizeof(structstudent)

  structstudent

  {

  charnum[10];

  charname[10];

  charsex;

  intage;

  structstudent*next;

  };

  intn;

  structstudent*creat(void)

  {

  structstudent*head;

  structstudent*p1,*p2;

  n=0;

  p1=p2=(structstudent*)malloc(LEN);  scanf("%s%s%c%d",p1->num,p1->name,&p1->sex,&p1->age);

  head=NULL;

  while(p1->age!

=0)

  {

  n=n+1;

  if(n==1)

  head=p1;

  else

  p2->next=p1;

  p2=p1;

  p1=(structstudent*)malloc(LEN);

  scanf("%s%s%c%d",p1->num,p1->name,&p1->sex,&p1->age);

  }

  p2->next=NULL;

  return(head);

  }

  voidprint(structstudent*head)

  {

  structstudent*p;

  printf("Now,These%drecordsare:

",n);

  p=head;

  if(head!

=NULL)

  do{printf("%s%s%c%d",p->num,p->name,p->sex,p->age);

  p=p->next;

  }while(p!

=NULL);

  }

  structstudent*del(structstudent*head,intnum)

  {

  structstudent*p1,*p2;

  if(head==NULL)

  printf("listnull!

");

  else

  {

  p1=head;

  while(num!

=p1->age&&p1->next!

=NULL)

  {

  p2=p1;

  p1=p1->next;

  }

  if(num==p1->age)

  {

  if(p1==head)

  head=p1->next;

  else

  p2->next=p1->next;

  printf("delete:

%d",num);

  n=n-1;

  }

  else

  printf("%dnotbeenfound!

",num);

  }

  return(head);

  }

  voidmain()

  {

  structstudent*head,*stu;

  intdel_num;

  printf("inputrecords:

");

  head=creat();

  print(head);

  printf("inputthedeletednumber:

");

  scanf("%d",&del_num);

  while(del_num!

=0)

  {

  head=del(head,del_num);

  print(head);

  printf("inputthedeletednumber:

");

  scanf("%d",&del_num);

  }

  }

  实验步骤与调试

  实验1:

运行时未发生任何错误,结果正确。

  实验2:

运行时提示语法错误,原因是输入语句写为了

  “scanf("%s%s%d%d",p1->num,p1->name,p1->sex,&p1->age);”

  将起改为“scanf("%s%s%d%d",p1->num,p1->name,&p1->sex,&p1->age);”,成功运行,但是结果却错误,再检查,发现原因还是输入语句:

  “scanf("%s%s%d%d",p1->num,p1->name,&p1->sex,&p1->age);”

  应该改为“scanf("%s%s%c%d",p1->num,p1->name,&p1->sex,&p1->age);”运行后,结果正确。

  实验结果与分析

  实验1的结果如下:

  图片已关闭显示,点此查看

  实验2的结果如下:

  图片已关闭显示,点此查看

  分析:

  利用结构体可以很好的对各类数据进行组合,而且还很容易引用。

对于学生的数据有多个,而且数据类型都不相同,首选可用结构体来存放。

对结构体的变量成员的引用要注意引用的格式。

它不同于普通变量的引用方式,它要有结构体名加一点再加变量名来引用。

在输入时,也应注意输入的成员的类型。

  利用链表对结构体的处理是一种很好的方法。

它是线性存储的,可以动态的分配空间,根据需要开辟内存单元,减少对空间的浪费,而且对于数据的删除和添加,它并不需要利用额外的空间对以存放好的数据进行移动或交换。

链表是利用指针来实现的操作的。

  大学

  学院实验报告

  专业名称实验室实验课程C实验名称姓  名学  号同组人员实验日期

  语言程序设计程序设计1

  2

  图片已关闭显示,点此查看

  3

  图片已关闭显示,点此查看

  4

  图片已关闭显示,点此查看

  5

  图片已关闭显示,点此查看

  6

  图片已关闭显示,点此查看

  7

  图片已关闭显示,点此查看

  8

  

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1