结构体和共用体习题

结构体和共用体习题
结构体和共用体习题

习题六

1. 从下列四个选项中选择一个正确的填入括号中。

(1)在说明一个结构体变量时系统分配给它的存储空间是( D)。

A该结构体中第一个成员所需存储空间

B该结构体中最后一个成员所需存储空间

C该结构体中占用最大存储空间的成员所需存储空间

D该结构体中所有成员所需存储空间的总和

(2)在说明一个共用体变量时系统分配给它的存储空间是(D )。

A该共用体中第一个成员所需存储空间

B该共用体中最后一个成员所需存储空间

C该共用体中占用最大存储空间的成员所需存储空间

D该共用体中所有成员所需存储空间的总和

(3)共用体类型在任何给定时刻, ( B)。

A所有成员一直驻留在内存中

B只有一个成员驻留在内存中

C部分成员驻留在内存中

D没有成员驻留在内存中

(4)以下定义结构体类型的变量st1,其中不正确的是(A )

A typedef stuct student

{

int num;

int age;

}STD;

STD st1;

B struct student

{

int num,age;

}st1;

C struct

{

int num;

float age;

}st1;

D struct student

{

int num;

int age;

};

struct student st1;

(5)已知职工记录描述为:

struct workers

{

int no;

char name[20];

char sex;

struct

{

int day;

int month;

int year;

}birth;

};

struct workers w;

设变量w中的”生日”应是”1993年10月25日”,下列对”生日”的正确赋值方式是( C)。

A day=25; month=10; year=1993;

B ==10; =1993;

C =25; =10; =1993;

(6)设有如下定义:

struct sk

{

int a;

float b;

}data,*p;

若有p=&data;则对data中的a成员的正确引用是( B)。

A (*p).

B (*p).a

C p->

D 填空

(1)若有以下说明和定义且数组w和变量k已正确赋值,则对w数组中第k个元素中各成员的正确引用形式是 w[k-1].b、 w[k-1].c 、 w[k-1].d 。

struct aa

{

int b;

char c;

double d;

};

struct aa w[10];

int k=3;

(2)若有以下说明和定义,则对成员的另外两种引用形式是 x->b-> 和 . 。

struct st

{

int a;

struct st *b;

}*p, x;

p=&x;

3.阅读下面程序,写出运行结果。

(1),ffffffcc

#include <>

main( )

{

struct byte

{

int x;

char y;

};

union

{

int i[2];

long j;

char m[2];

struct byte d;

}r,*s=&r;s->j=0x;

printf("%x,%x\n",s->,s->;

}

(2)结果:1,minicomputer

#include <>

struct tree

{

int x;

char *s;

}t;

func(struct tree t )

{

=10;

="computer";

return(0);

}

main()

{

=1;

="minicomputer";

func(t);

printf("%d,%s\n",,;

}

#include <>..................................................结果:.0,

struct tree

{

int x;

char *s;

}t;

func(struct tree t )

{

=10;

="computer";

return(0);

}

main()

{

编写程序输入一个学生记录, 记录包含学号、姓名、性别和成绩信息,从键盘输入这

些数据,并且显示出来。

#include<>

struct student

{

int no;

char name[20];

char sex[2];

float score;

}stu1;

main()

{

printf("*********请输入该学生的学号、姓名、性别和成绩:\n");

scanf("%d %s %s %f",&,,,&;

printf("学号:%d\n 姓名:%s\n 性别:%s\n 成绩:%f\n",,,,;

}

/*5.有若干运动员,每个运动员包括编号、姓名、性别、年龄、身高、体重。如果性别为男,参赛项目为长跑和登山;

如果性别为女,参赛项目为短跑、跳绳。用一个函数输入运动员信息,用另一个函数输出运动员的信息

,再建立一个函数求所有参赛运动员每个项目的平均成绩。*/

#include<>

#include<>

char items1[2]={'长跑','登山'};

char items2[2]={'短跑','跳绳'};

void InputAthInfo();

void outputAthInfo();

void items_Avg();

struct athlete

{

int num;

char name[10];

char sex;

int age;

float height;

float weight;

char items[2];

}ath[2];

void InputAthInfo()

{

int i;

for( i=0;i<2;i++)

{

printf("请输入第%d个运动员的信息:",i);

scanf("编号:%d\n 姓名:%s\n 性别: %c\n 年龄:%d\n 身高: %f\n 体重:%f\n ",&ath[i].num ,ath[i].name,ath[i].sex,&ath[i].age,&ath[i].height,&ath[i].weight);

}

}

void outputAthInfo()

{ int j;

printf("编号\t 姓名\t 性别\t 年龄\t 身高\t 体重\t 项目\n" );

for(j=0;j<2;j++)

{

if(ath[j].sex=='m'||ath[j].sex=='M')

strcpy(ath[j].items ,items1);

else

strcpy(ath[j].items,items2);

um,ath[j].name,ath[j].sex,ath[j].age,ath[j].height,ath[j].weight,ath[j].item

s[0],ath[j].items[1]);

}

}

void items_Avg()

{

int i;

float sum1=0,sum2=0,avg1,avg2;

for(i=0;i<2;i++)

{

sum1+=ath[i].items[0];

avg1=sum1/2;

sum2+=ath[i].items[1];

avg2=sum2/2;

}

printf("%-3f%-3f",avg1,avg2);

}

void main()

{

void InputAthInfo();

void outputAthInfo();

void items_Avg();

}

6.一个班有30名学生,每个学生的数据包括学号、姓名、性别、及2门课的成绩,现从键盘上输入这些数据,并且要求:

(1) 输出每个学生2门课的平均分。

(2) 输出每门课的全班平均分。

(3) 输出姓名为”zhangliang”的学生的2门课的成绩。

/*6.一个班有30名学生,每个学生的数据包括学号、姓名、性别、及2门课的成绩,现从

键盘上输入这些数据,并且要求:

(1) 输出每个学生2门课的平均分。

(2) 输出每门课的全班平均分。

(3) 输出姓名为”zhangliang”的学生的2门课的成绩。*/

#include<>

#include<>

#define N 2

void Input_Info();

void score_avg();

void everyStu_avgScore();

void score_zhangliang();

void main()

{

Input_Info();

score_avg();

everyStu_avgScore();

score_zhangliang();

}

struct student

{

int no;

char name[20];

char sex[2];

float score1;

float score2;

}stu[N];

void Input_Info()

{

int i;

printf("*************输入该班所有人的信息:(学号、姓名、性别、数学成绩、英语成绩,并用空格隔开)\n");

o,stu[i].name,stu[i].sex,&stu[i].score1,&stu[i].score2);

}

}

void everyStu_avgScore()core1+stu[i].score2)/2;

for(i=0;i

printf("第%d个学生的两门课平均分为%\n",i,oneself_avg[i]);

}

void score_avg()core1;

sum2+=stu[i].score2;

}

avg1=(sum1)/2;

avg2=(sum2)/2;

printf("该班的数学平均成绩为%,英语平均分为%\n",avg1,avg2);

}

void score_zhangliang()ame=="zhangliang")

core1,stu[i].score2 );

}

}

7. 定义枚举类型money,用枚举元素代表人民币的面值。包括1,2,5分;1,2,5角,1,2,5,10,50,100元。

enum money

{

fen1,fen2,fen5,jiao1,jiao2,jiao5,yuan1,yuan2,yuan5,yuan10,yuan20,yuan50,yuan 100

}

结构体与共用体小结

结构体与共用体小结 一,结构体得概念与定义 1,结构体得定义 struct 结构体名 { 数据类型成员名1; 数据类型成员名1; 、、、 }; 这里数据类型可以就是复合类型,例如又就是一个结构体类型,即嵌套; 2,结构体变量得定义 struct 结构体名变量名1,变量名2,,,变量名n; 或: struct 结构体名 { 数据类型成员名1; 数据类型成员名1; 、、、 }结构体变量1,结构体变量2;

或: struct { 数据类型成员名1; 数据类型成员名1; 、、、 }结构体变量1,结构体变量2; 三种方式,第三种方式得话,每次要定义这个类型得结构体变量都要重复得写这一段代码; 其实定义了结构体后,struct 结构体名就就是一种新得类型,上述语句就像声明变量一样; 3,结构体变量得引用 只能对结构体变量中得各个成员分别输出,不能对一个结构体变量作为一个整体输出; 嵌套得结构体类型得引用: 结构体变量名、结构体类型成员名、内嵌结构体得成员名; 4,结构体变量得初始化 struct 结构体名变量名= {初始化数据};

或者在定义得时候就初始化: struct 结构体名 { 数据类型成员名1; 数据类型成员名1; 、、、 }变量名= {初始化数据}; 二,结构体数组 1,结构体数组得定义举例struct stu { int stu_nu; char name[20]; float score; }; struct stu student[5]; 或者: struct stu { int stu_nu;

char name[20]; float score; }student[5]; 或者: struct { int stu_nu; char name[20]; float score; }student[5]; 跟定义结构体变量得三种形式就是一样得,只不过这里每次定义得结构体变量就是一个数组;每一个student[i]都就是struct stu类型得; 2,结构体数组得初始化与引用 略; 三,结构体与指针 1,指向结构体得指针得定义,同上,也就是三种形式; struct employees employee1,*p1; 或者: struct employees

结构体和共用体习题

习题六 1. 从下列四个选项中选择一个正确的填入括号中。 (1)在说明一个结构体变量时系统分配给它的存储空间是(D)。 A该结构体中第一个成员所需存储空间 B该结构体中最后一个成员所需存储空间 C该结构体中占用最大存储空间的成员所需存储空间 D该结构体中所有成员所需存储空间的总和 (2)在说明一个共用体变量时系统分配给它的存储空间是(D )。 A该共用体中第一个成员所需存储空间 B该共用体中最后一个成员所需存储空间 C该共用体中占用最大存储空间的成员所需存储空间 D该共用体中所有成员所需存储空间的总和 (3)共用体类型在任何给定时刻, (B)。 A所有成员一直驻留在内存中 B只有一个成员驻留在内存中 C部分成员驻留在内存中 D没有成员驻留在内存中 (4)以下定义结构体类型的变量st1,其中不正确的是(A ) A typedef stuct student { int num; int age; }STD; STD st1; B struct student { int num,age; }st1; C struct { int num; float age; }st1; D struct student { int num; int age; }; struct student st1; (5)已知职工记录描述为: struct workers {

int no; char name[20]; char sex; struct { int day; int month; int year; }birth; }; struct workers w; 设变量w中的”生日”应是”1993年10月25日”,下列对”生日”的正确赋值方式是(C)。 A day=25; month=10; year=1993; B w.day=25w.month=10; w.year=1993; C w.birth.day=25; w.birth.month=10; w.birth.year=1993; D birth.day=25; birth.month=10; birth.year=1993; (6)设有如下定义: struct sk { int a; float b; }data,*p; 若有p=&data;则对data中的a成员的正确引用是(B)。 A (*p).data.a B (*p).a C p->data.a D p.data.a 2.填空 (1)若有以下说明和定义且数组w和变量k已正确赋值,则对w数组中第k个元素中各成员的正确引用形式是w[k-1].b、w[k-1].c 、w[k-1].d 。 struct aa { int b; char c; double d; }; struct aa w[10]; int k=3; (2)若有以下说明和定义,则对x.b成员的另外两种引用形式是x->b-> 和p.b. 。 struct st { int a; struct st *b; }*p, x;

结构体和共用体

第十一章结构体和共用体 11.1 本章基本知识结构 11.2 知识难点解析 1.结构体与共用体变量在计算机中占用多少内存? [解答] 结构体变量所占的内存长度等于所有各成员的长度之和,每个成员分别占有自己的内存单元;共用体变量所占的内存长度等于最长的成员的长度。 2.结构体和共用体的有几种不同的引用方法? [解答] 结构体和共用体一样,有两种引用办法,一种是采用成员(分量)运算符“.”;还有一种是采用指针的办法。下面以结构体为例说明这两种不同的引用的方法。 struct stu {int num; char name[10]; int age; } zhangsan, *lisi; 要访问学生zhangsan年龄的办法有两种:zhangsan.age 或者(&zhangsan) —>age; 要访问学生lisi年龄的办法也有两种:(*lisi).age 或者lisi—>age。

11.3 习题 1.选择题 (1).以下程序运行的输出结果是( )。 main() {union {char i[2]; int m; }r; r.i[0]=2;r.i[1]=0; printf("%d\n",r.m); } A.2 B.1 C.0 D.不确定 [分析、解答] 答案为A。本题涉及共用体的概念。字符数组i[2]与整型变量m使用同一内存单元。M占用2个字节,高字节对应i[1],低字节对应i[0],所以答案为A。 (2).有以下程序输出结果是( )。 #include struct stu {int num; char name[10]; int age; }; void fun(struct stu *p) {printf("%s\n",(*p).name);} main() {struct stu students[3]= {{9801,"zhang",20},{9802,"Wang",19},{9803,"zhao",18}}; fun(students+2);} A.Zhang B.Zhao C.Wang D.18 [分析、解答]答案为B。在main函数中,定义结构体类型数组student[3],并赋初值。即student[0]={9801,〞zhang〞,20}, student[1]={9802, 〞wang〞,19}, student[2]={9803, 〞zhao〞,18}, 调用子函数fun,实参“student+2”为student[2]的首地址,则p指向student[2]的首地址,(*p).name即“zhao”。 (3).有下列程序输出结果是( )。 #include main() {union {int k; char i[2]; }*a,b;

C程序实验报告十 结构体与共用体

实验10 结构体与公用体 1.实验目的、要求 (1)掌握结构体类型变量的定义和使用。 (2)掌握结构体类型数组的概念和使用。 (3)掌握公用体的概念与使用。 2.实验内容 (1)输入程序并运行,观察运行结果 #include “stdio.h” int main( ) { struct cmplx { int x; int y; } cnum[2]={1 , 3 , 2 , 7}; printf(“%d\n”, cnum[0].y / cnum[0].x * cnum[1].x ); return(0); } 运行此程序:按F2保存源程序,按F9完成一次编译连接,无提示错误,按任意键返回源程序行,按ctrl+F9运行,按alt+F5看结果,结果显示:6 (2)输入程序并运行,观察运行结果 union ks { int a; int b; }; union ks s[4]; union ks *p; #include “stdio.h” int main( ) { int n=1, i; printf(“\n”); for(i=0;i<4;i++) { s[i].a=n; s[i].b=s[i].a+1; n=n+2; } p=&s[0]; printf(“%d,”,p->a); printf(“%d” ,++ p->a); return(0); } 运行此程序:按F2保存源程序,按F9完成一次编译连接,无提示错误,按ctrl+F9运行,按任意键返回源程序行,按alt+F5看结果,结果显示:23 (3)编写程序 有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求打印出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩、平均分数)。要求用input 函数输入10个学生数据;用average函数求总平均分;用

c语言结构体与共用体之间的区别

https://www.360docs.net/doc/2215669021.html,/2005/03/25/12365.html 所谓共用体类型是指将不同的数据项组织成一个整体,它们在内存中占用同一段存储单元。其定义形式为: union 共用体名 {成员表列}; 7.5.1 共用体的定义 union data { int a ; float b ; d o u b l e c ; c h a r d ; } obj; 该形式定义了一个共用体数据类型union data ,定义了共用体数据类型变量o b j。共用体 数据类型与结构体在形式上非常相似,但其表示的含义及存储是完全不同的。先让我们看一个小例子。 [例7 - 8 ] union data /*共用体* / { int a; float b; double c; char d; } m m ; struct stud /*结构体* / { int a; float b; double c; char d; } ; m a i n ( ) { struct stud student printf("%d,%d",sizeof(struct stud),sizeof(union data)); } 程序的输出说明结构体类型所占的内存空间为其各成员所占存储空间之和。而形同结构体的

共用体类型实际占用存储空间为其最长的成员所占的存储空间。详细说明如图7 - 6所示。 对共用体的成员的引用与结构体成员的引用相同。但由于共用体各成员共用同一段内存 空间,使用时,根据需要使用其中的某一个成员。从图中特别说明了共用体的特点,方便程序设计人员在同一内存区对不同数据类型的交替使用,增加灵活性,节省内存。 7.5.2 共用体变量的引用 可以引用共用体变量的成员,其用法与结构体完全相同。若定义共用体类型为: union data /*共用体* / { int a; float b; double c; char d; } m m ; 其成员引用为:m m . a , m m . b , m m . c , m m . d 但是要注意的是,不能同时引用四个成员,在某一时刻,只能使用其中之一的成员。 [例7-9] 对共用体变量的使用。 m a i n ( ) { union data { int a; float b; double c; char d; } m m ; m m . a = 6 ; printf("%d\n",mm.a); m m . c = 6 7 . 2 ; p r i n t f ( " % 5 . 1 l f \ n " , m m . c ) ; m m . d = ' W ' ; m m . b = 3 4 . 2 ; p r i n t f ( " % 5 . 1 f , % c \ n " , m m . b , m m . d ) ; }

结构体与共用体

试卷编号:825 所属语言:C语言 试卷方案:结构体与共用体 试卷总分:90分 共有题型:5种 一、填空共5题(共计10分) 第1题(2.0分)题号:205 结构体是不同数据类型的数据集合,作为数据类型, 必须先说明结构体【1】,再说明结构体变量. 答案: =======(答案1)======= 类型 第2题(2.0分)题号:208 将函数funl 的入口地址赋给指针变量p的语句是【1】. 答案: =======(答案1)======= p=funl; 第3题(2.0分)题号:232 设有以下结构类型说明和变量定义,则变量a在内存所占字节数是【1】 . struct stud { char num[6]; int s[4]; double ave; } a,*p; 答案: =======(答案1)=======

第4题(2.0分)题号:345 若在程序中用到"strlen()"函数时,应在程序开头写上包含命令# include "【1】". 答案: =======(答案1)======= string.h 第5题(2.0分)题号:803 预处理命令行都必须以【1】号开始. 答案: =======(答案1)======= # 二、单项选择共20题(共计40分) 第1题(2.0分)题号:464 以下描述中,正确的是()。 A:预处理是指完成宏替换和文件包含中指定的文件的调用 B:预处理指令只能位于C源文件的开始 C:C源程序中凡是行首以#标识的控制行都是预处理指令 D:预处理就是完成C编译程序对C源程序第一遍扫描,为编译词法和语法分析作准备答案:C 第2题(2.0分)题号:472 下列程序运行结果为: #define P 3 #define S(a) P*a*a main() {int ar; ar=S(3+5); printf("\n%d",ar); } A:192 B:29

结构体与联合体习题含答案

2013年结构体与联合体习题 选择题 1、若程序中有以下的说明和定义: struct abc { int x;char y; } 花括号后少了分号。 struct abc s1,s2; 则会发生的情况是______。 A) 编译时错B) 程序将顺序编译、连接、执行 C) 能顺序通过编译、连接、但不能执行D) 能顺序通过编译、但连 接出错 2、有以下程序段 struct st { int x; int *y;}*pt; int a[]={1,2};b[]={3,4}; struct st c[2]={10,a,20,b}; pt=c; 以下选项中表达式的值为11的是 A) *pt->y B) pt->x C) ++pt->x D) (pt++)->x 3、有以下说明和定义语句 struct student { int age; char num[8];}; struct student stu[3]={{20,"200401"},{21,"200402"},{19,"200403"}}; struct student *p=stu; 以下选项中引用结构体变量成员的表达式错误的是______。 A) (p++)->num B) p->num C) (*p).num D) stu[3].age 4、设有如下枚举类型定义 enum language {Basic=3,Assembly=6,Ada=100,COBOL,Fortran}; 枚举量Fortran的值为______。 A) 4 B) 7 C) 102 D) 103 5、以下叙述中错误的是_________。 A)可以通过typedef增加新的类型 B)可以用typedef将已存在的类型用一个新的名字来代表 C)用typedef定义新的类型名后,原有类型名仍有效 D)用typedef可以为各种类型起别名,但不能为变量起别名 6、有以下程序段 typedef struct NODE

C语言结构体共用体选择题(新)

1、变量a所占的内存字节数是________。(假设整型int为4字节)struct stu { char name[20]; long int n; int score[4]; } a ; A) 28 B) 30 C) 32 D) 46 C 2、下列程序的输出结果是 A)5 B)6 C)7 D)8 struct abc {int a,b,c;}; main() {struct abc s[2]={{1,2,3},{4,5,6}};int t; t=s[0].a+s[1].b; printf("%d\n",t); } B 3、有如下定义 struct person{ char name[9]; int age;}; struct person calss[4]={ "Johu",17, "Paul",19, "Mary",18, "Adam",16,}; 根据以上定义,能输出字母M的语句是________。 A) printf("%c\n",class[3].name); B) printf("%c\n",class[3].name[1]); C) printf("%c\n",class[2].name[1]); D) printf("%c\n",class[2].name[0]); D 4、以下程序的输出是________。 struct st {int x;int *y;} *p; int dt[4]={10,20,30,40}; struct st aa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,dt[0],}; main() { p=aa; printf("%d\n",++(p->x));

第6章-结构体与共用体

一、判断题 1. 结构体的定义不为它分配具体的内存空间。 答案:T 2. C++语言结构体类型变量在程序执行期间,所有成员驻留在内存中。 答案:T 3. 一个共用体变量中可以同时存放其所有成员。 答案:F 4. 若有定义union dt{int a; char b; double c;}data;,变量data所占的内存字节数与成员c所占字节数相等。 答案:F 5. 用typedef可以增加新类型。 答案:F 6. 共用体类型数据中所有成员的首地址都是同一地址。 答案:T 7. 可以用已定义的共用体类型来定义数组或指针变量的类型。 答案:T 8. 共用体类型数据中的成员可以是结构体类型,但不可以是共用体类型。 答案:F 9. 可以对共用体变量直接赋值。 答案:F 二、选择题 1. 下面关于结构体概念的叙述中,正确的说法是()。 A. 相同类型数据的集合称为结构体 B. 不同类型数据的集合称为结构体 C. 数据的集合称为结构体 D. 整数的集合称为结构体 答案:C 2. 设有以下说明语句: struct abc { int m; float n; }stype; 则下面错误的叙述是()。

A. struct是定义结构体类型的关键字 B. stype是结构体类型名 C. m和n都是结构体成员名 D. stype是结构体变量名 答案:B 3. 以下对枚举类型ee的定义中,正确的定义是()。 A. enum ee {A, B, C, D}; B. enum ee {'A', 'B', 'C', 'D' }; C. enum ee = {A, B, C, D}; D. enum ee = {'A', 'B', 'C', 'D' }; 答案:A 4. 以下关于同类型结构体与同类型共用体赋值的叙述中,正确的说法是()。 A. 共用体变量之间可以直接赋值,结构体变量之间也可以直接赋值 B. 共用体变量之间可以直接赋值,结构体变量之间不可以直接赋值 C. 共用体变量之间不可以直接赋值,结构体变量之间可以直接赋值 D. 共用体变量之间不可以直接赋值,结构体变量之间也不可以直接赋值 答案:A 5. 设有如下定义: struct data { int i; union test { char ch; double q; }t; double f; }b; 若字符型变量占1个字节,整型变量占4个字节,双精度变量占8个字节,则结构体变量b占用内存的字节数是()。 A. 8 B. 9 C. 18 D. 20 答案:D 6. 以下关于数据类型int的别名定义中,正确的定义是()。 A. typedef int Integer; B. typedef int = Integer; C. typedef Integer int; D. typedef Integer = int;

结构体与共用体

第11章结构体与共用体 本章主要考查结构体类型、结构体变量、结构体数组、结构体指针的定义和引用方法,结构体类型变量的特点,以及共用体及枚举类型的概念、定义和引用,并掌握己有类型定义别名的方法。 一、考试要点 1、结构体 (1)结构体类型的定义 结构是一种“构造”而成的数据类型,在使用之前必须先定义,然后才可能用来定义相应的变量、数组等。定义如下: struct 结构名 { 成员列表; }; 例如: struct std { int num; char name[10]; float sco; }; 定义的该结构类型之后,这种类型在内存中所占间为所有成员所占内存之和。 (2)结构类型的说明 说明结构体变量有以下3种方法: 方法一:先定义结构体,再说明结构体变量 struct std { int num; char name[10]; float sco; }; struct std stu1,stu2; 方法二:在定义结构体的同时说明结构体变量

struct std { int num; char name[10]; float sco; }stu1,stu2; 方法三:直接说明结构变量 struct { int num; char name[10]; float sco; }stu1,stu2; (3)结构变量的引用 结构变量成员的表示一般形式为: 结构变量名.成员名 如:stu1.sco 若成员本身又是一个结构,则必须逐级找到最低级的成员才可以使用,一般形式为: 外层结构变量.外层成员名.内层成员名 如:stu1.birth.year (4)结构变量和赋值和初始化 结构变量的赋值即是给各个成赋值,可用输入输出语句来实现。 结构变量的初始化是指在结构变量说明的同时,给它的各个成员赋初值,初始化的格式为:struct 结构名 {结构成员列表;} 结构变量={初始数据表}; (5)结构指针变量的说明和使用 结构指针的说明形式为: struct 结构名* 结构指针变量名 结构指针变量访问结构变量各个成员的一般形式为: (*结构指针变量).成员名 或 结构指针变量->成员

C语言结构体和共用体实验报告材料

实验九参考程序 实验9-1 /**************************************************************** *实验9.1 * *(1)为某商店的商品设计合适的结构体 (PRODUCT)。每一种商品包含编号(number)、 * 名称(name)、价格(price)、折扣(discount)4项信息,根据表9-1,为这些信 息选择合适的数据类型。 *(2)建立2个函数,以实现对商品的操作。input函数实现商品的输入; * display函数显示商品信息。要求这2个函数都以商品的结构体(PRODUCT)指针为参数。 *(3)在主函数中为商品键盘定义一个结构体变量(keyboard),利用input函数实现键盘信息的输入; * 定义一个结构体数组(elec_device[3]),利用input函数实现冰箱、空调、电视信息的输入; * 最后利用display函数显示4种商品的信息。 * * 表9-1 * *编号名称价格折扣 *1010 键盘89.50 0.85 *1021 冰箱1024.00 0.95 *1022 空调2058.50 0.90 *1023 电视3001.88 0.95 * ****************************************************************/ #include typedef struct _PRODUCT

int iNumber; char strName[32]; float fPrice; float fDiscount; }PRODUCT,*PPRODUCT; void input(PRODUCT *pProduct); void display(PPRODUCT pProduct); void main() { int i; PRODUCT kyeboard; PRODUCT elec_device[3]; input(&kyeboard); for(i=0;i<3;i++) { input(&elec_device[i]); } display(&kyeboard); for(i=0;i<3;i++) { display(&elec_device[i]); } } /**************************************************************** * *函数名称:input() * *参数:PRODUCT *pProduct -PRODUCT结构体指针,用来存放输入数据 * * *返回值:无 * *说明: *该函数用来完成PRODUCT结构体数据的输入。

结构体与共用体及用户定义类型

结构体与共用体及用户定义类型 一、选择题: (1)有以下程序段 typedef struct NODE { int num; struct NODE *next; } OLD; 以下叙述中正确的是 A)以上的说明形式非法 B)NODE是一个结构体类型 C)OLD是一个结构体类型 D)OLD是一个结构体变量 (2)有以下程序 # include struct STU { int num; float TotalScore; }; void f(struct STU p) { struct STU s[2]={{20044,550},{20045,537}}; p.num = s[1].num; p.TotalScore = s[1].TotalScore; } main() { struct STU s[2]={{20041,703},{20042,580}}; f(s[0]); printf("%d %3.0f\n", s[0].num, s[0].TotalScore); } 程序运行后的输出结果是 A)20045 537 B)20044 550 C)20042 580 D)20041 703 (3)有以下程序 # include struct STU { char name[10]; int num; }; void f(char *name, int num) { struct STU s[2]={{"SunDan",20044},{"Penghua",20045}}; num = s[0].num; strcpy(name, s[0].name); } main()

相关文档
最新文档