目录
1;数组
数组的声明
数组初始化
访问数组元素
2:结构体
结构体的定义
结构体变量的初始化
3:结构体数组
1;数组
数组的声明
C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。
数组的声名不是一个个单独的变量的声明,而是声明一个数组变量。
所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。
num[0] num[1] num[2] .....
数组中的个体可以通过索引访问,即上面代码段上的num[i]。
数组声明的要指定元素的类型和元素的数量
type arrayName [ arraySize ];
其中type可以是任意有效的C语言数据类型,如int char float等。
int stu[10];
这样就定义了一个可容纳10个类型为1int的数据。
数组初始化
C语言的数组可以逐一初始化,也可以使用一个初始化语句。
int stu[4]={1,2,3,4};
其中数组的数量数据可以省略,则默认为初始化数组的数量的大小。
int stu[]={1,2,3,4};
访问数组元素
数组元素的下标是从0开始的,即第一个数据为stu[0];
可以借组循环语句访问数组的各个元素:
#includeint main() { int num[5]={2,3,4,5,6}; for(int i=0;i<5;i++) printf("num[%d]=%d\n",i,num[i]); return 0; }
输出结果为:
num[0]=2 num[1]=3 num[2]=4 num[3]=5 num[4]=6
以上简单的介绍了数组的概念。
2:结构体
前面提到,C语言数组可以储存相同类型的数据,而结构体允许用户储存不同类型的数据。
结构体的成员可以是基本的C语言数据类型(int char float等),也可以是指针等。
结构体的定义
struct tag { member-list member-list member-list ... } variable-list ;
结构体定义用关键字struct和结构名组成,
tag是结构名,member-list 是标准的变量定义,variable-list 结构变量,定义在结构的末尾,最后一个分号之前,您可以指定一个或多个结构变量。
struct students{ int age; cahr name; int num; }stu;
在一般情况下,tag、member-list、variable-list 这 3 部分至少要出现 2 个。
#includestruct stu{ int age; cahr name; int num; }; //结构体的声明 int main() { struct stu s[10]; //结构体变量的定义,将是s[10]定义为stu类型。 return 0; }
结构体声明之后,还要进行定义变量。
结构体变量的初始化
和其它类型变量一样,对结构体变量可以在定义时指定初始值。
#includestruct students{ int age; char name[10]; int num; }student={18,"liudage",2}; int main() { printf("%d %s %d",student.age,student.name,student.num); return 0; }
输出结果为:
18 liudage 2
3:结构体数组
结构体和数组经常放在一起解决实际问题,如输入学生信息并筛选。
要求储存学生的年龄,性别,学号,姓名,并进行筛选。
#includestruct student{ int sno,ssex,sage; char sname[20]; }stu[5]={ {1,'M',18,"liuyifeng"}, {2,'M',20,"liuerfeng"}, {3,'W',20,"liusanfeng"}, {4,'M',14,"liusifeng"}, {5,'M',20,"liuwifeng"} }; //结构体的声明于初始化。 int main() { int i,j; for(i=0;i<5;i++) { if(stu[i].sage>=18) { if(stu[i].ssex=='M') { printf("学号:%d\n性别:%c\n年龄:%d\n姓名:%s\n\n",stu[i].sno,stu[i].ssex,stu[i].sage,stu[i].sname); } } } return 0; }
其次就是要求用户输入学生信息与筛选信息,并进行筛选输出,代码比较简单,所以用户比较忙,得一个一个输入按回车键。
#includeint main() { struct students{ int sno; char sname[20]; int ssex; int sage; }; int i,j; struct students stu[5]; for(i=0;i<5;i++) { j=i+1; printf("请输入第%d位同学的信息\n",j); printf("请输入学生的学号:"); scanf("%d",&stu[i].sno); printf("请输入学生的姓名:"); scanf("%s",&stu[i].sname); printf("请输入学生的性别(1表示男,0表示女):"); scanf("%d",&stu[i].ssex); printf("请输入该生的年龄:"); scanf("%d",&stu[i].sage); } int n,m; printf("请输入筛选信息\n请输入学生性别\n"); scanf ("%d",&n); printf("请输入年龄信息\n"); scanf("%d",&m); int b,c; for(b=0;b<5;b++) { c=stu[b].ssex; if(c==n) { c=stu[b].sage; if(c>=m) { printf("筛选结果为:\n"); printf("学号:%d\n",stu[b].sno); printf("性别:%d\n",stu[b].ssex); printf("年龄:%d\n",stu[b].sage); printf("姓名:%s\n",stu[b].sname); } } } return 0; }
完。