网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > C/C++ > 正文
C语言初学者入门讲座 第十二讲 结构(2)
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式

  结构数组

  数组的元素也可以是结构类型的。 因此可以构成结构型数组。结构数组的每一个元素都是具有相同结构类型的下标结构变量。 在实际应用中,经常用结构数组来表示具有相同数据结构的一个群体。如一个班的学生档案,一个车间职工的工资表等。

  结构数组的定义方法和结构变量相似,只需说明它为数组类型即可。例如:

struct stu
{
 int num;
 char *name;
 char sex;
 float score;
}boy;  

  定义了一个结构数组boy1,共有5个元素,boy[0]~boy。每个数组元素都具有struct stu的结构形式。 对外部结构数组或静态结构数组可以作初始化赋值,例如:

struct stu
{
 int num;
 char *name;
 char sex;
 float score;
}boy={
{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};
}

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

  [例7.4]计算学生的平均成绩和不及格的人数。

struct stu
{
 int num;
 char *name;
 char sex;
 float score;
}boy={
{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, 循环完毕后计算平均成绩,并输出全班总分,平均分及不及格人数。

  [例7.5]建立同学通讯录

#include"stdio.h"
#define NUM 3
struct mem
{
 char name[20];
 char phone;
};
main()
{
 struct mem man[NUM];
 int i;
 for(i=0;i<NUM;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<NUM;i++)
 printf("%s\t\t\t%s\n",man[i].name,man[i].phone);
}

  本程序中定义了一个结构mem,它有两个成员name和phone 用来表示姓名和电话号码。在主函数中定义man为具有mem 类型的结构数组。在for语句中,用gets函数分别输入各个元素中两个成员的值。然后又在for语句中用printf语句输出各元素中两个成员值。

  结构指针变量

  结构指针变量的说明和使用一个指针变量当用来指向一个结构变量时, 称之为结构指针变量。

  结构指针变量中的值是所指向的结构变量的首地址。 通过结构指针即可访问该结构变量, 这与数组指针和函数指针的情况是相同的。结构指针变量说明的一般形式为:

  struct 结构名*结构指针变量名

  例如,在前面的例7.1中定义了stu这个结构, 如要说明一个指向stu的指针变量pstu,可写为:

struct stu *pstu;  

  当然也可在定义stu结构时同时说明pstu。与前面讨论的各类指针变量相同,结构指针变量也必须要先赋值后才能使用。赋值是把结构变量的首地址赋予该指针变量, 不能把结构名赋予该指针变量。如果boy是被说明为stu类型的结构变量,则: pstu=&boy是正确的,而: pstu=&stu是错误的。

  结构名和结构变量是两个不同的

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号