当前位置 首页 C语言设计第三版 第44章

《C语言设计第三版》第44章

作者:谭浩强 字数:916 书籍:C语言设计第三版

  在定义并

  说明变量 boy1 和 boy2 时,其中的成员 birthday 被说明为 data 结构类型。成员名可与程

  序中其它变量同名,互不干扰。

  11.3 结构变量成员的表示方法

  在程序中使用结构变量时,往往不把它作为一个整体来使用。在 ANSI C 中除了允许具有

  相同类型的结构变量相互赋值以外,一般对结构变量的使用,包括赋值、输入、输出、运算

  等都是通过结构变量的成员来实现的。

  表示结构变量成员的一般形式是:

  结构变量名.成员名

  例如:

  boy1.num 即第一个人的学号

  boy2.sex 即第二个人的性别

  如果成员本身又是一个结构则必须逐级找到最低级的成员才能使用。

  例如:

  boy1.birthday.month

  即第一个人出生的月份成员可以在程序中单独使用,与普通变量完全相同。

  11.4 结构变量的赋值

  结构变量的赋值就是给各成员赋值。可用输入语句或赋值语句来完成。

  【例 11.1】给结构变量赋值并输出其值。

  main()

  {

  struct stu

  {

  int num;

  char *name;

  char sex;

  float score;

  } boy1,boy2;

  boy1.num=102;

  boy1.name="Zhang ping";

  printf("input sex and score\n");

  scanf("%c %f",&boy1.sex,&boy1.score);

  boy2=boy1;

  printf("Number=%d\nName=%s\n",boy2.num,boy2.name);

  printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);

  }

  本程序中用赋值语句给 num 和 name 两个成员赋值,name 是一个字符串指针变量。用 scanf

  函数动态地输入 sex 和 score 成员值,然后把 boy1 的所有成员的值整体赋予 boy2。最后分

  别输出 boy2 的各个成员值。本例表示了结构变量的赋值、输入和输出的方法。

  11.5 结构变量的初始化

  和其他类型变量一样,对结构变量可以在定义时进行初始化赋值。

  【例 11.2】对结构变量初始化。

  main()

  {

  struct stu /*定义结构*/

  {

  int num;

  char *name;

  char sex;

  float score;

  }boy2,boy1={102,"Zhang ping",'M',78.5};

  boy2=boy1;

  printf("Number=%d\nName=%s\n",boy2.num,boy2.name);

  printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);

  }

  本例中,boy2,boy1 均被定义为外部结构变量,并对 boy1 作了初始化赋值。在 main 函

  数中,把 boy1 的值整体赋予 boy2,然后用两个 printf 语句输出 boy2 各成员的值。

  11.6 结构数组的定义

  数组的元素也可以是结构类型的。因此可以构成结构型数组。结构数组的每一个元素都

  是具有相同结构类型的下标结构变量。在实际应用中,经常用结构数组来表示具有相同数据

  结构的一个群体。如一个班的学生档案,一个车间职工的工资表等。

  方法和结构变量相似,只需说明它为数组类型即可。

  例如:

  struct stu

  {

  int num;

  char *name;

  char sex;

  float score;

  }boy[5];

  定义了一个结构数组 boy,共有 5 个元素,boy[0]~boy[4]。每个数组元素都具有 struct

  stu 的结构形式。对结构数组可以作初始化赋值。

  例如:

  struct stu

  {

  int num;

  char *name;

  char sex;

  float score;

  }boy[5]={

  {101,"Li ping","M",45},

  {102,"Zhang ping","M",62.5},

  {103,"He fang","F",92.5},

  {104,"Cheng ling","F",87},

  {105,"Wang ming","M",58};

  }

  当对全部元素作初始化赋值时,也可不给出数组长度。

  【例 11.3】计算学生的平均成绩和不及格的人数。

  struct stu

  {

  int num;

  char *name;

  char sex;

  float score;

  }boy[5]={

  {101,"Li ping",'M',45},

  {102,"Zhang ping",'M',62.5},

  {103,"He fang",'F',92.5},

  {104,"Cheng ling",'F',87},

  {105,"Wang ming",'M',58},

  };

  main()

  {

  int i,c=0;

  float ave,s=0;

  for(i=0;i<5;i++)

  {

  s+=boy[i].score;

  if(boy[i].score<60) c+=1;

  }

  printf("s=%f\n",s);

  ave=s/5;

  printf("average=%f\ncount=%d\n",ave,c);

  }

  本例程序中定义了一个外部结构数组 boy,共 5 个元素,并作了初始化赋值。在 main 函

  数中用 for 语句逐个累加各元素的 score 成员值存于 s 之中,如 score 的值小于 60(不及格)

  即计数器 C 加 1,循环完毕后计算平均成绩,并输出全班总分,平均分及不及格人数。

  【例 11.4】建立同学通讯录

  #include"stdio.h"

  #define NUM 3

  struct mem

  {

  char name[20];

  char phone[10];

  };

  main()

  {

  struct mem man[NUM];

  int i;

  for(i=0;i

  {

  printf("input name:\n");

  gets(man[i].name);

  printf("input phone:\n");

  gets(man[i].phone);

  }

  printf("name\t\t\tphone\n\n");

  for(i=0;i

  printf("%s\t\t\t%s\n",man[i].name,man[i].phone);

  }

  本程序中定义了一个结构 mem,它有两个成员 name 和 phone 用来表示姓名和电话号码。

  在主函数中定义 man 为具有 mem 类型的结构数组。在 for 语句中,用 gets 函数分别输入各

  个元素中两个成员的值。然后又在 for 语句中用 printf 语句输出各元素中两个成员值。

  11.7 结构指针变量的说明和使用

  11.7.1 指向结构变量的指针

  一个指针变量当用来指向一个结构变量时,称之为结构指针变量。

目录
设置
设置
阅读主题
字体风格
雅黑 宋体 楷书 卡通
字体风格
适中 偏大 超大
保存设置
恢复默认
手机
手机阅读
扫码获取链接,使用浏览器打开
书架同步,随时随地,手机阅读
收藏
听书
听书
发声
男声 女生 逍遥 软萌
语速
适中 超快
音量
适中
开始播放
反馈
章节报错
当前章节
报错内容
提交
加入收藏 < 上一章 回到书页 下一章 > 错误反馈

设为首页加入收藏保存桌面网址发布会员中心留言本

Copyright © 2024-2025 All Rights Reserved