一、实验目的
1、掌握结构体类型变量的定义和使用;
2、掌握结构体类型数组的概念和使用;
二、实验内容
结构体
C 语言提供了一种如果用简单变量来分别代表属性,难以反映出他们之间的内在联系数据类型称为结构体。如学生姓名、编号、性别、年龄、各科成绩、 地址等。 他们是同一个处理对象,学生的属性,在这之间,即有字符型、也有长整、短整型、实型等各 种数据类型。例:
Num |
name |
sex |
age |
score |
addr |
10010 |
Li fum |
m |
18 |
88.5 |
beijin |
整型 |
字符型 |
字符 |
整型 |
实型 |
字符型 |
struct student
{ int num;
char name[20];
char sex;
short int age; float score; char addr[30];
}
1. #include "stdio.h" 2. void main() 3. struct student 4. { { int num; 5. char name[20]; 6. char sex; 7. short int age; 8. float score; 9. char addr[30]; 10. } a={10010,"Li fum",'m',18,88.5,"Bei jing"}; 11. printf("num:%d\nname:%s\nsex:%c\nage:%d\nscore:%f\naddr:%s\n",a.num,a.name,a.sex,a.age,a.score,a.addr); 12. }
上面就定义了一个结构体类型, struct 是关键字,结构体类型是 student 。其中有 6 个不同的数据项。
结构体类型不同于基本数据类型的特点: (1)由若干个数据项组成,每个数据项称为一个结构体的成员,也可称为“域”。 (2)结构体类型并非只能有一种,而可以有千千万万。
struct 结构体名
{
成员项表列
};
定义一个结构体类型,并不意味着系统将分配一段内存单元来存放各数据项成员。 因为这仅仅只定义了类型。结构体类型需用户自己定义。
下面是结构体的应用(输出学生的学号、姓名和分数):
1. #include "stdio.h" 2. #define N 5 3. struct student 4. { 5. char num[6]; 6. char name[8]; 7. int score[4]; 8. }stu[N]; 9. void main() 10. { 11. int i,j; 12. void print(struct student stu[N]); 13. for(i=0;i<N;i++) 14. { 15. printf("\n输出学生的分数为:%d\n",i+1); 16. printf("学号:");scanf("%s",stu[i].num); 17. printf("名字:");scanf("%s",stu[i].name); 18. for(j=1;j<4;j++) 19. { 20. printf("分数%d:",j); 21. scanf("%d",&stu[i].score[j]); 22. } 23. printf("\n"); 24. } 25. print(stu); 26. } 27. void print(struct student stu[N]) 28. { 29. int i,j ; 30. printf("\n NO. name score1 score2 score3\n"); 31. for(i=0;i<N;i++) 32. { 33. printf("%5s%1 0s",stu[i] .num,stu[i] .name); 34. for(j=1;j<=3;j++) 35. printf("%9d",stu[i] .score[j]); 36. printf("\n"); 37. } 38. }