一、观看视频
【01】结构体
二、研读学生讲义
【学生讲义】【01】结构体
三、练习题(不清楚回头查看有关视频或讲义)
【01】有关结构体与数组的描述,错误的是:①结构体与数组类似,不是一种数据类型,而是一种数据组织形式。
②在声明数组变量之前,无需定义一个数组,但在声明结构体变量之前,一定要先定义该结构体。
③结构体与数组一样,要求每个元素的类型都要相同。
④结构体的关键字是struct,定义时其后跟着的是结构体类型名(为了与变量名区别,一般使用首大写字母)。
⑤即使结构体中只有一个项目,也不能省略一对花括号“{}”,并且第二个花括号后,可以有变量列表,也可以没有,但一定要有分号(;)。
【02】有关结构体与结构体变量的定义方式,错误的是:
①在定义结构体变量之前,一定要声明结构体。
②可以先定义结构体,然后把结构体类型名作为一种数据类型定义结构体变量。
③结构体变量可以直接跟着结构体定义的第二个花括号“}”之后而被定义。
④结构体是可以匿名的,使用匿名结构体时,需要按③的方式定义结构体变量,否则定义的结构体无法使用。
【03】有关结构体和结构体变量的运行特性,下面错误的是:
①定义结构体变量时,结构体变量名和结构体类型名不能相同。
②定义结构体时,系统不分配实际内存。
③定义结构体时,系统要为结构体分配实际内存。
④定义结构体变量是,系统按结构体的规定为这个结构体变量分配实际内存。
【04】编程
【05】编程【06】有关结构体的嵌套,下面的代码片段错误的是:
①
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
#include<iostream>#include<cstring>using namespace std;struct Date{ int year; int month; int day;};struct Person{ char name[11]; Date birthday; };int main(){ Person p; strcpy(p.name, "Xiaozhi"); p.birthday.year = 2017; p.birthday.month = 12; p.birthday.day = 8; cout << p.name << ' ' << p.birthday.year << ' ' << p.birthday.month << ' ' << p.birthday.day << endl; return 0;}
②
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
#include<iostream>#include<cstring>using namespace std;struct Person{ char name[11]; struct Date { int year; int month; int day; }; Date birthday; };int main(){ Person p; strcpy(p.name, "Xiaozhi"); p.birthday.year = 2017; p.birthday.month = 12; p.birthday.day = 8; cout << p.name << ' ' << p.birthday.year << ' ' << p.birthday.month << ' ' << p.birthday.day << endl; return 0;}
③
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
#include<iostream>#include<cstring>using namespace std;struct Person{ char name[11]; Date birthday; };struct Date{ int year; int month; int day;};int main(){ Person p; strcpy(p.name, "Xiaozhi"); p.birthday.year = 2017; p.birthday.month = 12; p.birthday.day = 8; cout << p.name << ' ' << p.birthday.year << ' ' << p.birthday.month << ' ' << p.birthday.day << endl; return 0;}
④
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
#include<iostream>#include<cstring>using namespace std;struct Person{ char name[11]; struct { int year; int month; int day; }birthday; };int main(){ Person p; strcpy(p.name, "Xiaozhi"); p.birthday.year = 2017; p.birthday.month = 12; p.birthday.day = 8; cout << p.name << ' ' << p.birthday.year << ' ' << p.birthday.month << ' ' << p.birthday.day << endl; return 0;}
【07】有关机构体初始化,错误的是:
①
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
#include<iostream>#include<cstring>using namespace std;struct Student{ char name[11]; int chinese; int math; int total;}a = {"Xiaozhi", 90, 90, 180};int main(){ cout << a.name << ' ' << a.chinese << ' ' << a.math << ' ' << a.total << endl; return 0;}
②
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
#include<iostream>#include<cstring>using namespace std;struct Student{ char name[11]; int chinese; int math; int total;}a = { name="Xiaozhi", chinese=90, math=90, total=180; };int main(){ cout << a.name << ' ' << a.chinese << ' ' << a.math << ' ' << a.total << endl; return 0;}
③
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
#include<iostream>#include<cstring>using namespace std;struct Student{ char name[11]; int chinese; int math; int total;};int main(){ Student a = {"xiaoming", 90, 80, 170}; cout << a.name << ' ' << a.chinese << ' ' << a.math << ' ' << a.total << endl; return 0;}
【08】有关结构体变量赋值的描述,错误的是:
①结构体变量可以像数组一样初始化,也像数组一样不能直接赋值。
②结构体变量和其他变量一样都可以直接赋值。
③结构体变量可以通过临时中间变量进行交换。
④结构体变量可以通过swap函数进行交换。【09】OpenJudge练习
【OpenJudge-1.12-03】甲流病人初筛