结构体类型变量应用举例

结构体类型变量应用举例现实生活中存在的大部分对象具有不同的属性 需要用不同的数据类型去描述 类如 一个公司员工的信息包括工号 姓名 性别 年龄 工资等 这些属性都是有联系的 因为他们属于同一个员工 为了能够表示同一个对象的多种属性 C 语言给出了另一种构造数据类型

大家好,欢迎来到IT知识分享网。

现实生活中存在的大部分对象具有不同的属性,需要用不同的数据类型去描述。类如,一个公司员工的信息包括工号,姓名,性别,年龄,工资等。这些属性都是有联系的,因为他们属于同一个员工。为了能够表示同一个对象的多种属性,C语言给出了另一种构造数据类型——结构体。利用结构体能够将不同类型的数据组合在一起,用来描述上述具有不同属性的对象,从而解决实际问题。

在程序中使用结构体,首先要对结构体进行定义。定义结构体类型的一般形式为:

struct 结构体名 { 数据类型 成员名1; 数据类型 成员名2; 数据类型 成员名3; ... 数据类型 成员名n; };

“struct”是关键字,是结构体的标志;”结构体名”是用户定义的标识符,要符合C语言的标识符命名规则;各成员的数据类型可以是基本类型,也可以是构造类型。例如:

struct employee { int num; char name[20]; char sex; int age; float salary; };

定义了一个结构体类型,结构体类型名是employee,该结构体由5个成员组成。

定义的结构体类型是一种数据类型。它和系统提供的标准数据类型(如int,char,float,double等)具有相同的地位和作用,只不过结构体类型需要用户自己指定而与,而标准数据类型由系统定义。

说明:

1)结构体类型的定义是程序语句,因此一定注意右花括号后面的分号不能丢。

2)结构体中的成员可以定义成不同的数据类型,他们不是变量,因此成员名可以与程序中其他变量同名,不同结构体中的成员也可以同名。

3)定义结构体类型,只是定义一种和基本类型地位相同的新的数据类型,不是定义的变量。

4)定义好一个结构体类型后,可以将其看作是与int,char,和float等数据类型一样的一个新的数据类型,其中并无具体数据,系统对之也没有分配实际的内存单元。为了能够在程序中使用结构体类型的数据,应当定义结构体类型的变量,并在其中存放具体的数据。

例1.输入一个学生的英语期中和期末成绩,计算并输出平均成绩。

#include<stdio.h> void main() { struct study //定义结构类型,类型名为study { float mid; float end; float average; }english; //定义结构体类型变量english scanf("%f,%f",&english.mid,&english.end); //输入期中,期末成绩 english.average=(english.mid+english.end)/2; //求期中,期末的平均成绩 printf("average=%.1f\n",english.average); //输出所求的平均成绩 }

程序运行情况如下:

如果输入:90.5,80.5

结果如下:average=85.5

例2.建立两个学生的基本情况表,然后将其输出。

#include<stdio.h> #include<string.h> void main() { struct stud //定义结构体类型 ,类型名为stud { int num; char name[20]; char sex; int age; float score; }student1={10001,"Liu",'F',18,75.0},student2; //定义结构体类型变量 student2=student1; //将student1变量中各成员的值逐个赋给student2中的相应成员 student2.num=10002; strcpy(student2.name,"Zhang"); //将字符串复制到student2.name成员中 printf("student1:%d,%s,%c,%d,%.1f\n",student1.num,student1.name,student1.sex,student1.age,student1.score); printf("student2:%d,%s,%c,%d,%.1f\n",student2.num,student2.name,student2.sex,student2.age,student2.score); }

程序运行结果如下:

student1:10001,Liu,F,18,75.0

student2:10002,Zhang,F,18,75.0

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/92173.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信