11.1
-------
struct []
{
…………….
}
struct
:
struct student
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
};
name
num
sex
age
score
addr
2
2
20
1
4
30

…..
struct student
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
};
struct student stu1,stu2;
11.2
struct
{
…………….
}
struct
#define STUDENT struct student
STUDENT
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
};
STUDENT stu1,stu2;
struct
{
…………….
}
struct student
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}stu1,stu2;
struct
{
…………….
}
struct
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}stu1,stu2;
:,
,;,
struct date
{ int month;
int day;
int year;
};
struct student
{ int num;
char name[20];
struct date birthday;
}stu;
num name birthdaymonth day year
struct student
{ int num;
char name[20];
struct date
{ int month;
int day;
int year;
}birthday;
}stu;
num name birthdaymonth day year
11.3
,
()
,1
:
.
struct student
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}stu1,stu2;
stu1.num=10;
stu1.score=85.5;
stu1.score+=stu2.score;
stu1.age++;
struct student
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}stu1,stu2;
printf(“%d,%s,%c,%d,%f,%s \n”,stu1); (?)
struct student
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}stu1,stu2;
stu2=stu1; ( )
struct student
{ int num;
char name[20];
struct date
{ int month;
int day;
int year;
}birthday;
}stu1,stu2;
num name birthdaymonth day year
stu1.birthday.month=12;
struct student
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}stu1,stu2;
if(stu1==stu2)
…….,(?)
11.4
struct
{
…………….
}
struct ={}
struct student
{ int num;
char name[20];
char sex;
int age;
char addr[30];
};
struct student stu1={112,“Wang Lin”,?M?,19,“200 Beijing Road”};
struct
{
…………….
}={}
struct student
{ int num;
char name[20];
char sex;
int age;
char addr[30];
}stu1={112,“Wang Lin”,?M?,19,“200 Beijing Road”};
struct
{
…………….
}={}
struct
{ int num;
char name[20];
char sex;
int age;
char addr[30];
}stu1={112,“Wang Lin”,?M?,19,“200 Beijing Road”};
11.5
struct student
{ int num;
char name[20];
char sex;
int age;
};
struct student stu[2];
struct student
{ int num;
char name[20];
char sex;
int age;
}stu[2];
:
struct
{ int num;
char name[20];
char sex;
int age;
}stu[2];
num
name
sex
age
num
name
sex
age
stu[0]
stu[1]
25B
struct
{ int num;
char name[20];
char sex;
int age;
}stu[ ]={{……},{……},{……}};
:
struct student
{ int num;
char name[20];
char sex;
int age;
};
struct student stu[ ]={100,“Wang Lin”,?M?,20,
101,“Li Gang”,?M?,19,
110,“Liu Yan”,?F?,19};
struct student
{ int num;
name[20];
char sex;
int age;
}s u[ ]={{……},{……},{……}};
:
struct student
{ int nu ;
char name[20];
char sex;
int age;
};
struct student stu[ ]={{100,“Wang Lin”,,20},
{101,“Li Gang”,,19},
{110,“Liu Yan”,?F?,19}};
[].
struct student
{ int num;
char name[20];
char sex;
int age;
}str[3];
stu[1].age++;
strcpy(stu[0].name,”ZhaoDan”);
11.6
struct * ;
struct student *p;
num
name
sex
age
stu
pstruct student{ int num;
char name[20];
char sex;
int age;
}stu;
struct student *p=&stu;
(*),->,
main()
{ struct student
{ long int num;
char name[20];
char sex;
float score;
}stu_1,*p;
p=&stu_1;
stu_1.num=89101;
strcpy(stu_1.name,"Li Lin");
p->sex='M';
p->score=89.5;
printf("\nNo:%ld\nname:%s\nsex:%c\nscore:%f\n",
(*p).num,p->name,stu_1.sex,p->score);
}
int n;
int *p=&n;
*p=10;? n=10
struct student stu1;
struct student *p=&stu1;
stu1.num=101;? (*p).num=101
struct student
{ int num;
char name[20];
char sex;
int age;
}stu[3]={{10101,"Li Lin",'M',18},
{10102,"Zhang Fun",'M',19},
{10104,"Wang Min",'F',20}};
main()
{ struct student *p;
for(p=stu;p<stu+3;p++)
printf("%d%s%c%d\n",p->num,p->name,p->sex,p->age);
}
num
name
sex
age
stu[0]
p
stu[1]
stu[2]
p+1
( )
11.7 —
1249 A
1356
B
1475
C
1021
D
NULL
head 1249 1356 1475 1021
3010 99101
89.5
3028
head 3010 99103
90
4016
3028
99107
85
4016
NULL
A B C
num
score
next
______
#include <stdlib>
struct NODE
{int num;
struct NODE *next;
}
main()
{ struct NODE *p,*q,*r;
p=(struct NODE *)malloc(sizeof(struct NODE));
q=(struct NODE *)malloc(sizeof(struct NODE));
r=(struct NODE *)malloc(sizeof(struct NODE));
p->num=10;q->num=20;r->num=30;
p->next=q;q->next=r;
printf("%d\n",p->num+q->next->num);
}
A) 10 B) 20 C) 30 D) 40
D
,struct link
{ int data;
struck link *next;
}a,b,c,*p,*q;
ab:pa,
q ccab
____
a b
data next data next
↑p c
data next
↑q
A) a.next=c; c.next=b; B) p.next=q; q.next=p.next;
C) p->next=&c; q->next=p->next; D) (*p).next=q; (*q).next=&b;
5 9
7
D
pq
q
______
A) free(q); p->next=q->next;
B) (*p).next=(*q).next; free(q);
C) q=(*q).next; (*p).next=q; free(q);
D) q=q->next; p->next=q; p=p->next; free(p);
8
data next
4
data next
3
data next
head
↑p ↑q
B
11.8
,
()
union
{
…………….
}union data
{ int i;
char ch;
float f;
}; f
ch
i
union data
{ int i;
char ch;
float f;
}a,b;
union data
{ int i;
char ch;
float f;
};
union data a,b,c,*p,d[3];
union
{ int i;
char ch;
float f;
}a,b,c;
f
ch
i
f
ch
i
a b
a.i=1;
a.ch=?a?;
a.f=1.5;
printf(“%d”,a.i); (?)
->,(*).
union data
{ int i;
char ch;
float f;
};
union data a,b,c,*p,d[3];
a.i a.ch a.f
p->i p->ch p->f
(*p).i (*p).ch (*p).f
d[0].i d[0].ch d[0].f
union
{ int i;
char ch
float f;
}a;
a=1; (?)
union
{ int i;
char ch;
float f;
}a={1,?a?,1.5}; (?)
float x;
union
{ int i; char ch; float f;
}a,b;
a.i=1; a.ch=?a?; a.f=1.5;
b=a; (?)
x=a.f; (?)
,
struct node
{ char ch[2];
int k;
}a;
union node
{ char ch[2];
int k;
}b;
achk
bch k
,
name num sex job class position
Li
Wang
1011
2086
F
M
S
T
501
prof
struct
{ char name[10];
int num;
char sex;
char job;
union
{ int class;
char position[10];
}category;
}person[2];
……