本文最后更新于2022年02月22日,已超过6天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
struct
结构体名
{成员列表};
struct Teacher
struct Worker
struct Date
等结构体类型,各自包含不同的成员struct Date
{ int month; int day; int year; };
struct Student{
int num;
char name[20];
char sex;
int age;
struct Date birthday;
};
// 声明结构体类型
struct Student{
int num;
char name[20];
char sex;
int age;
};
// 定义该类型变量
// 结构体类型名 结构体变量名
struct Student student1,student2;
struct Student{
int num;
char name[20];
char sex;
int age;
}student1,student2;
struct
{成员表列}变量名表列;
指定了一个无名的结构体类型。struct
{
int num;
char name[20];
char sex;
int age;
}student1,student2;
struct Student{
int num;
char name[20];
char sex;
int age;
}student1={2022160123,"Zhang san","男",24},student2;
结构体变量名
.
成员名
student1.name
student2.num = student1.num++;
student2.birthday.day =18;
scanf( "%d" ,&student2.num);
student1.num++
等价于 (student1.num)++
。student2 = student1;
把一个学生的信息(包括学号、姓名、性别、年龄)放在一个结构体变量中,然后输出这个学生的信息。
#include <stdio.h>
void main() {
struct Student {
long int num;
char name[20];
char sex;
int age;
}std = { 10001,"Zhang san",'M',20 };
printf("学号:NO.%ld\n姓名:%s\n性别:%c\n年龄:%d\n",
std.num,std.name,std.sex,std.age);
}
输入两个学生的学号、姓名和成绩,输出成绩较高学生的学号、姓名和成绩
#include <stdio.h>
void main() {
struct Student {
long int num;
char name[20];
float score;
}std1,std2;
printf("请输入学生信息:\n");
// 对于数组输入,scanf_s要定义缓冲区大小,而且name前边不加&,name本身就是地址
scanf_s("%d%s%f", &std1.num, std1.name,21, &std1.score);
scanf_s("%d%s%f", &std2.num, std2.name,21, &std2.score);
if (std1.score > std2.score) {
printf("学号:NO.%ld\n姓名:%s\n成绩:%.2f\n",
std1.num, std1.name, std1.score);
}
else if (std1.score < std2.score) {
printf("学号:NO.%ld\n姓名:%s\n成绩:%.2f\n",
std2.num, std2.name, std2.score);
}
else {
printf("学号:NO.%ld\n姓名:%s\n成绩:%.2f\n",
std1.num, std1.name, std1.score);
printf("学号:NO.%ld\n姓名:%s\n成绩:%.2f\n",
std2.num, std2.name, std2.score);
}
}