ch09结构体枚举和共用8学时_第1页
ch09结构体枚举和共用8学时_第2页
ch09结构体枚举和共用8学时_第3页
ch09结构体枚举和共用8学时_第4页
ch09结构体枚举和共用8学时_第5页
免费预览已结束,剩余117页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ᕮ຅ ̵ ֛ ຍ

Ԉ ຅ አᴯ

຅2014-2015຅

Ӟ

຅๗ᒫ

9

ֵ አ

຅֛

ݳ

ഝC-຅አ຅

຅॒׀

ԧ

ӞᛔԶ

ኧਧᔮ

ᕹԎ૪

Ԏහঅ

ጱഝහ

ഝᔄᔄ

҅

ғ

̵ ਫ

̵ ॒ ᒧ

̵ ຅

C຅຅ᰒ

ᦜአ॒

໑ഝᵱᥝᛔ૩ୌ॒

ᒈහഝᔄ҅

Ԏ

ݒ

ᰒ21

.

Ԏ

຅ ֵ አ

ݒ ֛ ຅2

.

຅ ֛ හ

ᕟ3

.

຅ ֛ ຅

຅4

.

ݒ

֛

຅຅

ݒ

֛

຅ጱ

຅຅ ֢

හ5

.

॒ ቘ

຅6

.

຅39.1

Ԏ

ֵ

ݒ

֛

ᰒ1

.

ୌ॒

຅ ֛ ᔄ

2

.

Ԏ

຅ ֛ ᔄ

ݒ

ᰒ3

.

ݒ

֛

۸

຅຅

አ49.1.1

ୌ॒

֛

ୌಁ

ӧ

ݶ

ݳ

ጱ හ

຅҅

ԅ

຅ֺ ই

҅ Ӟ

ӻ

຅ ̵ ݩ

̵ ݷ

຅ ̵ ଙἻ̵

̵ ਹ

ᶱ ҅ ฎ

ԭ

ݶ

Ӟ

ӻ຅

҅ ࢩ

Ӟ

ӻ

ݳ

҅ ইs

t

u

d

e

n

t

_

1

ݒ

҅

ݍ

ฉਙ

ժ

ԏ

຅ᘶ

ᔮstruct

student{int

num;char

name[20];char

sex;int

age;float

score;char

addr[30];};由程序设计者指定了一个结构体类型structstudent它包括num,

name,sex,

age,

score,

addr等不同类型的成员ಁ

Ӟ

ӻ

֛

Ӟ

ԅ

ғstruct

ݷ{

ާᔄ

ݷ

ާ

ݷ

;…

…ᔄ

ݷ

ާ

ݷ

;᧔

ғ(

1

)

֛

ݝ

Ӟ

҅

ݢ

զ

҅ ֺ ইᦜ

຅ ֛ ᔄ

struct

teacherstruct

workerstruct

dateᒵ

຅ ֛ ᔄ

ݱ

۱

ތ

ӧ

ݶ

ާ(2)

ާ᧔

ғ

ݢ

զ

॒ ԭ

ݚ

Ӟ

ӻ

຅ ֛ ᔄ

struct

date{int

month;

int

day;

int

year;};struct

student{int

num;char

name[20];char

sex;int

age;struct

date

birthday;char

addr[30];};᧔

ғ(2)

ާ

ݢ

զ

॒ ԭ

ݚ

Ӟ

ӻ

຅ ֛ ᔄ

numnamesexagebirthdayaddrmonthdayyear#include

<stdio.h>struct

date{int

month;int

day;int

year;};struct

student{int

num;char

name[20];char

sex;int

age;struct

date

birthday;char

addr[30];};int

main(){numnamenamenamenamenamesexagebirthdayaddraddraddraddraddraddraddraddr4॒

຅printf("%lu\n",sizeof(struct

date));printf("%lu\n",sizeof(struct

student));return0;}11#include

<stdio.h>struct

date{int

month;int

day;int

year;};struct

student{int

num;char

name[20];int

age;struct

date

birthday;char

addr[30];char

sex;};int

main(){4

຅numnamenamenamenamenameagebirthdaybirthdaybirthdayaddraddraddraddraddraddraddraddrsexprintf("%lu\n",sizeof(struct

date));printf("%lu\n",sizeof(struct

student));return0;}129.1.2

Ԏ

֛ ᔄ

ݒ

຅ڹ

ݝ

ୌಁ

ԧ

Ӟ

ӻ

֛

҅

୮ԭ Ӟ ӻ ཛྷ ຅҅ ଚ

Ԏ

ݒ

ᰁ ҅

Ӿ

෫֛

හ ഝ

҅ ᔮ

Ԟ

ӧ

ԅ

ړ

ಁܔ

̶

زፘ

ԭ

ԧ

҅

֕

ୌಁ

֛

ጱ຅

຅̶

ԅ

ԧ

Ӿ

ֵ

֛

ጱහ

҅

Ԏ

֛

ݒ

҅

Ӿ ಁ න

֛ ጱ

ഝ1.

຅ ֛ ᔄ

҅

ਧԎ

ݒ

຅ಁ

຅ ֛ ᔄ

s

t

ru

c

t

student҅ݢզአ

Ԏ

ݒ

ᰁstruct

student

student1,student2;ᕮ

֛

ݷ

ݒ

֛

ᰁݷ1.

຅ ֛ ᔄ

҅

ਧԎ

ݒ

຅ಁ

຅ ֛ ᔄ

s

t

ru

c

t

student҅ݢզአ

Ԏ

ݒ

ᰁstruct

student

student1,student2;10001Zhang

XinM1990.5Shanghaistudent110002Wang

LiF2098Beijingstudent22

.

กᔄ

ݶ

Ԏ

ݒ

຅struct

student{int

num;charname[20];charsex;intage;float

score;char

addr[30];}student1,student2;3.

ӧ

ݷ

ᘒፗ

Ԏ

֛

ݒ຅

Ӟ

୵ ॒ ԅ

:struct{

ާ

}

ݒ຅ݷ຅

;຅

ԧ

Ӟ

ӻ

ݷ

֛

17᧔

ғ(

1

)

֛

Ө

ݒ

֛

ӧ

ݶ

ஷӧᥝ

ݝ

̶ݶ

ݒ

ᰒᩙᰒ

̵ ॒

ݐ

຅ᰒᓒ

҅ᘒӧ

Ӟ

ӻ

ᩙᰒ

̵ ॒

ݐ

̶

຅҅຅

ӧ

҅

ݝ

ݒ

຅1819(2)

֛

Ӿ

ާ

ݢ

ݷ

զ

Ө

Ӿ

ݒᰒ

ݷ

֕ ҅ ݶ

ԫ

ӧ

դ

ݶ

Ӟ

຅̶(3)

ݒ

֛

Ӿ

ާ

ҁ

ܨ

҂҅

ݢ

զܔ

ֵ

҅

֢

Ө

֖

ԭ

ݒ

ᰒ9.1.3

ݒ

֛

۸

አֺ9.1

Ӟ

ӻ

מ

(

۱

຅ ̵ ݩ

̵ ݷ຅

֘

̵ ຅

)

Ӟ

ӻ

ݒ

֛

Ӿ҅

ݸ

ӻ

מ

௳ᥴ

ғ຅

Ӿ

ୌ॒

Ӟ

ӻ

֛

҅

۱

ํ຅

מ

ݱ

ާᆐ

ݸ

Ԏ

ݒ

֛

҅

ݶ

ᩙᰒ

զ ํݸ

ݒ

֛

ݱ

ާ20#include

<sint

main()structint

num;

char

name[20];char

sex;

char

addr[40];}

student1={10101,"Li

Lin”,’M',"No.35

Beisihuan

Middle

Road"};printf("NO.:%d\nname:%s\nsex:%c\naddress:%s\n",student1.num,

,student1.sex,student1.addr);return0;}student1.sex,student1.addr);return0;}#include

<stdio.h>int

main(){struct

student{int

num;

char

name[20];char

sex;

char

addr[40];}

student1={10101,"Li

Lin”,’M',"No.35

Beisihuan

Middle

Road"};printf("NO.:%d\nname:%s\nsex:%c\naddress:%s\n",student1.num,

,return0;}#include

<stdio.h>int

main(){struct

student{int

num;

char

name[20];char

sex;

char

addr[40];}

student1={10101,"Li

Lin”,’M',"No.35

Beisihuan

Middle

Road”};student1.num=10010;

//对printf("%s\n",student1);

//错#include

<stdio.h>struct

date{int

month;

intstruct

student{int

num;

char

name[20];

struct

date

birthday;char

sex;

char

addr[40];};int

main(){struct

student

student1={10101,"Li

Lin”,{10,26,1982},

‘M’,"No.35

Beisihuan

Middle

Road"

};student1.num=10010;

//对student1.birthday.month=11;//对return0;}24return0;}25//对//对struct

student

student2;student2=student1;student2.num++;#include

<stdio.h>struct

date{int

month;

int

day;

int

year;};struct

student{int

num;

char

name[20];

struct

date

birthday;char

sex;

char

addr[40];};int

main(){struct

student

student1={10101,"Li

Lin”,{10,26,1982},

‘M’,"No.35

Beisihuan

Middle

Road"

};return0;}26#include

<stdio.h>struct

date{int

month;

int

day;

int

year;};struct

student{int

num;

char

name[20];

struct

date

birthday;char

sex;

char

addr[40];};int

main(){struct

student

student1={10101,"Li

Lin”,{10,26,1982},

‘M’,"No.35

Beisihuan

Middle

Road"

};int

sum;struct

student

student2;student2.num=student1.num;

//对sum=student1.num+student2.num;

//对27#include

<stdio.h>struct

student{int

num;

char

name[20];char

sex;

char

addr[40];};int

main(){struct

student

student1={10101,"Li

Lin”,{10,26,1982},

‘M’,"No.35

Beisihuan

Middle

Road"

};scanf("%d,%s,%c,%s”,&student1);//错return

0;}scanf("%d",

&student1.num);printf("%p",

&student1);//对//对ֺ9.2

ᰒӷ

ӻ

̵

ݩ

ݷ

҅

౮ṛ

຅ ̵ ݩ

ݷ

ᖂᖂ

຅ᥴ

ғ

(

1

)

ਧԎӷӻᕮ຅ፘݶጱᕮ຅ݒ֛ᰒstudent

1

student2Ҕ(

2

)

ᰒ ӷ

ӻ

̵

ݩ

ݷ

Ҕ(

3

)

ӷӻ

ኞጱ

҅

຅຅

1

ԭ຅

2

҅

ᰒ ຅

1

ጱ౮

ԭ

1

҅

ᰒԫ

҅ ᰒ຅

מ

҅

2

ጱ຅

2

מ

̶

຅2

ӻ

מ

௳#include

<stdio.h>int

main(){struct

student{int

num;

char

name[20];float

score;}

student1,student2;scanf("%d%s%f",

&student1.num,,

&student1.score);scanf("%d%s%f",

&student2.num,,

&student2.score);printf("The

higher

score

is:\n");if

(student1.score>student2.score)printf("%d

%s

%6.2f\n",

student1.num,,

student1.score);else

if

(student1.score<student2.score)printf("%d

%s

%6.2f\n",

student2.num,,

student2.score);else{printf("%d

%s

%6.2f\n",

student1.num,,

student1.score);printf("%d

%s

%6.2f\n",

student2.num,,

student2.score);}return

0;}9.2

֛

ᕟֺ9.3

3

ӻ

ײ

Ո҅

ӻ

ݝ

ᐥ຅

ӞՈ҅

Ӟ

ӻ

҅ ݸᰒ

ᩙᰒ຅ Ո ጱ ݷ ॒ ҅ ํ

ݸ

ݱՈ

຅̶31ᥴ

ғ–

Ӟ

ӻ

֛

҅

Ӿ

۱

ތ

3

ӻ

ᔰ– ༷

ӻ ᔰ

Ӿ

מ

۱

ײ

Ո

ݷ

(

)

(

)– ᰒ ᩙᰒ

Ո

҅

ݷ

ݸ

Ө

ᕟ ᔰ

Ӿ

ጱ“

ݷ

ާ

຅҅

҅

ݶ

ӻᔰ

Ӿ

”౮

ާ1

ጱ– ᰒ ಅ ํ ጱ מ ௳32#include

<stdio.h>#include

<string.h>struct

{char

name[20];int

count;}

candidate[3]={“Li”,0,"Zhang",0,"Sun",0};全局的结构体数组Li0Zhang0Sun0namecountcandidate[0]int

main(){int

i,j;char

name[20];//保存输⼊的候选⼈

for

(i=1;i<=10;i++){//投票⼗次scanf("%s",

name);for(j=0;j<3;j++)if(strcmp(name,

candidate[j].name)==0)candidate[j].count++;}for(i=0;i<3;i++)printf("%5s:%d\n",

candidate[i].name,candidate[i].count);return

0;}int

main(){int

i,j;char

name[20];//保存输⼊的候选⼈

for

(i=1;i<=10;i++){//投票⼗次scanf("%s",

name);for(j=0;j<3;j++)if(strcmp(name,

candidate[j].==0)candidate[j].count++;}for(i=0;i<3;i++)printf("%5s:%d\n",

candidate[i].name,candidate[i].count);return

0;}᧔

ғ(

1

)

ਧԎᕮ຅֛හᕟӞ຅୵

ɠstruct

ݷ{

౮ ާ

ᰒ } හ ᕟ ݷ [ හ ᕟ ຅ ଶ ] ;

ɡ ॒

Ӟ ӻ ᕮ

຅ ֛ ᔄ

҅ ᆐ

ݸአ

ྌ ᔄ

Ԏᕮ຅ ֛ හ

ғ

ݷ

[හ

];ᕮ

຅ ֛ ᔄ

ғstructcandidate[3];᧔

ғ

(

2

)຅ᕮ຅֛හᕟ຅ਧԎහᕟ

ݸ

Ӥ

ғত۸ጱ୵

ฎ={

};ই

ғstruct

candidate[3]={"Li",0,"Zhang",0,“Sun",0};ֺ9.4

n

ӻ

מ

(

۱

̵

ݩ

̵

ݷ

౮ᖂ

)

҅

֗

ݱ ຅

ኞጱ

מ

௳ᥴ

ғ

֛

n

ӻ

מ

௳຅አ຅ೠဩ຅

ݱᔰᰒᰒഭଧ(ᰒᰒ༷

຅ጱฎݱ

Ӿ

)38#include

<stdio.h>#define

N

5struct

student{int

num;

char

name[20];

float

score;};int

main(){struct

student

stu[N]={{10101,

"Zhang",

78},{10103,

"Wang",

98.5},{10106,

"Li",

86},{10108,

"Ling",

73.5},{10110,

"Sun",

100}};struct

student

temp;int

i,j,k;printf("The

order

is:\n");for(i=0;i<N-1;i++){k=i;for(j=i+1;j<N;j++)if(stu[j].score>stu[k].score)k=j;temp=stu[k];stu[k]=stu[i];stu[i]=temp;}for(i=0;i<N;i++)printf("%6d

%8s%6.2f\n",stu[i].num,stu[i].name,stu[i].score);printf("\n");return

0;}ᕮ

ݒ ֛ ᰒ

Ի

҅

9.3

֛

຅຅຅ݻᕮ຅֛຅຅ጱ຅ᰒݒᰒ෬ݢզ຅ݻᕮ຅ݒ

֛

҅

Ԟ

ݢ

զ

ݻ

֛

Ӿ

ᔰ֕

҅

ݒ

Ө

ݒ

֛

ᰒጱ

ֺ ̶ ݶ

ғstruct

student

*pt;41ᕮ

ጱֺ9.5

ݻ

ݒ

֛

຅ᰒ

ݒ

ᰒݒ

֛

Ӿ

ާ

מ

௳ᥴ

ғ

Ӥ҅

຅຅

ᥝᥴ

ӷ

ӻ

຅຅

ғ–

ெ॒

ݒ ֛ ᰒ

ާ

ᩙᰒ

Ҕ–

ெ॒຅຅ᰒ຅ݻᕮ຅ݒ֛ᰒጱ຅ᰒᦢ຅ᕮ຅ݒ

֛

Ӿ

ާ42#include

<stdio.h>#include

<string.h>struct

student{long

num;

charname[20];

charsex;

floatscore;};int

main(){struct

student

stu_1;stu_1.num=10101;strcpy(stu_1.name,"Li

Lin");stu_1.sex='M';stu_1.score=89.5;printf("No.:%ld\n",stu_1.num);printf("name:%s\n",stu_1.name);printf("sex:%c\n",stu_1.sex);printf("score:%5.1f\n",stu_1.score);return

0;}10101Li

LinM89.5stu_1printf(“sex:%c\n

,stu_1.sex);printf("score:%5.1f\n",stu_1.score);return

0;}10101Li

LinM89.5stu_1pint

main(){struct

student

stu_1;struct

student

*

p;p=&stu_1;stu_1.num=10101;strcpy(stu_1.name,"Li

Lin");stu_1.sex='M';stu_1.score=89.5;printf(“No.:%ld\n”,stu_1.num);(*p).numprintf(“name:%s\n

stu_1.name);(*p).name(*p).sex(*p).score᧔

ғ–

ԅ

ԧ

ֵ

ො॒

҅

(

*

p

)

.

n

u

m

አp->num຅դํ(

*

p

)

.

n

a

m

e

հԭ

p

-

>

n

a

m

eই

p

ݻ

Ӟ

ӻ

ݒ

֛

s

t

u

҅

զ

ӥ

ᒵհ

ғ1

.

s

t

u

.

ާ

ݷ

ғ

s

t

u

.

n

u

m2

.

(

*

p

)

.

ާ

ݷ

ғ

(

*

p

)

.

n

u

m3.

p->౮

ާ

ݷ

ғ

p

-

>

n

u

mֺ9.6

3

ӻ

מ

҅

Ӿ҅

ጱמ

௳ᥴ຅຅ᰁғአ຅ݻᕮ຅ݒ֛ᰁጱ຅ᰁ

ቘ(

1

)

s

t

r

u

c

t s

t

u

d

e

n

t

҅

Ԏ

຅֛

̵ ত ۸(

2

)

Ԏ

ݻ

s

t

r

u

c

t s

t

u

d

e

n

t

ᰁp(3

)

ֵ

p຅

ݻ

Ḓ(

4

)

ֵ p

຅ ݻ ӥ Ӟ ӻᔰ

҅

Ӿ

מ

ݱ

௳ᔰ

҅ ᰁ ᔰ

Ӿ מ ݱ ௳ਙ ຅ ݻ ጱ ᔰ Ӿ ጱ ํ

מ(

5)

ֵ

p

ݻ

֛

ӥ

Ӟ

ӻ

҅

ᰁ௳#include

<stdio.h>struct

student{int

num;char

name[20];char

sex;int

age;};struct

student

stu[3]={{10101,"Li

Lin",'M',18},{10102,"Zhang

Feng",'M',19},{10104,"Wang

Min",'F',20}};stu[2]int

main(){struct

student

*p;printf("No.\tName\tSex\tAge\n");for(p=stu;p<stu+3;p++)printf("%5d\t%-20s\t%2c\t%4d\n",p->num,

p->name,p->sex,p->age);}10101Li

LinM1810102Zhang

FangM1910104Wang

MinF20stu[0]stu[1]int

main(){struct

student

*p;printf("No.\tName\tSex\tAge\n");for(p=stu;p<stu+3;p++)printf("%5d\t%-20s\t%2c\t%4d\n",p->num,

p->name,p->sex,p->age);}10101Li

LinM1810102Zhang

FangM1910104Wang

MinF20stu[0]stu[1]pstu[2]int

main(){nstruct

studeprintf("No.\tName\tSex\tAge\n");for(p=stu;p<stu+3;p++)printf("%5d\t%-20s\t%2c\t%4d\n",p->num,

p->name,p->sex,p->age);}10101Li

LinM1810102Zhang

FangM1910104Wang

MinF20stu[0]stu[1]pstu[2]int

main(){ntstruct

studeprintf("No.\for(p=stu;p<stu+3;p++)printf("%5d\t%-20s\t%2c\t%4d\n",p->num,

p->name,p->sex,p->age);}10101Li

LinM1810102Zhang

FangM1910104Wang

MinF20stu[0]stu[1]stu[2]p9.4

ݒ

֛

຅຅

ݒ

֛

຅ጱ

຅֢ හ

හփ

຅ᕳ

ݚ

Ӟ

ӻ

҅ ํ຅ਖ਼

Ӟ

ӻ

ݒ

֛

຅ጱ3

ො॒

ဩ54(1)

ݒ

֛

ާ

֢

හֺ

҅

s

t

u

[

1

]

.

n

u

m

s

t

u

[

2

]

.

n

a

m

eਫ

փ

֢

҅

ਖ਼–

ݒ

֢

Ӟ

຅ጱ

҅

ԭ

փ

”ො॒ ॒–

Ө

כ

Ӟ

ᛘ(2)

຅ ݒ ֛ ᰒ ֢ ਫ

ݒ

֛

֢

຅҅

ݒ

֛

ܛ

ܔ ጱ

຅ ຅

փ

҅

Ԟ

ᶳฎ

ݶ

ݒ ֛ ᰒ–຅ හ

Ԟ

ܛ

ܔ

̶ ᰒ

ᐿփ ຅ ො॒

຅ ᑮ

຅ ຅ ຅ ຅ Ӥ ຅ ᲀ ຅ य़–຅

ᩙᰒ

አ හ

ݒ

ҁԞ

ݒ

֛

҂ጱ

҅ ӧ

տ

ߥ

Ԇ

Ӿ

ጱ–Ӟ຅

ො॒

ဩ(

3

)

ݻ

ݒ

֛

ҁ

҂

຅ᰒ

֢

҅

ݒ

֛

ҁ

҂

փ

ֺ9.7

य़ੜԅ

n

ᕮ຅

֛

ᕟ҅

ᔰጱᕮ຅

֛

ތ

̵

ݩ

ݷ

3

౮ᖂ

̶ᥝ

מ

(

۱ೡ

̵

ݩ

̵

ݷ

3

)ᥴ

ғ

۸

మአ

3

ӻ

ӧ

ݶ

ғ–

input

຅຅

ݱ

ᖂ– አ

m

a

x හ

ኞ– አ

p

r

i

n

t හ

ᰒ ౮

מ

௳–

Ԇ

Ӿ

ݸ

3

ӻ

҅

ݻ

຅ݒ ֛ ᰒ ጱ ຅ ᰒ ֢ ਫ

̶ ํ

ݸ ຅ ᕮ ຅̶–຅

N

=

3#include

<stdio.h>#define

N

3

struct

student{int

num;char

name[20];float

score[3];float

aver;};int

main(){void

input(struct

studentstruct

student

max(structvoid

print(struct

studentstu[]);student

stu[]);stu);struct

student

stu[N],

*p=stu;input(p);print(max(p));}void

input(struct

student

stu[]){int

i;printf(“请输⼊各学⽣的信息:学号、 、三⻔课成绩:\n");for(i=0;i<N;i++){scanf("%d

%s

%f

%f

%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;10101Li78899888.33ᰒ ຅

̵

ݩ

নݷ

ӣ

ᑕᦇᓒ

ଘ຅౮}}stu[0]stu[1]stu[2]stuvoid

input(struct

student

stu[]){int

i;printf(“请输⼊各学⽣的信息:学号、 、三⻔课成绩:\n");for(i=0;i<N;i++){scanf("%d

%s

%f

%f

%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;10101Li78899888.3310103Wang98.5876984.83ᰒ ຅

̵

ݩ

নݷ

ӣ

ᑕᦇᓒ

ଘ຅౮}}stu[0]stu[1]stu[2]stuvoid

input(struct

student

stu[]){int

i;printf(“请输⼊各学⽣的信息:学号、 、三⻔课成绩:\n");for(i=0;i<N;i++){scanf("%d

%s

%f

%f

%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;10101Li78899888.3310103Wang98.5876984.8310106Sun8876.58984.5ᰒ ຅

̵

ݩ

নݷ

ӣ

ᑕᦇᓒ

ଘ຅౮}}stu[0]stu[1]stu[2]stustruct

student

max(struct

student

stu[]){int

i,m=0;stu10101Li78899888.3310103Wang98.5876984.8310106Sun8876.58984.5for(i=0;i<N;i++)stu[0]stu[1]stu[2]if

(stu[i].aver>stu[m].aver)m=i;return

stu[m];}຅

ࢧํ

य़10101Li7889

98

88.3310103

Wang98.5

87

69

84.8310106

Sun

88

76.5

89

84.5studvoid

print(struct

student

stud){printf("\n成绩最⾼的学⽣是:\n");printf(“学号:%d\n

:%s\n三⻔课成绩:%5.1f,%5.1f,%5.1f\n平均成绩:%6.2f\n",stud.num,

,

stud.score[0],stud.score[1],

stud.score[2],

stud.aver);}scorenum

nameaverstu[0]stu[1]stu[2]զ

Ӥ

3

ӻ

҅ ఘ

ݱ

ӧ

ݶ

ғ–

input හ

຅҅

ݒ

҅

ᕮ຅

֛

҅

փ

຅ ֛

຅҅

හ෫ ᰒ ̶ ࢧ–

m

a

xහ

຅҅

຅ᰒ

ݒ

҅

ᕮ຅

֛

҅

փ

຅ ֛

຅຅҅

හጱ

຅ ֛ ᔄ

ഝ–᧣

p

r

i

n

t

຅҅

຅ݒ

֛

҅

ጱݒ

֛

҅

փ

ݒ

֛

Ӿ

ݱ

ާ҅ හ

ᰒ ̶ ࢧ9.5

አ຅຅॒

ቘ᱾຅1

.

Ջ

ԍ

຅2.

ୌ॒

ᒈᓌܔጱᶉ॒

᱾຅3

.

ୌ॒

॒ ᱾຅679.5.1

Ջԍฎᕚ຅᱾

຅head12491249A1356

147510211356B1475C1021D\0१຅ᰁ᱾

຅ฎӞᐿଉᥠጱ

຅ᥝ

ጱහഝᕮ຅ਙ

຅຅ಁ

຅ጱ

Ӟ

຅ݱ

຅຅

ӧ຅ᖅݱ ᕮ ᅩ

ތ

ӷ ӻ ຅ᰁੲ᱾

຅ฎӞᐿଉᥠጱ

຅ᥝ

ጱහഝᕮ຅ਙ

຅຅॒

຅ጱ

Ӟ

຅᱾

຅ݒ

຅຅

ሿstruct

student{int

num;float

score;struct

student

*next;}a,b,c;1010189.510103901010785aᕮᅩbᕮᅩcᕮᅩa.next=&b;b.next=&c;numscorenext9.5.2

ୌ॒

ᒈᓌܔጱᶉ॒

຅1010189.510103901010785ֺ9.8

ୌಁ

Ӟ

ӻ

ܔ

ᰁਙኧ

3

ӻ຅ኞහഝጱᕮᅩᕟ౮҅ᥝ຅ᰁݱ

Ӿ

ഝa

b

c

ᅩnumscorenext1010189.51010390aᕮᅩbᕮᅩcᕮᅩscoreheadnumᥴ

ғhead=&a;b.next=&c;next1010785NULLa.next=&b;c.next=NULL;#include

<stdio.h>struct

student{int

num;float

score;struct

student

*next;};int

main(){struct

student

a,

b,

c,

*head,

*p;a.num=10101;

a.score=89.5;b.num=10103;

b.score=90;c.num=10107;

c.score=85;head=&a;a.next=&b;b.next=&c;c.next=NULL;p=head;do{printf("%d%5.1f\n",

p->num,

p->score);p=p->next;}while(p!=NULL);return

0;}1010189.51010390aᕮᅩbᕮᅩcᕮᅩ1010785NULLnumscorenextheadpp=head;do{printf("%d%5.1f\n",

p->num,

p->score);p=p->next;

/

/

ԭp

=

&

b

;}while(p!=NULL);1010189.51010390aᕮᅩbᕮᅩcᕮᅩ1010785NULLnumscorenextheadpp=head;do{printf("%d%5.1f\n",

p->num,

p->score);p=p->next;

/

/

ԭp

=

&

c

;}while(p!=NULL);p=head;do{printf("%d%5.1f\n",

p->num,

p->score);1010189.51010390bᕮᅩcᕮᅩ1010785NULLnumscorenextheadpᶉ

຅aᕮᅩp=p->next;

//ፘ୮ԭp=NULL;}while(p!=NULL);9.5.3ୌ

຅ಅ᧲ୌ॒

᱾ᰒฎ຅຅ᑕଧಗᰒᰒᑕӾ຅෫຅

ୌ॒

ᩙᰒ

Ӟ

ӻ

҅

ܨ

Ӟ

ӻ

Ӟ

ӻ

຅ᰒ

ᕮํᅩ

ݱ

҅

ୌଚ

ᩙᰒ

ݸ

ᔮ78

॒຅Ջ

ԍ

॒ ጱ

॒ ຅ெ॒

຅ୌ॒

॒ ຅v

o

i

d

7980Ջ

ԍ

ړ

຅ᶋ

ݒ

ړ

ٖ

Ӿ

ؙ

܄

҅

ӻ

ؙ

܄

Ӟ

ӻ

ԅ

(

S

t

a

c

k

)

ጱ܄

ऒC

ر

ୌ॒

ړ

܄

҅

զ

Ӟ

Զ

ԁ

҅

Զ

຅຅

҅

ӧ

̶

Զ

ԁ຅॒

Ӟ

ӻ

ڦ

ؙ

܄

҅

ԅ

ञ(

H

e

a

p

)

܄Stack

VS.

Heap຅

ጱ ᔰ

ԏ

҅

ݝ

ጱ ᔰ

҅

ೲᆙ

L

I

F

O

ҁ

L

a

s

t

In O

u

t

҅

ݸ

ᰒञ

ጱ ᔰ

҅ ᔰ

຅҂

຅81Stack

VS.

Heap຅

ٖ ॒

Ө

C

P

U

Ӿጱ຅຅

຅॒

຅(

S

P

)

Ӟ

֢

ጱ຅

ٖ ॒

ړ

຅຅

ࢧත

ฎᛔ

ጱ຅

ٖ ॒

຅ฎ

ጱ82Stack

VS.

Heap83ञ

ጱ຅຅ ࢧ

තฎᑕଧާ

ᛔ૩ਠ౮

ጱञ

຅຅

य़ӷ

ӻ

ғ૪

॒•ᑮ॒຅ ༷ Ӟ ࣘ ጱ ํ*

ᶎכ

ԧ ԭ

Ӟጱ

҅ ӥ

Ӟ॒

܄

֖

຅Զמ

௳ञጱᏦᇆ۸84ெ॒

຅ୌ॒

ړ

຅຅

ٖ ॒

ړ

຅ฎ

຅຅ᔮ

຅׀

ڍ

හ຅ ਫ

҅ Ԇ

m

a

l

l

o

c

,

caloc,realloc,

f

r

e

e

҅

4

ӻ

ڍ

.malloc

හ其函数原型为void

*malloc(unsigned

int

size);其作用是在内存的动态区中分配一个长度为size的连续空间函数的返回值是所分配区域的第一个字节的地址,或者说,此函数是一个指针型函数,返回的指针指向该分配域的开头位置85malloc

හmalloc(100);开辟100字节的临时分配域,函数返回值为其第1个字节的地址注意指针的基类型为void,即不指向任何类型的数据,只提供一个地址如果此函数未能成功地执行(例如内存空间不足),则返回空指针(NULL)86calloc

හ其函数原型为void

*calloc(unsigned

n,unsigned

size);其作用是在内存的动态

区中分配n个单位长度为size的连续空间,这个空间一般比较大,足以保存一个数组。87calloc

හ用calloc函数可以为一维数组开辟动态

空间,n为数组元素个数,每个元素长度为size。这就是动态数组。函数返回指向所分配域的起始位置的指针;如果分配不成功,返回NULL。如:int

*q=(int

*)calloc(100,

sizeof(int));开辟100×4个字节(假定int类型占据4个字节)的临时分配域,把起始地址赋给整型指针变量q88realloc

හ其函数原型为void

*realloc(void

*p,

unsigned

int

size);如果已经通过malloc函数或calloc函数获得了动态空间,想改变其大小,可以用recalloc函数重新分配。89realloc

හ用realloc函数将p所指向的动态空间的大小改变为size。p的值不变。如果重分配不成功,返回NULL。如realloc(p,

50);将p所指向的已分配的动态空间改为50字节90free

හ其函数原型为void

free(void

*p);其作用是

指针变量p所指向的动态空间,使这部分空间能重新被其他变量使用。p应是最近一次调用calloc或malloc຅realloc函数时得到的函数返回值。91free

හfree(p);指针变量p所指向的已分配的动态空间free函数无返回值92以上4个函数的

在stdlib.h头文件中,在用到这些函数时应当用#include

<stdlib.h>指令把stdlib.h头文件包含到程序文件中。9394void

຅ᔄ

例建立动态数组,输入5个学生的成绩,另外用一个函数检查其中有无低于60分的,输出不合格的成绩。95void

຅ᔄ

解题思路:用malloc函数开辟一个动态内存区域,用来存5个学生的成绩,会得到这个动态域第一个字节的地址,它的基类型是void型。用一个基类型为int的指针变量p1来指向动态数组的各元素,并输出它们的值。但必须先把malloc函数返回的void指针转换为整型指针,然后赋给p1#include

<stdio.h>#include

<stdlib.h>void

check(int

*);int

main(){int

*p1,

i;p1=(int

*)malloc(5*sizeof(int));for(i=0;i<5;i++)scanf("%d",p1+i);check(p1);free(p1);return

0;}96void

check(int

*p){int

i;printf("不及格成绩包括:");for(i=0;i<5;i++)if

(p[i]<60)printf("%d

",p[i]);printf("\n");}97ֺ9.9 ୌ॒

ᒈӞӻ

຅ኞ຅ݩ

຅౮ᖂහഝጱܔݻ

॒ ᱾

ᰒਧ

Ԏ

s

t

u

d

e

n

t

֛

ݒ

h

e

a

d

̵

p

຅ᰒ

,

p

:

,ᰒ

ҶprevҴhead:

຅prev:

Ӟ຅

຅຅

N

༷ ҅ ༷ ༷຅

Ӟ

ӻ

ෛ॒

studentᔄ

҅

ֵ຅

ݒ

p຅

ݻ*

ᅩԅ

֛

ᩙᰒ

҅ ଚ

ӥ

Ӟ຅

ݻ

N

U

L

Lᒫ

Ӟ

Ӿ҅

ݻ

pਙ

Ӿ҅

ԅ

Ӟ຅

ӥ

Ӟ຅

ᩙᰒ

pਖ਼

p

ᩙᰒ

Ӟ຅

p

r

e

v98s

t

u

d

e

n

t

ጱ#include

<stdio.h>#include

<stdlib.h>#define

LEN

sizeof(struct

student)#define

NO_OF_STUDENTS

3struct

stud

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论