C++蓝桥等考导学/十六级:结构体&指针/之一:(13)结构体

一、观看视频

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】甲流病人初筛