全國二級等級考試2012-9輔導(dǎo)-多媒體課件第10講_第1頁
全國二級等級考試2012-9輔導(dǎo)-多媒體課件第10講_第2頁
全國二級等級考試2012-9輔導(dǎo)-多媒體課件第10講_第3頁
全國二級等級考試2012-9輔導(dǎo)-多媒體課件第10講_第4頁
全國二級等級考試2012-9輔導(dǎo)-多媒體課件第10講_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余43頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第10講結(jié)構(gòu)為將不同數(shù)據(jù)類型、但相互關(guān)聯(lián)的一組數(shù)據(jù),組合成一個(gè)有機(jī)整體使用,C語言提供一種稱為“結(jié)構(gòu)”的數(shù)據(jù)結(jié)構(gòu)。10.1結(jié)構(gòu)類型與結(jié)構(gòu)變量的定義

10.2結(jié)構(gòu)變量的引用與初始化

10.3結(jié)構(gòu)數(shù)組10.4指向結(jié)構(gòu)類型數(shù)據(jù)的指針10.5共用型10.6定義已有類型的別名10.1結(jié)構(gòu)類型與結(jié)構(gòu)變量的定義C語言中的結(jié)構(gòu)類型,相當(dāng)于其它高級語言中的“記錄”類型。

10.1.1結(jié)構(gòu)類型定義struct結(jié)構(gòu)類型名 /*struct是結(jié)構(gòu)類型關(guān)鍵字*/

{數(shù)據(jù)類型數(shù)據(jù)項(xiàng)1;

數(shù)據(jù)類型數(shù)據(jù)項(xiàng)2;

…………

數(shù)據(jù)類型數(shù)據(jù)項(xiàng)n;

}; /*此行分號不能少!*/

[案例10.1]定義一個(gè)反映學(xué)生基本情況的結(jié)構(gòu)類型,用以存儲學(xué)生的相關(guān)信息。

/*案例代碼文件名:AL10_1.C。*/

/*功能:定義一個(gè)反映學(xué)生基本情況的結(jié)構(gòu)類型*/

structdate /*日期結(jié)構(gòu)類型:由年、月、日三項(xiàng)組成*/{intyear;intmonth;intday;};structstd_info /*學(xué)生信息結(jié)構(gòu)類型:由學(xué)號、姓名、性別和生日共4項(xiàng)組成*/{charno[7];charname[9];charsex[3];structdatebirthday;};structscore /*成績結(jié)構(gòu)類型:由學(xué)號和三門成績共4項(xiàng)組成*/{charno[7];intscore1;intscore2;intscore3;};(1)“結(jié)構(gòu)類型名”和“數(shù)據(jù)項(xiàng)”的命名規(guī)則,與變量名相同。(2)數(shù)據(jù)類型相同的數(shù)據(jù)項(xiàng),既可逐個(gè)、逐行分別定義,也可合并成一行定義。例如,本案例代碼中的日期結(jié)構(gòu)類型,也可改為如下形式:

structdate{intyear,month,day;};(3)結(jié)構(gòu)類型中的數(shù)據(jù)項(xiàng),既可以是基本數(shù)據(jù)類型,也允許是另一個(gè)已經(jīng)定義的結(jié)構(gòu)類型。例如,本案例代碼中的結(jié)構(gòu)類型std_info,其數(shù)據(jù)項(xiàng)“birthday”就是一個(gè)已經(jīng)定義的日期結(jié)構(gòu)類型date。(4)本書將1個(gè)數(shù)據(jù)項(xiàng)稱為結(jié)構(gòu)類型的1個(gè)成員(或分量)。10.1.2結(jié)構(gòu)變量定義用戶自己定義的結(jié)構(gòu)類型,與系統(tǒng)定義的標(biāo)準(zhǔn)類型(int、char等)一樣,可用來定義結(jié)構(gòu)變量的類型。

1.定義結(jié)構(gòu)變量的方法,可概括為兩種:(1)間接定義法──先定義結(jié)構(gòu)類型、再定義結(jié)構(gòu)變量例如,利用[案例10.1]中定義的學(xué)生信息結(jié)構(gòu)類型std_info,定義了一個(gè)相應(yīng)的結(jié)構(gòu)變量student:

structstd_info

student;結(jié)構(gòu)變量student:擁有結(jié)構(gòu)類型的全部成員,其中birthday成員是一個(gè)日期結(jié)構(gòu)類型,它又由3個(gè)成員構(gòu)成。注意:使用間接定義法定義結(jié)構(gòu)變量時(shí),必須同時(shí)指定結(jié)構(gòu)類型名。(2)直接定義法──在定義結(jié)構(gòu)類型的同時(shí),定義結(jié)構(gòu)變量例如,結(jié)構(gòu)變量student的定義可以改為如下形式:structstd_info{……}student;同時(shí)定義結(jié)構(gòu)類型及其結(jié)構(gòu)變量的一般格式如下:

struct[結(jié)構(gòu)類型名]{……}結(jié)構(gòu)變量表;2.說明(1)結(jié)構(gòu)類型與結(jié)構(gòu)變量是兩個(gè)不同的概念,其區(qū)別如同int類型與int型變量的區(qū)別一樣。(2)結(jié)構(gòu)類型中的成員名,可以與程序中的變量同名,它們代表不同的對象,互不干擾。[Return]10.2結(jié)構(gòu)變量的引用與初始化[案例10.2]利用[案例10.1]中定義的結(jié)構(gòu)類型structstd_info,定義一個(gè)結(jié)構(gòu)變量student,用于存儲和顯示一個(gè)學(xué)生的基本情況。#include<stdio.h>

#include"struct.h"

/*定義并初始化一個(gè)外部結(jié)構(gòu)變量student*/

structstd_infostudent={"000102","張三","男",{1980,9,20}};

main()

{printf("No:%s\n",student.no);

printf("Name:%s\n",);

printf("Sex:%s\n",student.sex);

printf("Birthday:%d-%d-%d\n",student.birthday.year,student.birthday.month,student.birthday.day);}

程序運(yùn)行結(jié)果:No:000102Name:張三Sex:男Birthday:1980-9-20

1.結(jié)構(gòu)變量的引用規(guī)則對于結(jié)構(gòu)變量,要通過成員運(yùn)算符“.”,逐個(gè)訪問其成員,且訪問的格式為:結(jié)構(gòu)變量.成員

/*其中的“.”是成員運(yùn)算符*/例如,案例中的student.no,引用結(jié)構(gòu)變量student中的no成員;引用結(jié)構(gòu)變量student中的name成員,等等。如果某成員本身又是一個(gè)結(jié)構(gòu)類型,則只能通過多級的分量運(yùn)算,對最低一級的成員進(jìn)行引用。此時(shí)的引用格式擴(kuò)展為:

結(jié)構(gòu)變量.成員.子成員.….最低1級子成員例如,引用結(jié)構(gòu)變量student中的birthday成員的格式分別為:student.birthday.yearstudent.birthday.monthstudent.birthday.day(1)對最低一級成員,可像同類型的普通變量一樣,進(jìn)行相應(yīng)的各種運(yùn)算。(2)既可引用結(jié)構(gòu)變量成員的地址,也可引用結(jié)構(gòu)變量的地址。例如,&student.birthday.year,&student。2.結(jié)構(gòu)變量的初始化結(jié)構(gòu)變量初始化的格式,與一維數(shù)組相似:

結(jié)構(gòu)類型

結(jié)構(gòu)變量={初值表}不同的是:如果某成員本身又是結(jié)構(gòu)類型,則該成員的初值為一個(gè)初值表。例如,[案例10.2]中的structstd_info

student={"000102","張三","男",{1980,9,20}};注意:初值的數(shù)據(jù)類型,應(yīng)與結(jié)構(gòu)變量中相應(yīng)成員所要求的一致,否則會出錯。[Return]10.3結(jié)構(gòu)數(shù)組

結(jié)構(gòu)數(shù)組的每一個(gè)元素,都是結(jié)構(gòu)類型數(shù)據(jù),均包含結(jié)構(gòu)類型的所有成員。[案例10.3]

利用[案例10.1]中定義的結(jié)構(gòu)類型structstd_info,定義一個(gè)結(jié)構(gòu)數(shù)組student,用于存儲和顯示三個(gè)學(xué)生的基本情況。/*案例代碼文件名:AL10_3.C*/

#include<stdio.h>#include"struct.h"

/*定義并初始化一個(gè)外部結(jié)構(gòu)數(shù)組student[3]*/

structstd_info

student[3]={{“000102”,“張三”,“男”,{1980,9,20}},

{“000105”,“李四”,“男”,{1980,8,15}},

{“000112”,“王五”,“女”,{1980,3,10}}};

/*主函數(shù)main()*/main(){inti;/*打印表頭:"□"表示1個(gè)空格字符*/printf("No.□□□□Name□□□□□Sex□Birthday\n"); /*輸出三個(gè)學(xué)生的基本情況*/for(i=0;i<3;i++){printf("%-7s",student[i].no);printf("%-9s",student[i].name);printf("%-4s",student[i].sex);printf("%d-%d-%d\n",student[i].birthday.year,student[i].birthday.month,student[i].birthday.day);}} [程序演示]程序運(yùn)行結(jié)果:No.NameSexBirthday000102張三男1980-9-20000105李四男1980-8-15000112王五女1980-3-10

與結(jié)構(gòu)變量的定義相似,結(jié)構(gòu)數(shù)組的定義也分直接定義和間接定義兩種方法,只需說明為數(shù)組即可。與普通數(shù)組一樣,結(jié)構(gòu)數(shù)組也可在定義時(shí)進(jìn)行初始化。初始化的格式為:結(jié)構(gòu)類型結(jié)構(gòu)數(shù)組[n]={{初值表1},{初值表2},...,{初值表n}}例如,本案例中的結(jié)構(gòu)數(shù)組student[3]。[Return]10.4指向結(jié)構(gòu)類型數(shù)據(jù)的指針結(jié)構(gòu)變量在內(nèi)存中的起始地址稱為結(jié)構(gòu)變量的指針。10.4.1指向結(jié)構(gòu)變量的指針

[案例10.4]

使用指向結(jié)構(gòu)變量的指針來訪問結(jié)構(gòu)變量的各個(gè)成員。

/*案例代碼文件名:AL10_4.C*/

#include“struct.h”

structstd_infostudent={“000102”,“張三”,“男”,{1980,9,20}};

main(){structstd_info

*p_std=&student;printf("No:%s\n",p_std->no);printf("Name:%s\n",p_std->name);printf("Sex:%s\n",p_std->sex);printf("Birthday:%d-%d-%d\n",p_std->birthday.year,p_std->birthday.month,p_std->birthday.day);} 通過指向結(jié)構(gòu)變量的指針來訪問結(jié)構(gòu)變量的成員,與直接使用結(jié)構(gòu)變量的效果一樣。一般地說,如果指針變量pointer已指向結(jié)構(gòu)變量var(即pointer=&var),則以下三種形式等價(jià):(1)var.成員(2)pointer->成員(3)(*pointer).成員

/*“*pointer”外面的括號不能??!*/注意:在格式(1)中,分量運(yùn)算符左側(cè)的運(yùn)算對象,只能是結(jié)構(gòu)變量,;而在格式(2)中,指向運(yùn)算符左側(cè)的運(yùn)算對象,只能是指向結(jié)構(gòu)變量(或結(jié)構(gòu)數(shù)組)的指針變量,否則都出錯。思考題:如果要求從鍵盤上輸入結(jié)構(gòu)變量student的各成員數(shù)據(jù),如何修改程序?AL10_4A.C10.4.2指向結(jié)構(gòu)數(shù)組的指針[案例10.5]使用指向結(jié)構(gòu)數(shù)組的指針來訪問結(jié)構(gòu)數(shù)組。/*案例代碼文件名:AL10_5.C*/#include"struct.h"/*定義并初始化一個(gè)外部結(jié)構(gòu)數(shù)組student*/structstd_infostudent[3]={{"000102","張三","男",{1980,5,20}},{"000105","李四","男",{1980,8,15}},{“000112”,“王五”,“女”,{1980,3,10}}};main(){structstd_info*p_std=student; inti=0;/*打印表頭*/printf("No.□□□□Name□□□□□Sex□Birthday\n");/*輸出結(jié)構(gòu)數(shù)組內(nèi)容*/for(;i<3;i++,p_std++){printf("%-7s%-9s%-4s",p_std->no,p_std->name,p_std->sex);printf("%4d-%2d-%2d\n",p_std->birthday.year,p_std->birthday.month,p_std->birthday.day);}} [程序演示]如果指針變量p已指向某結(jié)構(gòu)數(shù)組,則p+1指向結(jié)構(gòu)數(shù)組的下一個(gè)元素,而不是當(dāng)前元素的下一個(gè)成員。10.4.3指向結(jié)構(gòu)數(shù)據(jù)的指針作函數(shù)參數(shù)[案例10.6]用函數(shù)調(diào)用方式,改寫[案例10.5]:編寫一個(gè)專門的顯示函數(shù)display(),通過主函數(shù)調(diào)用來實(shí)現(xiàn)顯示。/*案例代碼文件名:AL10_6.C*/#include"struct.h"/*定義并初始化一個(gè)外部結(jié)構(gòu)數(shù)組student*/structstd_infostudent[3]={{"000102","張三","男",{1980,5,20}},{"000105","李四","男",{1980,8,15}},{“000112”,“王五”,“女”,{1980,3,10}}};/*主函數(shù)main()*/main(){voiddisplay(); /*函數(shù)說明*/inti=0;/*打印表頭*/printf("No.□□□□Name□□□□□Sex□Birthday\n");/*打印內(nèi)容*/for(;i<3;i++){display(student+i); printf("\n");}}voiddisplay(structstd_info*p_std){printf("%-7s%-9s%-4s",p_std->no,p_std->name,p_std->sex);printf("%4d-%2d-%2d\n",p_std->birthday.year,p_std->birthday.month,p_std->birthday.day);} [程序演示][Return]10.5共用型簡介共用型

1.概念

使幾個(gè)不同的變量占用同一段內(nèi)存空間的結(jié)構(gòu)稱為共用型。

2.共用類型的定義──與結(jié)構(gòu)類型的定義類似

union共用類型名

{成員列表;};

3.共用變量的定義──與結(jié)構(gòu)變量的定義類似(1)間接定義──先定義類型、再定義變量例如,定義data共用類型變量un1,un2,un3的語句如下:

uniondata

un1,un2,un3;(2)直接定義──定義類型的同時(shí)定義變量例如,union[data]{inti;charch;floatf;}un1,un2,un3;共用變量占用的內(nèi)存空間,等于最長成員的長度,而不是各成員長度之和。例如,共用變量un1、un2和un3,在16位操作系統(tǒng)中,占用的內(nèi)存空間均為4字節(jié)(不是2+1+4=7字節(jié))。4.共用變量的引用──與結(jié)構(gòu)變量一樣,也只能逐個(gè)引用共用變量的成員例如,訪問共用變量un1各成員的格式為:un1.i、un1.ch、un1.f。[案例10.9]共用體變量的引用(AL10_9.C)5.特點(diǎn)(1)系統(tǒng)采用覆蓋技術(shù),實(shí)現(xiàn)共用變量各成員的內(nèi)存共享,所以在某一時(shí)刻,存放的和起作用的是最后一次存入的成員值。例如,執(zhí)行un1.i=1,un1.ch='c',un1.f=3.14后,un1.f才是有效的成員。(2)由于所有成員共享同一內(nèi)存空間,故共用變量與其各成員的地址相同。例如,&un1=&un1.i=&un1.ch=&un1.f。(3)不能對共用變量進(jìn)行初始化(注意:結(jié)構(gòu)變量可以);也不能將共用變量作為函數(shù)參數(shù),以及使函數(shù)返回一個(gè)共用數(shù)據(jù),但可以使用指向共用變量的指針。(4)共用類型可以出現(xiàn)在結(jié)構(gòu)類型定義中,反之亦然。10.6定義已有類型的別名除可直接使用C提供的標(biāo)準(zhǔn)類型和自定義的類型(結(jié)構(gòu)、共用、枚舉)外,也可使用typedef定義已有類型的別名。該別名與標(biāo)準(zhǔn)類型名一樣,可用來定義相應(yīng)的變量。

定義已有類型別名的方法如下:

(1)按定義變量的方法,寫出定義體;

(2)將變量名換成別名;

(3)在定義體最前面加上typedef。

[案例10.10]給實(shí)型float定義1個(gè)別名REAL。

(1)按定義實(shí)型變量的方法,寫出定義體:floatf;

(2)將變量名換成別名:floatREAL;

(3)在定義體最前面加上typedef:typedeffloatREAL;[案例10.10]

給如下所示的結(jié)構(gòu)類型structdate定義1個(gè)別名DATE。structdate{intyear,month,day;};(1)按定義結(jié)構(gòu)變量的方法,寫出定義體:structdate{……}d;(2)將變量名換成別名:structdate{……}DATE;(3)在定義體最前面加上typedef:typedefstructdate{……}DATE;說明:(1)用typedef只是給已有類型增加1個(gè)別名,并不能創(chuàng)造1個(gè)新的類型。就如同人一樣,除學(xué)名外,可以再取一個(gè)小名(或雅號),但并不能創(chuàng)造出另一個(gè)人來。(2)typedef與#define有相似之處,但二者是不同的:前者是由編譯器在編譯時(shí)處理的;后者是由編譯預(yù)處理器在編譯預(yù)處理時(shí)處理的,而且只能作簡單的字符串替換。[Return]2007年4月1、有以下程序typedefstruct{intb,p;}A;voidf(Ac)/*注意:c是結(jié)構(gòu)變量名*/{intj;c.b+=1;c.p+=2;}main(){inti;Aa={1,2};f(a);printf(“%d,%d\n”,a.b,a.p);}程序運(yùn)行后的輸出結(jié)果是()A)2,3

B)2,4

C)1,4

D)1,22007年4月2、有以下程序

structS{intn;inta[20];};

voidf(structS*p)

{inti,j,t;

for(i=0;i<p->n-1;i++)

for(j=i+1;j<p->n;j++)

if(p->a[i]>p->a[j]){t=p->a[i];p->a[i]=p->a[j];p->a[j]=t;}

}

main()

{inti;structSs={10,{2,3,1,6,8,7,5,4,10,9}};

f(&s);

for(i=0;i<s.n;i++)printf(“%d”,s.a[i]);

}程序運(yùn)行后的輸出結(jié)果是()

A)1,2,3,4,5,6,7,8,9,10,

B)10,9,8,7,6,5,4,3,2,1,

C)2,3,1,6,8,7,5,4,10,9,D)10,9,8,7,6,1,2,3,4,5,2007年4月3、有以下程序

structS{intn;inta[20];};

voidf(int*a,intn)

{inti;

for(i=0;i<n-1;i++)a[i]+=i;

}

main()

{inti;structSs={10,{2,3,1,6,8,7,5,4,10,9}};

f(s.a,s.n);

for(i=0;i<s.n;i++)printf(“%d”,s.a[i]);

}程序運(yùn)行后的輸出結(jié)果是()

A)2,4,3,9,12,12,11,11,18,9,

B)3,4,2,7,9,8,6,5,11,10,

C)2,3,1,6,8,7,5,4,10,9,

D)1,2,3,6,8,7,5,4,10,9,2007年4月4、設(shè)有說明structDATE{intyear;intmonth;intday;};請寫出一條定義語句,該語句定義d為上述結(jié)構(gòu)體變量,并同時(shí)為其成員year、month、day依次賦初值2006、10、1:_______________structDATAd={2006,10,1};2007年9月1、以下關(guān)于typedef的敘述錯誤的是

A)用typedef可以增加新類型

B)typedef只是將已存在的類型用一個(gè)新的名字來代表

C)用typedef可以為各種類型說明一個(gè)新名,但不能用來為變量說明一個(gè)新名

D)用typedef為類型說明一個(gè)新名,通??梢栽黾映绦虻目勺x性2007年9月2、有以下程序

#include<stdio.h>

struct

tt

{int

x;struct

tt*y;}*p;

struct

tt

a[4]={20,a+1,15,a+2,30,a+3,17,a};

main()

{int

i;

p=a;

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

{printf("%d,",p->x);

p=p->y;}

}程序的運(yùn)行結(jié)果是

A)20,30,

B)30,17

C)15,30,

D)20,15,2007年9月3、有以下程序

#include<stdio.h>

#include<string.h>

typedef

struct{

char

name[9];char

sex;

float

score[2];

}STU;

STU

f(STU

a)

{

STU

b={"Zhao",'m',85.0,90.0};

int

i;

strcpy(,);

a.

sex=b.sex;

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

a.score[i]=b.score[i];

return

a;

}

main()

{STU

c={"Qian",'f',95.0,92.0},d;

d=f(c);

printf("%s,%c,%2.0f,%2.0f\n",,d.sex,d.score[0],d.score[1]);

}程序的運(yùn)行結(jié)果是

A)Qian,f,95,92

B)Qian,m,85,90

C)Zhao,m,85,90

D)Zhao,f,95,922007年9月4、設(shè)有以下定義

union

data

{

int

d1;

float

d2;

}demo;則下面敘述中錯誤的是

A)變量demo與成員d2所占的內(nèi)存字節(jié)數(shù)相同

B)變量demo中各成員的地址相同

C)變量demo和各成員的地址相同

D)若給demo.d1賦99后,

demo.d2中的值是99.02008年4月1、以下結(jié)構(gòu)體類型說明和變量定義中正確的是A)typedef

struct

B)struct

REC;

{int

n;

char

c;}REC;

{int

n;

char

c;};

RECt1,t2;

RECt1,t2;C)typedef

struct

REC;

D)struct

{int

n=0;charc=‘A’;}t1,t2;

{int

n;

char

c;}REC;

REC

t1,t2;2008年4月2、有以下程序

#include<stdio.h>

#include<string.h>

typedef

struct{

char

name[9];

char

sex;

float

score[2];

}STU;

void

f(STU

a)

{

STU

b={"Zhao",'m',85.0,90.0};

inti;

strcpy(,);

a.sex=b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

}

main()

{

STU

c={"Qian",'f',95.0,92.0};

f(c);

printf("%s,%c,%2.0f,%2.0f\n",,c.sex,c.score[0],c.score[1]);

}程序的運(yùn)行結(jié)果是A)Qian,f,95,92

B)Qian,m,85,90

C)Zhao,f,95,92

D)Zhao,m,85,902008年4月3、以下程序中函數(shù)fun的功能是:統(tǒng)計(jì)person所指結(jié)構(gòu)體數(shù)組中所有性別(sex)為M的記錄的個(gè)數(shù),存入變量n中,并作為函數(shù)值返回。請?zhí)羁铡?/p>

#include<stdio.h>

#define

N

3

typedef

struct

{

int

num;

char

nam[10];

char

sex;}SS;

int

fun(SS

person[])

{

int

i,n=0;

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

if(【】=='M')

n++;

return

n;

}

main()

{

SS

W[N]={{1,"AA",'F'},{2,"BB",'M'},{3,"CC",'M'}};

int

n;

n=fun(W);

printf("n=%d\n",n);

}person[i].sex2008年9月1、有以下程序

#include

<stdio.h>

struct

st

{int

x,y;}

data[2]={1,10,2,20};

main()

{struct

st*p=data;

printf("%d,",p->y);

printf("%d\n",(++p)->x);

}程序的運(yùn)行結(jié)果是A)10,1

B)20,1

C)10,2

D)20,22008年9月2、#include<stdio.h>

main()

{structSTU{char

name[9];

charsex;doublescore[2];};

structSTU

a={"Zhao",'m',85.0,90.0},b={"Qian",'f',95.0,92.0};

b=a;printf("%s,%c,%2.0f,%2.0f\n",,b.sex,b.score[0],b.score[1]);

}程序的運(yùn)行結(jié)果是A)Qian,f,95,92

B)Qian,m,85,90

C)Zhao,f,95,92

D)Zhao,m,85,902009年3月1、有以下程序#include<stdio.h>struct

ord{

int

x,y;

}dt[2]={1,2,3,4};main(){

struct

ord*p=dt;

printf("%d,",++p->x);

printf("%d\n",++p->y);}程序的運(yùn)行結(jié)果是A)1,2B)2,3C)3,4D)4,1注意:運(yùn)算符->的優(yōu)先級高于++2009年3月2、下列程序的運(yùn)行結(jié)果為【1001,ChangRong,1098.0】#include<stdio.h>#include<string.h>struct

A{int

a;

char

b[10];double

c;};void

f(struct

A*t);main(){

struct

A

a={1001,"ZhangDa",1098.0};

f(&a);

printf("%d,%s,%6.1f\n",a.a,a.b,a.c);}void

f(struct

A*t){

strcpy(t->b,"ChangRong");}

2009年9月1、下面結(jié)構(gòu)體的定義語句中,錯誤的是A)struct

ord

{int

x;int

y;int

z;};struct

ord

a;B)struct

ord

{int

x;int

y;int

z;}

struct

ord

a;C)struct

ord

{int

x;int

y;int

z;}

n;D)struct

{int

x;int

y;int

z;}

a;2009年9月2、有以下程序#include<stdio.h>#include<string.h>struct

A{

int

a;char

b[10];double

c;};struct

A

f(struct

A

t);main(){

struct

A

a={1001,"ZhangDa",1098.0};

a=f(a);

printf("%d,%s,%6.1f\n",a.a,a.b,a.c);}struct

A

f(struct

A

t){

t.a=1002;strcpy(t.b,"ChangRong");t.c=1202.0;return

t;}程序運(yùn)行后的輸出結(jié)果是A)1001,ZhangDa,1098.0B)1002,ZhangDa,1202.0C)1001,ChangRong,1098.0D)1002,ChangRong,1202.02009年9月3、設(shè)有定義struct

person{

int

ID;char

name[12];}

p;請將scanf("%d",【】);語句補(bǔ)充完整,使其能夠?yàn)榻Y(jié)構(gòu)體變量p的成員ID正確讀入數(shù)據(jù)。4、有以下程序#include

<stdio.h>typedef

struct{

int

num;double

s;}

REC;void

fun1(REC

x){

x.num=23;x.s=88.5;

}main(){

REC

a={16,90.0};

fun1(a);

printf("%d\n",a.num);}程序運(yùn)行后的輸出結(jié)果是【】&p.ID162010年3月1、設(shè)有定義:

structcomplex

{intreal,unreal;}data1={1,8},data2;則以下賦值語句中錯誤的是

A)data2=data1;

B)data2=(2,6);

C)data2.real=data1.real;

D)data2.real=data1.unreal;2、有以下定義和語句

structworkers{intnum;charname[20];charc;

struct{intday;intmonth;intyear;}s;};

structworkersw,*pw;

pw=&w;能給w中year成員賦1980的語句是

A)*pw.year=1980;

B)w.year=1980;

C)pw->year=1980;

D)w.s.year=1980;2010年3月3、有以下程序

#include<stdio.h>

#include<string.h>

structA

{inta;charb[10];doublec;};

voidf(structAt);

main()

{structAa={1001,"ZhangDa",1098.0};

f(a);printf("%d,%s,%6.1f\n",a.a,a.b,a.c);

}

voidf(structAt)

{t.a=1002;strcpy(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論