1.为什么要用结构体?——>可以用来表示多个不同类型为一个结构体、比如学生信息
对比于数组——>数组的类型要相同
定义一个结构体——>结构体为模板不赋值
struct Student //struct作用是告知系统是一个结构体 Student中的S开头要大写
{
int num;
char name[32];
char sex;
int age;
double score;
char addr[32];
};//分号要加
1.2定义结构体和使用变量
int a;
int 相当于结构体的struct Student
a相当于给结构体定义一个变量名stu1、stu2
a = 10;
在结构体中赋值相当于stu1.num = 1;
#include "stdio.h"
#include "string.h"
struct Student
{
int num;
char name[32];
char sex;
int age;
double score;
char addr[32];
};
int main()
{
int a;
struct Student stu1;
struct Student stu2;
a = 10;
stu1.num = 1;//点是运算符来访问结构体中的成员变量(域)
stu1.age = 10;
stu1.score = 98.5;
strcpy(stu1.name,"aabbccdd");
strcpy(stu1.addr,"福州");
printf("学号:%d,年龄:%d,分数:%lf,名字:%s,地址:%s",stu1.num,stu1.age,stu1.score,stu1.name,stu1.addr);
return 0;
}
1.3小应用直接初始化: struct Student stu2 = {2,”张三“,‘g’,17,98.5,"北京"};
例:输入两个学生的名字,学号,成绩,输出成绩高的学生的信息
方法一:if-else判断两个同学哪个成绩好
#include "stdio.h"
#include "string.h"
struct Student
{
int num;
char name[32];
char sex;
int age;
double score;
char addr[32];
};
int main()
{
int a;
struct Student stu1;
struct Student stu2 ={2,"张三",'g',17,99.5,"北京"};
a = 10;
stu1.num = 1;
stu1.age = 10;
stu1.score = 98.5;
strcpy(stu1.name,"chenlichen");
strcpy(stu1.addr,"福州");
//方法一:利用if-else的方法比较两个同学的成绩
if(stu1.score < stu2.score)
{
printf("成绩比较好的是:n");
printf("学号:%d,年龄:%d,分数:%lf,名字:%s,地址:%sn",
stu2.num,stu2.age,stu2.score,stu2.name,stu2.addr);
}
else
{
printf("成绩比较好的是:n");
printf("学号:%d,年龄:%d,分数:%lf,名字:%s,地址:%sn",
stu1.num,stu1.age,stu1.score,stu1.name,stu1.addr);
}
return 0;
}
方法二:利用max变量进行程序优化
#include "stdio.h"
#include "string.h"
struct Student
{
int num;
char name[32];
char sex;
int age;
double score;
char addr[32];
};
int main()
{
int a;
struct Student stu1;
struct Student stu2 ={2,"张三",'g',17,99.5,"北京"};
struct Student max;//定义一个变量存放最大成绩
a = 10;
stu1.num = 1;
stu1.age = 10;
stu1.score = 98.5;
strcpy(stu1.name,"chenlichen");
strcpy(stu1.addr,"福州");
max = stu1;//比较之前默认等于stu1
if(stu1.score < stu2.score)
{
max = stu2;//如果stu2大于stu1改变输出时候的变量
}
printf("成绩比较好的是:n");
printf("学号:%d,年龄:%d,分数:%lf,名字:%s,地址:%sn",
max.num,max.age,max.score,max.name,max.addr);//输出时候用max替代变量
return 0;
}
1.4结构体和数组的结合
int arr [3] = {1,2,3}; //普通定义3个整形函数
前面说过int就相当于struct Student
struct Student arr2[3] = {
{2,"张三",'g',17,99.5,"北京"},
{3,"李四",'m',18,89.2,"上海"},
{4,"王五",'f',19,100,"内蒙"}
};每一项都是结构体可以不同的类型
#include "stdio.h"
#include "string.h"
//结构体
struct Student
{
int num;
char name[32];
char sex;
int age;
double score;
char addr[32];
};
int main()
{
int arr[3] = {1,2,3};
int len; //存放计算数组的长度的值
int i;
struct Student arr2[3] = {
{2,"张三",'g',17,99.5,"北京"},
{3,"李四",'m',18,89.2,"上海"},
{4,"王五",'f',19,100,"内蒙"}
};//定义一个结构体数组
len = sizeof(arr2)/sizeof(arr2[0]);//计算数组长度
for(i=0;i



