结构体定义及一般使用
代码结合注释理解
示例代码1:
#include<stdio.h>
//定义一个结构体
struct Student//一般结构体首字母大写
{
int num;
char name[32];//成员变量一般不赋值
char sex;
int age;
double score;
char address[32];
};//花括号的末尾要加上’;’
struct Day
{
int year;
int month;
int date;
};
int main()
{
return 0;
}
示例代码2:
#include<stdio.h>
#include<string.h>
//定义一个结构体变量并初始化
struct Student //一般结构体首字母大写
{
int num;
char name[32];//成员变量一般不赋值
char sex;
int age;
double score;
char address[32];
};
int main()
{
struct Student stu1;//定义一个结构体变量
struct Student stu2={2,“小昭”,‘g’,18,89.5,“永善县”};//直接大括号初始化
stu1.num=1; //.运算符,用来访问结构体中的成员变量(域)
stu1.sex='b';
strcpy(stu1.name,"张三");
stu1.age=20;
stu1.score=99.5;
strcpy(stu1.address,"昭通");
printf("学号:%d 姓名:%s 性别:%c 年龄:%d 分数:%lf 地址:%s\n",
stu1.num,stu1.name,stu1.sex,stu1.age,stu1.score,stu1.address);
printf("学号:%d 姓名:%s 性别:%c 年龄:%d 分数:%lf 地址:%s",
stu2.num,stu2.name,stu2.sex,stu2.age,stu2.score,stu2.address);
return 0;
}
示例2输出:
小练习:输入两个学生的名字,学号,成绩,输出成绩高的学生的信息
代码如下:
#include<stdio.h>
struct Student
{
int num;
char name[32];
char sex;
int age;
double score;
char address[32];
};
int main()
{
struct Student stu1;
struct Student stu2;
struct Student Max;
puts("请输入学生1的信息:");
scanf("%d %s %c %d %lf %s",
&stu1.num,&stu1.name,&stu1.sex,&stu1.age,&stu1.score,&stu1.address);
puts("请输入学生2的信息:");
scanf("%d %s %c %d %lf %s",
&stu2.num,&stu2.name,&stu2.sex,&stu2.age,&stu2.score,&stu2.address);
/* printf("学号:%d 姓名:%s 性别:%c 年龄:%d 分数:%lf 地址:%s\n",
stu1.num,stu1.name,stu1.sex,stu1.age,stu1.score,stu1.address); */
Max=stu1;
if(stu1.score<stu2.score)
{
Max=stu2;
}
printf("成绩好的学生为:学号:%d 姓名:%s 性别:%c 年龄:%d 分数:%lf 地址:%s\n",
Max.num,Max.name,Max.sex,Max.age,Max.score,Max.address);
return 0;
}
运行结果: