C程序实验报告十 结构体与共用体

实验10  结构体与公用体
1.实验目的、要求
1)掌握结构体类型变量定义和使用。
利扎曲普坦
2)掌握结构体类型数组的概念和使用。
3)掌握公用体的概念与使用。
2.实验内容
1)输入程序并运行,观察运行结果
#include stdio.h
int main( ) 
    {  struct  cmplx
{  int  x
int  y
    } cnum[2]={1 , 3 , 2 , 7}
printf(%d\n, cnum[0].y / cnum[0].x * cnum[1].x )
return(0); }
  运行此程序:按F2保存源程序,按F9完成一次编译连接,无提示错误,按任意键返回源程序行,按ctrl+F9运行,按alt+F5看结果,结果显示:6
2)输入程序并运行,观察运行结果
union  ks
  {  int a
    int b
  }
union  ks  s[4]
union  ks  *p
#include stdio.h
  int main( ) 
{ int n=1, i
  printf(西北植物学报\n)
  for(i=0i<4i++)
    { s[i].a=n
      s[i].b=s[i].a+1
      n=n+2
      }
p=&s[0]
printf(%d,,p->a)
printf(%d ,++ p->a)
return(0); }
运行此程序:按F2保存源程序,按F9完成一次编译连接,无提示错误,按ctrl+F9运行,按任意键返回源程序行,按alt+F5看结果,结果显示:23
3)编写程序
  10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个,要求打印出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩、平均分数)。要求用input 函数输入10个;用average函数求总平均分;用max函数出最高分的;总平均分和最高分学生的数据都在主函数中输出。
#include"stdio.h"
struct student
  {char num[6];
  char name[8];
  int score[4];
  float avr;
  }stu[10];
main()
{int i,j,max,maxi,sum;
float average;
for(i=0;i<10;i++)
  {printf("number");
    scanf("%s",stu[i].num);
    printf("name");
    scanf("%s",stu[i].name);
    for(j=0;j<3;j++)
      {printf("\nscore\n");
      scanf("%d",&stu[i].score[j]); } }
average=0;
max=0;
maxi=0;
for(i=0;i<10;i++)
  {sum=0;
    for(j=0;j<3;j++)
      sum+=stu[i].score[j];
    stu[i].avr=sum/3.0;
    average+=stu[i].avr;
    if(sum>max)
      {max=sum;
      maxi=i; }}
dsp管理器 average/=5;
printf("number  name  score1  score2  score3  average\n");
for(i=0;i<10;i++)
  {printf("%8s%10s",stu[i].num,stu[i].name);
    for(j=0;j<3;j++)
      printf("%7d",stu[i].score[j]);
    printf("%6.2f\n",stu[i].avr); }
printf("average=%5.2f\n",average);
printf("The best student is %s,sum=%d\n",stu[maxi].name,max);
}
三星e568运行此程序:按F2保存源程序,按F9完成一次编译连接,无提示错误,按ctrl+F9运行,按要求输入十个学生的数据,按任意键返回源程序行,按alt+F5看结果,结果显示:
number  name  score1  score2  score3  average
      01      san    76    87    79 80.67
      02      tian    65    75    86 75.33
      03      yuan    98    68    78 81.33
      04      ping    97    86    78 87.00
      05      shuo    65    74    82 73.67
      06      ying    90    80    68 79.33
      07      xiao    87    80    58 75.00
      08        hu    64    98    60 74.00
      09      xing    65    82    90 79.00
      10        xu    60    98    76 78.00
average=156.67
The best student is ping,sum=261
3.思考及总结
1结构体、共用体定义方式、引用方式和功能的相同点与不同点。
结构体定义方法
①先声明结构体类型,在定义该类型的变量
                  struct 变量名  变量名1,变量名2
             
②在声明类型的同时定义变量
struct  结构体名
                  {
                          成员列表
                        }变量名表列;
③不指定类型名而直接定义结构体类型变量
                      struct
                      {
                        成员表列
                        }变量名表列;
共用体定义方法:
union  共用体名
挠脚心论坛  {成员表列
  }变量表列;
只有定义了共用体变量才能引用它;但应注意,不能应用公共体变量,而只能引用共用体变量中的成员。例如:a .i  a .ch  a .f
结构体、共用体
引用方式和功能的相同点与不同点公称直径
结构体占用的内存空间是其元素占空间的总和;而共用体是元素中占用空间最大的元素的空间。其实在共用体所用的内存中已经写入了数据,当使用其它元素时,上次使用的内容将被覆盖. 也就是说他使几个不同类型的变量共占一段内存(相互覆盖),每次只有一个能使用。结构体则不然, 每个成员都会有存储空间,可以一起用.内部变量间是相互独立的。 
2)枚举类型的定义及应用场合。如果一个变量只有几种可能的值,则可以定义为枚举类型。“枚举”即把可能的值一一列举出来,变量的值只限于列举出来的值的范围。一般形式:enum[枚举名]{枚举元素列表}
3)用typedef定义类型的方法。(通常分四步)
①先按定义变量的方法写出定义体(如:int i;)。
②将变量名替换成新的类型名(如:int INTEGER;)
③在最前面加typedef(如:typedef int INTEGER;)。
④然后可以用新的类型名去定义变量了。
4)使用typedef的注意事项。
typedef可以声明各种类型名,但不能用来定义变量。
②用typedef只是对已存在的类型增加一个类型名,而没有创造新的类型。
typedef#define有相似之处。
④当不同源文件需要用到同一类型的数据时,常用typedef声明一些数据类型,把它们单独放在一个文件中,然后在需要用到它们的文件中用#include命令把它们包含进来。
⑤使用typedef有利于程序的通用与移植。
4.易犯错误及纠正方法
1)在做实验内容(1)、(2)时,先分析运行结果,注意结构体、共用体的不同特性,再上机运行,对照结果是否一致。
2)实验内容(3)综合性较强,包括函数调用和结构体的应用,提前做好预习工作,再上机实验。

本文发布于:2024-09-22 14:39:07,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/361268.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:类型   变量   定义
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议