学习C语言的最后一节课了,原因嘛上一章的末尾说过了,其实写这篇博客的时候以后开始学习Java一个多月了,一直因为各种各样的原因没有坚持做到每天一篇学习记录,可能主要因为懒吧....也有点笨,Java的学习挺紧凑的,不努力学的话基本跟不上..所以很多时候回去以后只想躺在床上好好的休息一下..
不多说了开始写今天的内容.今天要学习的是C中的结构,学习的目标是理解并会利用结构去完成自己想要实现的内容.
什么是结构呢?
“结构” 是一种构造数据类型,它是由若干数据项组合而成的复杂数据对象,这些数据项称为结构的成员。
定义结构:
struct structurename [A1]
{
datatype variable2;
...
};
[A1]结构名
[A2]C语言中有效数据类型
[A3]结构成员
要记住:
结构定义并不预留内存
结构定义放置在程序的开始部分,位于头文件声明之后
结构定义仅描述了一个结构的形式。如果要在程序里使用结构,需要声明结构变量。
声明结构变量:
首先定义结构,再声明结构变量
示例:
struct student { int num; char name[20]; char sex; float score; }; struct student student1,student2; II.在定义结构类型的同时声明结构变量 struct student { int num; char name[20]; char sex; float score; }student1,student2; III. 直接声明结构变量 struct student { int num; char name[20]; char sex; float score; }student1,student2;
嵌套结构
struct date { int month; int day; int year; }; |
struct{ int num; char name[20]; char sex; struct date[A1] birthday; float score; }student1,student2; |
[A1]引用date结构
表示结构变量成员的一般形式是:结构变量名.成员名
例如:student1.num、student2.sex、student1.birthday.month
示例:
#include <stdio.h> //定义个描述学生信息的结构体 struct student { int num;//学生学号 char *name; //姓名 char sex;//性别 float score;//分数 }student1,student2;//声明结构体的变量 void test1(); void test2(); void main() { test2(); } void test1(){ //为结构体中的成员赋值:结构体变量名.成员=值; student1.num=1; student1.name="lisi"; student1.sex='F'; student1.score=90; student2=student1; //声明结构体变量并赋值 struct student student3={3,"zhangsan",'M',80}; //访问结构体中成员变量: 结构体变量名.成员 printf("===================================== "); printf("student1的学号为%d ",student1.num); printf("student1的姓名为%s ",student1.name); printf("student1的性别为%c ",student1.sex); printf("student1的分数为%.1f ",student1.score); printf("===================================== "); printf("student2的学号为%d ",student2.num); printf("student2的姓名为%s ",student2.name); printf("student2的性别为%c ",student2.sex); printf("student2的分数为%.1f ",student2.score); printf("===================================== "); printf("student3的学号为%d ",student3.num); printf("student3的姓名为%s ",student3.name); printf("student3的性别为%c ",student3.sex); printf("student3的分数为%.1f ",student3.score); } void test2(){ //声明结构体变量并对其进行初始化 struct student stu1={1,"成龙",'M',88}; struct student stu2={2,"李连杰",'M',98}; struct student stu3={3,"吴京",'M',68}; if(stu1.score<60){ printf("学号:%d 姓名:%s 性别:%c 分数:%.2f ",stu1.num,stu1.name,stu1.sex,stu1.score); } if(stu2.score<60){ printf("学号:%d 姓名:%s 性别:%c 分数:%.2f ",stu2.num,stu2.name,stu2.sex,stu2.score); } if(stu3.score<60){ printf("学号:%d 姓名:%s 性别:%c 分数:%.2f ",stu3.num,stu3.name,stu3.sex,stu3.score); } if(stu1.score>=60&&stu2.score>=60&&stu3.score>=60){ printf("没有挂科的学员! "); } }
结构数组
元素为结构类型的数组称为结构数组。
在实际应用中,经常用结构数组来表示具有相同数据结构的一个群体。例如一个班的学员信息
-
struct student { int num; char* name; char sex; float score; }stu[30];
示例: 计算学员的总成绩,平均成绩和不及格人数
#include <stdio.h> //定义一个结构数组 struct student{ int num; char *name; char sex; float score; }stus[5]={{1,"zhangsan",'M',80},{2,"zhangsan2",'M',88},{3,"zhangsan3",'M',58},{4,"zhangsan4",'M',50},{5,"zhangsan5",'M',80}}; void main() { //计算学员的总成绩,平均成绩和不及格人数 float sum=0,avg; int count=0; int i; for(i=0;i<5;i++){ sum+=stus[i].score;//计算总成绩 if(stus[i].score<60){ count++;//统计不及格人数 } } avg=sum/5;//计算平均成绩 printf("总成绩:%.2f,平均成绩:%.2f,不及格人数:%d人 ",sum,avg,count); }
以上就是今天的内容了,比较少也不全面,主要是我记得的不多了...
往后的内容就会是Java的了,作为一个转行过来的人,要努力学习了,以后我会尽量一天一篇博文,写在这里,提醒自己!