下載本文檔
版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度塔吊司機(jī)承包勞務(wù)合作協(xié)議書3篇
- 2024年版標(biāo)準(zhǔn)化建筑工程協(xié)議范本版
- 《頜面神經(jīng)痛》課件
- 2024年版專業(yè)養(yǎng)殖場租賃協(xié)議范本一
- 2024年標(biāo)準(zhǔn)版英文個(gè)人擔(dān)保協(xié)議模板版B版
- 2024年歐洲能源市場交易合同
- 2024年專業(yè)文印室設(shè)備銷售與承包服務(wù)合同3篇
- 2024年標(biāo)準(zhǔn)股東擔(dān)保借款協(xié)議版B版
- 2025北京市房屋出租居間合同范本
- 2024年單位內(nèi)部施工承包協(xié)議樣式版
- 小學(xué)語文作文技巧六年級寫人文章寫作指導(dǎo)(課堂PPT)
- NLP時(shí)間線療法
- JJG596-2012《電子式交流電能表檢定規(guī)程》
- 醫(yī)療質(zhì)量檢查分析、總結(jié)、反饋
- 《APQP培訓(xùn)資料》
- 通信線路架空光纜通用圖紙指導(dǎo)
- 家具銷售合同,家居訂購訂貨協(xié)議A4標(biāo)準(zhǔn)版(精編版)
- 食品加工與保藏課件
- 銅芯聚氯乙烯絕緣聚氯乙烯護(hù)套控制電纜檢測報(bào)告可修改
- 有功、無功控制系統(tǒng)(AGCAVC)技術(shù)規(guī)范書
- PE拖拉管施工方案(完整版)
評論
0/150
提交評論