版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1
C語言程序設(shè)計(jì)任務(wù)式教程(微課版)
VisualC++模塊6組合數(shù)據(jù)類型任務(wù)1結(jié)構(gòu)體任務(wù)2共用體任務(wù)3枚舉3計(jì)算機(jī)工程學(xué)院模塊6組合數(shù)據(jù)類型任務(wù)1結(jié)構(gòu)體學(xué)習(xí)目標(biāo)掌握結(jié)構(gòu)體類型的說明、結(jié)構(gòu)體變量的定義及初始化方法、掌握結(jié)構(gòu)體變量成員的引用、結(jié)構(gòu)體數(shù)組的使用、領(lǐng)會存儲動態(tài)分配和釋放。4計(jì)算機(jī)工程學(xué)院6.1.1案例講解案例1學(xué)生信息的描述1.問題描述
假定一個(gè)學(xué)生的信息包括學(xué)號,姓名,成績,在數(shù)據(jù)處理中,我們通常把一個(gè)學(xué)生信息作為整體,編程構(gòu)造一個(gè)學(xué)生信息類型,并實(shí)現(xiàn)其輸入,輸出。2.編程分析
(1)C語言中的結(jié)構(gòu)體類型可以將不同類型的信息組織成一個(gè)整體,構(gòu)造出一種新的類型,這里我們可以構(gòu)造學(xué)生類型,學(xué)生是我們處理信息的基本單位。5計(jì)算機(jī)工程學(xué)院
(2)新構(gòu)造的類型沒有對應(yīng)的輸入,輸出格式控制符,需要把學(xué)生類型包含的各個(gè)成員分別輸出,可以定義函數(shù)來實(shí)現(xiàn)學(xué)生信息的輸入和輸出。3.編寫源程序#include<stdio.h>structstudent{ intnumber; charname[10]; floatscore;};6計(jì)算機(jī)工程學(xué)院voidprintStu(structstudent*p);
structstudentinputStu();voidmain(){
structstudentstu1;
printf("請輸入一個(gè)學(xué)生的信息(學(xué)號姓名成績)\n");
stu1=inputStu();
printf("結(jié)構(gòu)體變量中的內(nèi)容是:\n");
printStu(&stu1);}voidprintStu(structstudent*p)7計(jì)算機(jī)工程學(xué)院{printf("%d%s%f\n",p->number,p->name,p->score);}structstudentinputStu(){ structstudentstu;scanf("%d%s%f",&stu.number,,&stu.score); returnstu;
}8計(jì)算機(jī)工程學(xué)院4.程序運(yùn)行結(jié)果圖6-1案例1運(yùn)行結(jié)果9計(jì)算機(jī)工程學(xué)院5.歸納分析
(1)結(jié)構(gòu)體類型定義在函數(shù)外面,它的使用范圍是全局的,以便所有的函數(shù)都可以使用。(2)stu1是結(jié)構(gòu)體變量,它的類型是structstudent,stu1包含3個(gè)成員:學(xué)號,姓名,成績,變量占用的存儲空間大小sizeof(stu1)=sizeof(number)+sizeof(name)+sizeof(score),若要表示這個(gè)學(xué)生的成績是90分,可以寫成:stu1.score=90,“.”在這里是一個(gè)運(yùn)算符。
10計(jì)算機(jī)工程學(xué)院(3)程序中還用到了結(jié)構(gòu)體指針:structstudent*p,并且這個(gè)指針作為函數(shù)的參數(shù),根據(jù)參數(shù)的傳遞,p=&stu1,使用指針操作結(jié)構(gòu)體變量中的成員有兩種寫法:p->score或(*p).score,它們的值與stu1.score相等。11計(jì)算機(jī)工程學(xué)院案例2職工信息的查詢1.問題描述有6個(gè)職工的信息,其中每個(gè)職工信息包括編號、姓名、工資,請找到工資最高的職工并輸出其信息。2.編程分析
(1)把編號,姓名,工資組合成一個(gè)整體,作為新的數(shù)據(jù)類型,用這個(gè)類型定義長度為6的數(shù)組,再利用數(shù)組中查找最大值的算法來解決問題。12計(jì)算機(jī)工程學(xué)院
(2)偽代碼如下:定義結(jié)構(gòu)體:職工
voidmain(){定義結(jié)構(gòu)體數(shù)組用于保存6個(gè)職工信息;定義變量i用于控制循環(huán)次數(shù);定義變量k記錄工資最高的職工;循環(huán)輸入6個(gè)職工的信息;設(shè)k的初值為0(從第0位職工開始找);循環(huán)變量i=1;循環(huán)比較大?。?3計(jì)算機(jī)工程學(xué)院
{如果第i個(gè)職工的工資>第k個(gè)職工的工資
k=i;
}輸出第k個(gè)(即工資最高的)職工的信息;
}3.編寫源程序#include<stdio.h>
structworker{intnumber;
14計(jì)算機(jī)工程學(xué)院charname[20];floatpay;};voidmain(){
structworkerw[6];inti,k;printf("輸入6個(gè)員工信息\n");printf("編號姓名工資\n");for(i=0;i<6;i++){15計(jì)算機(jī)工程學(xué)院scanf("%d%s%f",&w[i].number,w[i].name,&w[i].pay);}k=0;i=1;while(i<6)
{
if(w[i].pay>w[k].pay)k=i;i++;
}
printf("工資最高的人員信息是:\n");
printf("%d\t%s\t%f\n",w[k].number,w[k].name,w[k].pay);}16計(jì)算機(jī)工程學(xué)院4.程序運(yùn)行結(jié)果圖6-2案例2運(yùn)行結(jié)果17計(jì)算機(jī)工程學(xué)院5.歸納分析結(jié)構(gòu)體類型的名稱是structworker,用結(jié)構(gòu)體類型來定義結(jié)構(gòu)體變量或結(jié)構(gòu)體數(shù)組。w是長度為6的數(shù)組,存放6個(gè)員工的信息,那么第一個(gè)員工就是w[0],第六個(gè)員工就是w[5],第一個(gè)員工的工資表示為:w[0].pay,第一個(gè)員工的姓名是:w[0].name;輸入或輸出第i個(gè)員工的信息時(shí)不能對w[i]整體進(jìn)行操作,用格式控制符%d對應(yīng)w[i].number,%s對應(yīng)w[i].name,%f對應(yīng)w[i].pay,因?yàn)閚umber是int型的,name是字符串,pay是float型數(shù)據(jù)。18計(jì)算機(jī)工程學(xué)院查找最大值時(shí)第k個(gè)員工就是工資最高的人員,如果有人的工資比第k個(gè)員工還高,那么更新最高紀(jì)錄k,這使得k始終是工資高的員工的下標(biāo)。19計(jì)算機(jī)工程學(xué)院6.1.2基礎(chǔ)理論
在前面學(xué)習(xí)的各種數(shù)據(jù)類型包括數(shù)組在內(nèi),都只能存放同類型的數(shù)據(jù)。而在日常的數(shù)據(jù)處理中,我們經(jīng)常需要將若干不同類型的數(shù)據(jù)組合起來,作為一個(gè)整體進(jìn)行處理。例如一個(gè)學(xué)生的數(shù)據(jù)信息有:學(xué)號、姓名、性別、成績、家庭住址等,這些信息分別具有整型、字符型、實(shí)型等不同的類型。20計(jì)算機(jī)工程學(xué)院
C語言提供的結(jié)構(gòu)體(structure)或稱之為“結(jié)構(gòu)”類型,就可將這些不同類型的信息組織成一個(gè)整體。
“結(jié)構(gòu)體”是由若干“成員”(數(shù)據(jù)信息)組成的一種構(gòu)造類型。每一個(gè)成員可以是一個(gè)基本數(shù)據(jù)類型或者又是一個(gè)構(gòu)造類型,結(jié)構(gòu)體就是一種“構(gòu)造”而成的數(shù)據(jù)類型。21計(jì)算機(jī)工程學(xué)院1.結(jié)構(gòu)體類型的定義結(jié)構(gòu)體類型定義的一般形式:
struct<結(jié)構(gòu)體名>{<成員表列>};其中struct是定義結(jié)構(gòu)體類型的關(guān)鍵字,<結(jié)構(gòu)體名>由用戶根據(jù)標(biāo)識符的命名規(guī)則進(jìn)行命名,成員表列由結(jié)構(gòu)體中各個(gè)成員組成。例如:22計(jì)算機(jī)工程學(xué)院
structstudent{longnum;/*學(xué)生的學(xué)號*/charname[20];/*學(xué)生的名字*/charsex;/*性別*/floatscore;/*成績*/};在這個(gè)結(jié)構(gòu)體定義中,結(jié)構(gòu)體名為student,該結(jié)構(gòu)體由4個(gè)成員組成。第一個(gè)成員num為整型變量;第二個(gè)成員name為字符數(shù)組;第三個(gè)成員sex為字符變量;第四個(gè)成員score為實(shí)型變量。這四個(gè)成員組成的成員表列就是結(jié)構(gòu)體structstudent的成員信息。23計(jì)算機(jī)工程學(xué)院定義結(jié)構(gòu)體時(shí)的注意事項(xiàng):
(1)結(jié)構(gòu)體名字符合標(biāo)識符的規(guī)則,盡量取有實(shí)際意義的標(biāo)識符。(2)注意大括號外的分號,不能少。(3)結(jié)構(gòu)體成員可以是任何的基本數(shù)據(jù)類型變量,也可以是數(shù)組、指針類型的變量,還允許是其它類型的結(jié)構(gòu)體變量。例如:24計(jì)算機(jī)工程學(xué)院structdata{intyear;/*年*/intmonth;/*月*/intday;/*日*/};structstudent{longnum;/*學(xué)生的學(xué)號*/charname[20];/*學(xué)生的名字*/charsex;/*性別*/
structdatabirthday;floatscore;/*成績*/};25計(jì)算機(jī)工程學(xué)院
在structstudent這個(gè)結(jié)構(gòu)體中又包含了birthday這個(gè)結(jié)構(gòu)體變量,形成了結(jié)構(gòu)體的嵌套定義形式。2.結(jié)構(gòu)體變量的說明和其它類型的變量一樣,結(jié)構(gòu)體類型的變量也須先說明。結(jié)構(gòu)體變量的說明有四種方法:
(1)先定義結(jié)構(gòu)體類型,再說明結(jié)構(gòu)體變量。一般形式為:
struct結(jié)構(gòu)體名變量名表列;例如:26計(jì)算機(jī)工程學(xué)院
structstudent/*定義結(jié)構(gòu)體類型*/{longnum;
charname[20];
charsex;
floatscore;};
structstudentstudent1,student2;/*說明結(jié)構(gòu)體變量*/在本例中說明了兩個(gè)structstudent類型的結(jié)構(gòu)體變量student1,student2。變量名之間用逗號隔開。注意在定義結(jié)構(gòu)體時(shí),系統(tǒng)沒有為其分配內(nèi)存空間,只有在進(jìn)行具體的變量說明時(shí)才為變27計(jì)算機(jī)工程學(xué)院
量分配內(nèi)存空間。即在本例中系統(tǒng)不為結(jié)構(gòu)體structstudent分配內(nèi)存空間,只為變量student1和student2分配空間。如圖6-3所示:
student1:
student2:圖6-3結(jié)構(gòu)體變量
(2)在定義結(jié)構(gòu)體的同時(shí)說明結(jié)構(gòu)體變量。一般形式為:2003001LiPingM91.52003001ZhaoQiangF89.028計(jì)算機(jī)工程學(xué)院
struct結(jié)構(gòu)體名{成員表列}變量名表列;
例如:structstudent{longnum;
charname[20];
charsex;
floatscore;}student1,student2;29計(jì)算機(jī)工程學(xué)院(3)利用無名結(jié)構(gòu)說明結(jié)構(gòu)體變量。一般形式為:
struct{
成員表列;}變量名表列;例如:struct{longnum;charname[20];charsex;floatscore;}student1,student2;30計(jì)算機(jī)工程學(xué)院這種方法同樣說明了兩個(gè)結(jié)構(gòu)體變量student1和student2,但在程序的其他地方(例如在函數(shù)內(nèi)部)不可以使用這種結(jié)構(gòu)體來說明其它的變量,因此這種方法使用的比較少。
(4)利用重命名類型(typedef)說明結(jié)構(gòu)體在C語言中允許用戶自己定義類型說明符,即利用類型定義符typedef為數(shù)據(jù)類型取“別名”。一般形式為:
typedef已定義的類型標(biāo)識符新標(biāo)識符;作用:利用新標(biāo)識符代替原來已定義的類型標(biāo)識符。31計(jì)算機(jī)工程學(xué)院例如:typedefintINTEGER;
typedeffloatREAL;分別用INTEGER和REAL代替系統(tǒng)中已存在的int和float類型,就可以利用它們說明新的變量。例如:INTEGERa,b;
REALc,d;下面利用typedef說明結(jié)構(gòu)體,例如:32計(jì)算機(jī)工程學(xué)院先定義新類型名:typedefstruct{
longnum;
charname[20];
charsex;
floatscore;}STUD;說明新的結(jié)構(gòu)體變量:STUDstudent1,student2;關(guān)于typedef需要注意的是它不是創(chuàng)建新的類型,只是為標(biāo)識符取一個(gè)別名,使以后的使用更加靈活方便。33計(jì)算機(jī)工程學(xué)院3.結(jié)構(gòu)體的引用與初始化結(jié)構(gòu)體被說明后就可以在程序中引用它,對結(jié)構(gòu)體變量的使用是通過對其成員的引用來實(shí)現(xiàn)的。引用結(jié)構(gòu)體變量的常用方式是利用“.”(成員分量)運(yùn)算符,一般形式為:
<結(jié)構(gòu)體變量名>.<成員名>例如下列語句:student1.num=2003001;strcpy(,"LiPing");/*不能用="LiPing";*/student1.sex=’M’;student1.score=91.5;34計(jì)算機(jī)工程學(xué)院通過成員的引用,完成了對結(jié)構(gòu)體變量student1的賦值。如果結(jié)構(gòu)體成員又是一個(gè)結(jié)構(gòu)體,需要利用若干個(gè)“.”,一級一級地找到最低層的成員,對其進(jìn)行操作。例如:
student1.birthday.year=2003;結(jié)構(gòu)體變量和其它變量一樣,可以在定義的時(shí)候給它賦初始值,即初始化。和前面四種形式對應(yīng)它們的初始化情況如下:
第一種形式的初始化:35計(jì)算機(jī)工程學(xué)院structstudent{longnum;charname[20];charsex;floatscore;};structstudentstudent1={2003001,"LiPing",’M’,91.5};第二種形式的初始化:
structstudent{longnum;36計(jì)算機(jī)工程學(xué)院charname[20];
charsex;
floatscore;}student1={2003001,"LiPing",’M’,91.5};第三種形式的初始化:struct{longnum;
charname[20];
charsex;
floatscore;}student1={2003001,"LiPing",’M’,91.5};37計(jì)算機(jī)工程學(xué)院第四種形式的初始化:typedefstruct{longnum;
charname[20];
charsex;
floatscore;}STUD;STUDstudent1={2003001,"LiPing",’M’,91.5};
38計(jì)算機(jī)工程學(xué)院4.結(jié)構(gòu)體數(shù)組在前面的學(xué)習(xí)中知道相同的數(shù)據(jù)類型可以存放在一個(gè)數(shù)組中,同樣多個(gè)屬于同一類型結(jié)構(gòu)體的數(shù)據(jù)信息也可以存放在同一個(gè)數(shù)組中,構(gòu)成結(jié)構(gòu)體數(shù)組。例如,利用以前定義的結(jié)構(gòu)體類型說明結(jié)構(gòu)體數(shù)組:
structstudentstu[3];在本例中定義了一個(gè)數(shù)組stu,由3個(gè)struct
student類型的數(shù)組元素組成。對于結(jié)構(gòu)體數(shù)組的初始化和以前的結(jié)構(gòu)體及數(shù)組的初始化的方法類似,結(jié)構(gòu)體數(shù)組初始化的基本形式為:39計(jì)算機(jī)工程學(xué)院定義的結(jié)構(gòu)體數(shù)組={初值表列};例如:structstudentstu[3]={{2003001,"Liguohua",’M’,89.5},{2003002,"Zhangpiang",’F’,90},{2003003,"Liujun",’M’,87}};當(dāng)對全部元素作初始化賦值時(shí),也可不給出數(shù)組長度。40計(jì)算機(jī)工程學(xué)院
5.結(jié)構(gòu)體指針在前面學(xué)習(xí)了不同用途的指針,如指向數(shù)組的指針、指向指針數(shù)組的指針和指向函數(shù)的指針等,對于結(jié)構(gòu)體數(shù)據(jù)同樣也可以使用指針。把這種指向結(jié)構(gòu)體的指針稱為結(jié)構(gòu)體指針。結(jié)構(gòu)體指針和前面學(xué)習(xí)的指針在特性上完全相象,指針變量也可以指向結(jié)構(gòu)體數(shù)組。指針變量的值是結(jié)構(gòu)體變量的起始地址。指向結(jié)構(gòu)體變量的指針的一般形式: <結(jié)構(gòu)體類型名>*<指針變量名>;(1)指向結(jié)構(gòu)體變量的指針(2)指向結(jié)構(gòu)體數(shù)組的指針(3)結(jié)構(gòu)體指針作為函數(shù)參數(shù)
定義指向結(jié)構(gòu)體變量的指針
typedefstructstudent{charname[20];intage;ints1,s2;}SD;
SDx,stu,*p;
p=&stu;成員的引用格式(1)結(jié)構(gòu)體變量名.成員名stu.name例:scanf(“%s”,);scanf(“%d”,&x.age);x.s1=89;x.s2=78;gets(stu.name);(*p).age=21;scanf(“%d”,&p->s1);p->s2=90;(2)(*指針變量名).成員名(*p).age(3)指針變量名->成員名p->s1賦值語句p=&student;
指針變量p指向結(jié)構(gòu)體變量student引用結(jié)構(gòu)體中的成員變量:
(*p).成員名
或
p->成員名相當(dāng)于student.成員名pstudent對結(jié)構(gòu)體數(shù)組及其元素可以用指針來指向例如:
structstruct_name{charname[10];intnum;floatscore;};/*定義結(jié)構(gòu)體類型標(biāo)識符*/structstruct_namestd[30],*p;指向結(jié)構(gòu)體數(shù)組的指針900390趙明879002王建899001李紅結(jié)構(gòu)體數(shù)組stdstd[0]std[1]std[2]p賦值語句p=std;/*p指向一個(gè)結(jié)構(gòu)體數(shù)組std*//*指針變量p存放的是數(shù)組std的首地址*/引用:p->name;p->num;p->score;趙明909003879002王建899001李紅結(jié)構(gòu)體數(shù)組stdstd[0]std[1]std[2]思考:賦值語句p=std+1;和p++;
分別代表指針p指向哪里?p->name;p->num;p->score;代表的信息發(fā)生了什么變化?pp#include<stdio.h>structstudent{intnum;charname[20];charsex;intage;};/*指向結(jié)構(gòu)體類型的數(shù)組的初始化*/structstudentstu[3]={{10101,"LiLin",'M',18},{10102,"ZhangFun",'M',19},{10104,"WangMin",'F',20}};voidmain(){structstudent*p;/*指向結(jié)構(gòu)體類型的指針變量*/printf("NO\tName\t\t\tSex\tAge\n");for(p=stu;p<stu+3;p++)/*循環(huán)地址*/{printf("%5d\t%-20s%4c%8d\n",p->num,p->name,p->sex,p->age);//printf("%5d\t%-20s%4c%8d\n",(*p).num,(*p).name,(*p).sex,(*p).age);}}48計(jì)算機(jī)工程學(xué)院
6.動態(tài)空間管理*C語言為用戶提供了一些內(nèi)存管理函數(shù),這些內(nèi)存管理函數(shù)可以按需要動態(tài)地分配內(nèi)存空間,
也可把不再使用的空間回收待用,為有效地利用內(nèi)存資源提供了手段。常用的內(nèi)存管理函數(shù)有以下兩個(gè):
(1)分配內(nèi)存空間函數(shù)malloc
函數(shù)原型:void*malloc(unsignedintsize);作用:在內(nèi)存的動態(tài)存儲區(qū)中分配一塊長度為size個(gè)字節(jié)的連續(xù)區(qū)域。函數(shù)的返回值為該區(qū)域的起始地址的指針。若分配不成功返回NULL。49計(jì)算機(jī)工程學(xué)院
調(diào)用形式:(<類型說明符>*)malloc(size)
<類型說明符>表示把該區(qū)域用于存放何種類型的數(shù)據(jù),(<類型說明符>*)表示把返回值強(qiáng)制轉(zhuǎn)換為該類型的指針。例如:#defineLENsizeof(structstudent)structstudent*p;p=(structstudent*)malloc(LEN);表示分配29個(gè)字節(jié)(structstudent類型的大小)的內(nèi)存空間,并把函數(shù)的返回值強(qiáng)制轉(zhuǎn)換為structstudent類型的指針后賦予指針變量p。50計(jì)算機(jī)工程學(xué)院(2)釋放內(nèi)存空間函數(shù)free函數(shù)原型:voidfree(void*block);作用:釋放block所指向的一塊內(nèi)存空間,block是一個(gè)任意類型的指針變量,它指向被釋放區(qū)域的首地址。被釋放區(qū)應(yīng)是由malloc函數(shù)所分配的區(qū)域。調(diào)用形式:
free(p);
/*p是指向被釋放區(qū)域的指針*/注意使用這兩個(gè)函數(shù)需要引用兩個(gè)頭文件“stdio.h”和“alloc.h”。51計(jì)算機(jī)工程學(xué)院6.1.3技能訓(xùn)練
【實(shí)驗(yàn)6.1.1】有一個(gè)結(jié)構(gòu)體變量student,包含學(xué)號和3門課的成績。要求編寫一個(gè)輸入函數(shù)進(jìn)行賦值,并編寫一個(gè)輸出函數(shù)進(jìn)行輸出操作?!局笇?dǎo)】
(1)編程分析
●結(jié)構(gòu)體中的3個(gè)成績可以定義成數(shù)組
●整個(gè)程序需要3個(gè)函數(shù):輸入函數(shù),輸出函數(shù),主函數(shù)
●注意函數(shù)的參數(shù)是結(jié)構(gòu)體變量52計(jì)算機(jī)工程學(xué)院(2)示例程序#include“stdio.h”typedefstructstudent{intnum;floatscore[3];}STUDENT;STUDENTindata(){STUDENTstu;scanf(“%d”,&stu.num);scanf(“%f%f%f”,&stu.score[0],&stu.score[1],&stu.score[2]);return(stu);}53計(jì)算機(jī)工程學(xué)院voidprint(STUDENTstud){printf(“學(xué)號=%d\n”,stud.num);printf(“成績1=%f\n”,stud.score[0]);printf(“成績2=%f\n”,stud.score[1]);printf(“成績3=%f\n”,stud.score[2]);}voidmain(){STUDENTstud;printf(“請輸入學(xué)號和3門成績\n”);stud=indata();printf(“這個(gè)學(xué)生的信息是:\n”);”’print(stud);}54計(jì)算機(jī)工程學(xué)院(3)程序的執(zhí)行結(jié)果如圖6-4所示。圖6-4運(yùn)行結(jié)果
在此例中使用了結(jié)構(gòu)體函數(shù)和使用結(jié)構(gòu)體變量在函數(shù)間傳遞數(shù)據(jù)。在主函數(shù)中說明了結(jié)構(gòu)體55計(jì)算機(jī)工程學(xué)院變量stud并通過調(diào)用結(jié)構(gòu)體函數(shù)indata()進(jìn)行賦值,并將stud作為函數(shù)實(shí)參調(diào)用print()函數(shù)輸出數(shù)據(jù)?!緦?shí)驗(yàn)6.1.2】根據(jù)學(xué)生的學(xué)號查找學(xué)生的信息(要求利用函數(shù)實(shí)現(xiàn))?!局笇?dǎo)】(1)編程分析
●先定義結(jié)構(gòu)體數(shù)組,初始化n個(gè)學(xué)生的信息。
●輸入學(xué)生的學(xué)號,輸出查找到的結(jié)果在主函數(shù)中實(shí)現(xiàn)56計(jì)算機(jī)工程學(xué)院
●因此需定義查找函數(shù),函數(shù)的參數(shù)是學(xué)號和數(shù)組,函數(shù)的返回值是找到的學(xué)生信息的地址。(2)示例程序#include"stdio.h"structstudent{longnum;charname[20];charsex;floatscore;
};57計(jì)算機(jī)工程學(xué)院
structstudentstud[]={{2003101,"Wangling",’M’,94},{2003102,"Liping",’F’,87},{2003103,"Zhengjiujuan",’F’,93},{0,"\0",’\0’,0}};structstudent*find(structstudent*p,longnumber);voidmain(){structstudent*p;longnumber;charch;do{58計(jì)算機(jī)工程學(xué)院printf("\n請輸入學(xué)號:");scanf("%ld",&number);p=find(stud,number);if(p!=0){printf("學(xué)號姓名性別成績:\n");printf("%-10ld%-16s%c%8.1f\n",p->num,p->name,p->sex,p->score);}elseprintf(“沒有找到\n”);printf("\n請輸入'Y'or'y'繼續(xù)查找:");ch=getchar();59計(jì)算機(jī)工程學(xué)院}while(ch==’Y’||ch==’y’);}structstudent*find(structstudent*p,longnumber){while(p->num!=number&&p->num!=0) p++;if(p->num!=0)returnp;elsereturn0;}60計(jì)算機(jī)工程學(xué)院(3)程序的執(zhí)行結(jié)果如圖6-5所示。圖6-5運(yùn)行結(jié)果61計(jì)算機(jī)工程學(xué)院在此程序中,利用結(jié)構(gòu)體類型的指針p指向structstudent類型數(shù)組stud[]的首地址,在調(diào)用find()函數(shù)時(shí),必須使用結(jié)構(gòu)體數(shù)組stud[]的起始地址stud作為實(shí)參,傳給形參p,p指向stud(如圖所示)。在find函數(shù)中利用p對其進(jìn)行操作,查找到后,返回p。
62計(jì)算機(jī)工程學(xué)院
【實(shí)驗(yàn)6.1.3】計(jì)算學(xué)生的平均成績和不及格的人數(shù)。【指導(dǎo)】
(1)編程分析●首先需定義學(xué)生類型的結(jié)構(gòu)體,并定義結(jié)構(gòu)體數(shù)組,保存學(xué)生的成績信息?!窦俣〝?shù)組的長度為N,則用for語句循環(huán)N次,累加出學(xué)生的總成績,最后除以N得到平均成績?!窭奂拥耐瑫r(shí)判斷這個(gè)成績是否小于60,小則不及格人數(shù)加一。63計(jì)算機(jī)工程學(xué)院(2)偽代碼定義結(jié)構(gòu)體structstudent定義結(jié)構(gòu)體數(shù)組并初始化數(shù)據(jù)voidmain(){定義變量:用于保存循環(huán)控制變量,不及格人數(shù),總分,平均分循環(huán):{累加求和
if(成績<60)不及格人數(shù)++}輸出結(jié)果}64計(jì)算機(jī)工程學(xué)院(3)示例程序
#include<stdio.h>structstudent{longnum;charname[20];charsex;floatscore;}stu[5]={{2003101,"Liping",’M’,45},{2003102,"Zhangping",’M’,62.5},{2003103,"Hefang",’F’,92.5},{2003104,"Chengling",’F’,87},{2003105,"Wangming",’M’,58},};65計(jì)算機(jī)工程學(xué)院voidmain(){inti,c=0;floatave,sum=0;for(i=0;i<5;i++){sum+=stu[i].score;if(stu[i].score<60)c+=1;}ave=sum/5;printf("平均成績=%f\n不及格人數(shù)=%d\n",ave,c);}66計(jì)算機(jī)工程學(xué)院本例程序中定義了一個(gè)外部結(jié)構(gòu)體數(shù)組stu,共5個(gè)元素,并作了初始化賦值。在main函數(shù)中用for語句逐個(gè)累加各元素的score,成員的和值存于sum之中,如score的值小于60(不及格)即計(jì)數(shù)器C加1,循環(huán)完畢后計(jì)算平均成績,并輸出平均分及不及格人數(shù)。(4)運(yùn)行情況如下67計(jì)算機(jī)工程學(xué)院圖6-6運(yùn)行結(jié)果68計(jì)算機(jī)工程學(xué)院6.1.4拓展與練習(xí)1.定義一個(gè)結(jié)構(gòu)體類型,成員包括:姓名、電子信箱和QQ號碼。編寫input函數(shù)輸入5個(gè)成員的記錄,并編寫一個(gè)函數(shù)print打印輸出這些數(shù)據(jù).2.編寫程序,由鍵盤輸入某商場的各商品的商品名、價(jià)格、銷售量,計(jì)算各商品的銷售額,并輸出銷售額前10名的商品信息。3.a(chǎn)和b是按學(xué)號升序有序的結(jié)構(gòu)體數(shù)組,結(jié)構(gòu)體類型包括學(xué)號和成績兩個(gè)成員,把這兩個(gè)數(shù)組合并成一個(gè)按學(xué)號升序有序的數(shù)組c。69計(jì)算機(jī)工程學(xué)院6.1.5編程規(guī)范與常見錯(cuò)誤1.不能將結(jié)構(gòu)變量作為一個(gè)整體進(jìn)行輸入和輸出。例如:
printf("Number=%ld\nName=%s\nSex=%c\nScore=%.2f\n",student);是錯(cuò)誤的,應(yīng)該是:printf("Number=%ld\nName=%s\nSex=%c\nScore=%.2f\n",student.number,,student.sex,student.score);70計(jì)算機(jī)工程學(xué)院2.成員可以是任意類型,如果成員本身又屬于一個(gè)結(jié)構(gòu)體類型,要一級一級地找到最低一級的成員如:student結(jié)構(gòu)體變量s1,訪問學(xué)生的生日:s1.birthday.month,不能使用s1.birthday,因?yàn)閎irthday本身是一個(gè)結(jié)構(gòu)體。結(jié)構(gòu)體是一個(gè)類型,而不是變量,定義變量時(shí)關(guān)鍵字struct不能省略,如定義一個(gè)學(xué)生:structstudents1,通常用typedefstructstudentSTU,這時(shí)可以用STU來定義變量,如STUs1;71計(jì)算機(jī)工程學(xué)院任務(wù)2共用體學(xué)習(xí)目標(biāo)
掌握共用體類型的說明、共用體變量的定義及初始化方法、掌握共用體變量成員的引用。72計(jì)算機(jī)工程學(xué)院6.2.1案例講解1.問題描述:有一個(gè)unsignedlong型整數(shù),分別將前2個(gè)字節(jié)和后2個(gè)字節(jié)作為兩個(gè)unsignedshort型輸出。2.編程分析
unsignedlong類型占用4個(gè)字節(jié),取其中的兩個(gè)字節(jié)需要定義unsignedshort型變量。
方法一:定義unsignedshort型指針p,則*p和*(p+1)是前2個(gè)字節(jié)和后2個(gè)字節(jié)。
方法二:定義兩個(gè)unsignedshort變量,并與unsignedlong變量使用同一個(gè)地址空間,即定義共用體。73計(jì)算機(jī)工程學(xué)院3.編寫源程序
#include<stdio.h>uniondata{unsignedlongul;unsignedshortua[2];};voidmain(){uniondataw;unsignedshorthighbyte,lowbyte;w.ul=0x12345678;highbyte=w.ua[1];lowbyte=w.ua[0];printf("整型變量的值是%lx\n",w.ul);printf("前兩個(gè)字節(jié)是%x,后兩個(gè)字節(jié)是%x\n",highbyte,lowbyte);}74計(jì)算機(jī)工程學(xué)院4.程序運(yùn)行結(jié)果圖6-7運(yùn)行結(jié)果75計(jì)算機(jī)工程學(xué)院5.歸納分析
(1)程序中&u1和ua是相等的,u1和ua共用同一塊存儲空間,即sizeof(w)=4。(2)公用體與結(jié)構(gòu)體的使用形式類似,但含義不同,如果把w定義成structdata,則sizeof(w)=4+2+2=8,它可以存儲一個(gè)長整型數(shù)據(jù)“和”兩個(gè)整型數(shù)據(jù),現(xiàn)在w是uniondata,它可以存儲一個(gè)長整型數(shù)據(jù)“或”兩個(gè)整型數(shù)據(jù),兩者選一,因?yàn)樗鼈児灿靡粋€(gè)存儲空間。(3)printf語句中%lx是以16進(jìn)制輸出長整型??梢钥吹介L整型中的高16位0x1234放在高的地址空間了,低16位放在低的地址空間里。76計(jì)算機(jī)工程學(xué)院6.2.2基礎(chǔ)理論1.共用體類型的定義
有時(shí)需要使不同的數(shù)據(jù)使用共同的存儲區(qū)域,在C語言中利用共用體類型(又稱聯(lián)合體)來實(shí)現(xiàn)。共用體也是一種構(gòu)造數(shù)據(jù)類型,它的類型定義、變量說明和引用在形式上類似于結(jié)構(gòu)體,二者本質(zhì)區(qū)別是存儲方式的不同。共用體的定義的一般形式:
union〈共用體名〉{
〈成員列表〉}變量列表;77計(jì)算機(jī)工程學(xué)院
例如,定義把一個(gè)整型變量、一個(gè)字符型變量、一個(gè)實(shí)型變量放在同一個(gè)地址開始的內(nèi)存單元中。圖6-8共用體存儲示意圖
整型變量i
字符變量ch
實(shí)型變量f78計(jì)算機(jī)工程學(xué)院
uniondata{inti;
charch;
floatf;};設(shè)內(nèi)存單元地址為1200,則它們的分配示意如圖6-8,三者需要的內(nèi)存空間不一樣,但都從1200單元開始分配,分配多大的空間呢?如果上例使用的是結(jié)構(gòu)則內(nèi)存為結(jié)構(gòu)體分配:2+1+4=7字節(jié)的空間,但在共用體中因?yàn)槊看沃皇褂霉灿皿w中的一個(gè)變量,所以分配的空間長度是最長成員的長度,在本例中是4個(gè)字節(jié),這就是共用體和結(jié)構(gòu)體的本質(zhì)區(qū)別。79計(jì)算機(jī)工程學(xué)院2.共用體變量的說明和引用和結(jié)構(gòu)體的說明對應(yīng),共用體的變量說明有四種方式:
(1)union〈共用體名〉{〈成員列表〉}變量列表;例如:uniondata{inti;
charch;
floatf;}a,b,c;說明了三個(gè)共用體變量a、b和c。80計(jì)算機(jī)工程學(xué)院(2)union〈共用體名〉{〈成員列表〉};
union共用體名變量列表;例如:uniondata{inti;
charch;
floatf;};
uniondataa,b,c;81計(jì)算機(jī)工程學(xué)院(3)union
{〈成員列表〉}變量列表;(4)typedefunion
{〈成員列表〉}共用體類型名;
共用體類型名變量列表;82計(jì)算機(jī)工程學(xué)院例如:typedefunion{inti;charch;
floatf;}DATA;
DATAa,b,c;共用體變量的引用和結(jié)構(gòu)體、數(shù)組一樣,只能引用共用體變量的成員。例如前面定義的三個(gè)共用體變量a,b,c,可以這樣引用:83計(jì)算機(jī)工程學(xué)院
a.i;/*引用共用體變量中的整型變量i*/
a.ch;/*引用共用體變量中的字符變量ch*/
a.f;/*引用共用體變量中的實(shí)型變量f*/共用體類型數(shù)據(jù)有如下的特點(diǎn):
(1)共用體的內(nèi)存段可以存放幾種類型的數(shù)據(jù),但一次只能存放一個(gè)類型成員,且共用體變量中的值是最后一次存放的成員的值,如:
a.i=1;
a.ch=‘a(chǎn)’;
a.f=1.5;84計(jì)算機(jī)工程學(xué)院
完成以上三個(gè)賦值語句后,共用體變量的值是1.5,而a.i=1和a.ch=′a′已無意義。(2)共用體變量不能初始化,例如:
uniondata
{inti;
charch;
floatf;
}
a={1,’a’,1.5};(3)可以使用共用體指針,同樣可以用指針形式來使用共用體成員。例如:
85計(jì)算機(jī)工程學(xué)院定義指針變量p:
DATA*p;p=&a;
則可以用下面的方式使用共用體的成員:
p->i=1;
p->ch=‘a(chǎn)’;
p->f=1.5;C語言最初引入共用體的目的之一是為了節(jié)省內(nèi)存空間,另一個(gè)目的是可以將一種類型的數(shù)據(jù)轉(zhuǎn)換為另一種類型的數(shù)據(jù)使用。86計(jì)算機(jī)工程學(xué)院
6.2.3技能訓(xùn)練
【實(shí)驗(yàn)6.2.1】設(shè)有若干個(gè)人員的數(shù)據(jù),其中有學(xué)生和教師。學(xué)生的數(shù)據(jù)包括:姓名,學(xué)碼,性別,專業(yè),班級。教師的數(shù)據(jù)包括:姓名,工號,性別,職業(yè),職務(wù)。可以看出,學(xué)生和教師所包含的數(shù)據(jù)是不同的,現(xiàn)要求把他們放在同一表格中,見表6-1。如果“job”項(xiàng)為“s”(學(xué)生),則第五項(xiàng)為class(班級)。如果“job”項(xiàng)為“t”(教師),則第五項(xiàng)為position(職務(wù))。87計(jì)算機(jī)工程學(xué)院表6-1人員結(jié)構(gòu)表【指導(dǎo)】
(1)編程分析
●定義一個(gè)結(jié)構(gòu)體解決此問題,不同的部分(class和position)可以定義成共用體,即一88計(jì)算機(jī)工程學(xué)院個(gè)結(jié)構(gòu)體類型中包含一個(gè)共用體成員。
●程序中當(dāng)job的值是‘s’時(shí),使用共用體中的class成員,當(dāng)job的值是‘t’時(shí),使用position成員。(2)示例程序
struct{intnum;charname[10];charsex;89計(jì)算機(jī)工程學(xué)院charjob;union{intclass;charposition[10];}category;}person[2];voidmain(){intn,i;for(i=0;i<2;i++){90計(jì)算機(jī)工程學(xué)院scanf(“%d%s%c%c”,&person[i].num,person[i].name,&person[i].sex,&person[i].job);if(person[i].job==’s’)scanf(“%d”,&person[i].category.class);elseif(person[i].job==’t’)scanf(“%s”,person[i].category.position);elseprintf(“inputerror!”);printf(“\n”);printf(“No.Namesexjobclass/position\n”);for(i=0;i<2;i++){91計(jì)算機(jī)工程學(xué)院if(person[i].job==’s’)printf(“%-6d%-10s%-3c%-3c%-6d\n”,person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.class);elseprintf(“%-6d%-10s%-3c%-3c%-6s\n”,person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.position);}}}92計(jì)算機(jī)工程學(xué)院6.2.4拓展與練習(xí)
1.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】
structdate{intday;intmonth;intyear;union{intshare1floatshare2;}share;}a;93計(jì)算機(jī)工程學(xué)院2.整型在內(nèi)存中占4個(gè)字節(jié),請編寫一個(gè)程序,將四個(gè)字符(char)拼成一個(gè)長整型(long)數(shù)據(jù)。編寫一個(gè)函數(shù)將四個(gè)字節(jié)的內(nèi)容作為一個(gè)long型數(shù)據(jù)輸出。94計(jì)算機(jī)工程學(xué)院
6.2.5編程規(guī)范與常見錯(cuò)誤
1.理解共用體的含義,某一時(shí)刻只有一個(gè)成員的數(shù)據(jù)是有效的。例如定義共用體:uniondata{inti;charch;
floatf;}a;那么執(zhí)行語句a.i=500;a.ch=’a’;printf(“%d”,a.i);結(jié)果不是500。95計(jì)算機(jī)工程學(xué)院2.注意結(jié)構(gòu)體與共用體的區(qū)別,假如有如下定義:
那么sizeof(a)=max(sizeof(i),sizeof(ch),sizeof(f))=4;sizeof(b)=sizeof(i)+sizeof(ch)+sizeof(f)=2+1+4=7;因?yàn)閍中某一時(shí)刻只有一個(gè)數(shù)據(jù)所以4個(gè)字節(jié)足夠了,而b中3個(gè)成員都占用空間,需要7個(gè)字節(jié)。uniondata{inti;charch;floatf;}a;structdata{inti;charch;floatf;}b;96計(jì)算機(jī)工程學(xué)院任務(wù)3枚舉學(xué)習(xí)目標(biāo)
領(lǐng)會枚舉類型的作用,枚舉類型變量的定義、使用。97計(jì)算機(jī)工程學(xué)院
6.3.1案例講解
1.問題描述:一個(gè)口袋里有紅、黃、藍(lán)、白、黑五種顏色的球若干個(gè),依次從口袋中取出三個(gè)球,問:三個(gè)球的顏色正好都不相同的情況有幾種?輸出所有可能的排列組合。2.編程分析設(shè)取出的球?yàn)閕,j,k,根據(jù)題意i,j,k分別為5種顏色之一,并且i≠j≠k,可以用窮舉法,一一測試,看哪組符合條件,就輸出它。98計(jì)算機(jī)工程學(xué)院偽代碼如下:定義五種顏色;voidmain(){定義顏色變量i,j,k;定義整數(shù)變量n累計(jì)總的次數(shù);外循環(huán):第一個(gè)球i從red到black中循環(huán):第二個(gè)球j從red到black如果i與j顏色相同則不取當(dāng)i與j不相同,進(jìn)入內(nèi)循環(huán):99計(jì)算機(jī)工程學(xué)院第三個(gè)球k也有五種可能當(dāng)k與i不同并且與j也不同時(shí)
{輸出次數(shù)n;輸出三個(gè)球的顏色;輸出換行;
}最后輸出方案總數(shù)n;}100計(jì)算機(jī)工程學(xué)院3.編寫源程序#include<stdio.h>enumcolor{red,yellow,blue,white,black};voidprintcolor(enumcolork);voidmain(){enumcolori,j,k;intn;n=0;for(i=red;i<=black;i++)for(j=red;j<=black;j++)if(i!=j){101計(jì)算機(jī)工程學(xué)院for(k=red,k<=black;k++)if((k!=i)&&(k!=j)){n++;printf(“%-4d”,n);printcolor(i);printcolor(j);printcolor(k);printf(“\n”);}}102計(jì)算機(jī)工程學(xué)院printf(“\ntotal:%5d\n”,n);}voidprintcolor(enumcolork){switch(k){casered:printf(%-10s”,”red”);break;caseyellow:printf(“%-10s”,”yellow”);break;caseblue:printf(“%-10s”,”blue”);break;casewhite:printf("%-10s","white");break;caseblack:printf("%-10s","black");break;default:break;}}103計(jì)算機(jī)工程學(xué)院4.程序運(yùn)行結(jié)果圖6-9運(yùn)行結(jié)果104計(jì)算機(jī)工程學(xué)院5.歸納分析
(1)因?yàn)轭伾还灿形宸N,可以一一例舉出來,可以定義成枚舉類型(2)枚舉常量與整數(shù)有對應(yīng)關(guān)系,red是0,yellow是1,依此類推。因此i,j,k可以循環(huán)的加一,也可以比較大小。(3)如果直接輸出i,j,k則只能輸出對應(yīng)的整數(shù),如printf("%d",red)結(jié)果是0,因此用函數(shù)printcolor處理一下,i=red則輸出printf("%-10s","red")。105計(jì)算機(jī)工程學(xué)院
6.3.2基礎(chǔ)理論
如果一個(gè)變量只有幾種可能的值,可以將所有的值列舉出來,在C語言將這種結(jié)構(gòu)定義為枚舉類型?!懊杜e”就是將變量可能的值一一列舉出來的含義。變量的值只能取列舉出來的值之一。1.枚舉類型的定義枚舉類型定義的一般形式為:
enum〈枚舉類型名〉{枚舉值表};例如:enumweek{SUN,MON,TUES,WED,THUR,FRI,SAT};定義了一個(gè)week是枚舉類型名,有7個(gè)數(shù)據(jù)(稱為“枚舉元素”或“枚舉常量),但它的值106計(jì)算機(jī)工程學(xué)院是SUN到SAT之一,并不是7個(gè)值,列出的7個(gè)數(shù)據(jù)是它的取值范圍。2.枚舉變量的說明與使用枚舉變量也可用不同的方式說明,即先定義后說明,同時(shí)定義說明或直接說明。枚舉變量說明的三種方法:
(1)先定義枚舉類型,然后說明枚舉變量。例:enumcolour{red,green,blue,yellow,white};enumcolourchange,select;107計(jì)算機(jī)工程學(xué)院
(2)在定義枚舉類型的同時(shí),說明枚舉變量。例:enumcolour{red,green,blue,yellow,white}change,select;
(3)直接定義枚舉變量。例:enum{red,green,blue,yellow,white}change,select;說明:108計(jì)算機(jī)工程學(xué)院●枚舉元素是常量。在C編譯器中,按定義的順序取值0、1、2、...。例change=green;
printf("%d",change);
輸出整數(shù)1?!衩杜e元素是常量,不是變量,因此不能賦值。
red=0;colour=1;
但在定義枚舉類型時(shí),可以指定枚舉常量的值,如:
enumcolour{red=1,green=2,blue,yellow,white};
109計(jì)算機(jī)工程學(xué)院
此時(shí),red,green,blue,...的值從red的值順序加1。如:yellow=4。
●枚舉值可以作判斷比較的條件,例如:
if(change==red)....
if(select>green)....
●整型與枚舉類型是不同的數(shù)據(jù)類型,不能直接賦值,如:
enumweek{sun=7,mon=1,tue,wed,thu,fri,sat}workday;workday=1但可以通過強(qiáng)制類型轉(zhuǎn)換賦值,如:workday=(enumweek)2;110計(jì)算機(jī)工程學(xué)院6.3.3技能訓(xùn)練
【實(shí)驗(yàn)6.3.1】設(shè)某月的第一天是Sunday,請給出其它的日期是星期幾?!局笇?dǎo)】(1)編程分析用標(biāo)識符sun,mon,…,sat表示星期,這比用數(shù)字1,2,…,7來表示要清晰,所以使用枚舉可以提高程序的可讀性。定義枚舉類型表示星期(week),假定一個(gè)月是30天,定義數(shù)組(weekday)保存每一天是星期幾,數(shù)組的長度是31,0號元素不用,數(shù)組的類型是week,那么:weekday[1]=sunday,表示1號是星期天。111計(jì)算機(jī)工程學(xué)院枚舉型與整型有對應(yīng)關(guān)系,sunday+1就是monday,當(dāng)?shù)搅酥苣﹕atday(對應(yīng)整數(shù)6),下一天就應(yīng)該是sunday(對應(yīng)整數(shù)0)。(2)示例程序
voidmain(){enumweek{sun,mon,tue,wed,thu,fri,sat}weekday[31],j;inti;j=sun;for(i=1;i<=30;i++)112計(jì)算機(jī)工程學(xué)院{weekday[i]=j;
j++;
if(j>sat)
j=sun;}for(i=1;i<=30;i++){
switch(weekday[i])
{
casesun:printf("%3dSunday",i);break;
casemon:printf("%3dMonday",i);break;
casetue:printf("%3dTuesday",i);break;
casewed:printf("%3dWednesday",i);break;
casethu:printf("%3dThursday",i);break;
casefri:printf("%3dFriday",i);break;
casesat:printf("%3dSaturday\n",i);break;}
}printf("\n");
}113計(jì)算機(jī)工程學(xué)院6.3.4拓展與練習(xí)1.假設(shè)有如下定義:enumdata{MIN,first=15,last=20,total,num=50,max=1000}請指出各個(gè)枚舉常量的值2.以下對枚舉類型名的定義中正確的是enuma={one,two,three
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 急診護(hù)士的工作體會
- 美容美發(fā)行業(yè)化妝師培訓(xùn)心得
- 玩具行業(yè)助理工作總結(jié)
- 醫(yī)務(wù)室護(hù)士的工作感悟
- 咨詢行業(yè)行政后勤工作總結(jié)
- 服務(wù)員的服務(wù)技巧與服務(wù)態(tài)度
- 生物知識綜合講解計(jì)劃
- 完善酒店?duì)I銷策略
- 咨詢行業(yè)美工工作總結(jié)
- 稅務(wù)籌劃實(shí)踐感悟
- 環(huán)衛(wèi)清掃保潔、垃圾清運(yùn)及綠化服務(wù)投標(biāo)方案(技術(shù)標(biāo) )
- 13-4管道(設(shè)備)沖洗消毒試驗(yàn)記錄
- 農(nóng)田臨水臨電施工方案范本
- 千字文毛筆楷書描紅字帖-米字格A4版
- 重金屬礦山生態(tài)治理與環(huán)境修復(fù)技術(shù)進(jìn)展
- HR主題分享9-繪制學(xué)習(xí)地圖
- 成長需要挫折演講稿(20篇)
- 職工學(xué)歷教育補(bǔ)貼申請書
- GB/T 42915-2023銅精礦及主要含銅物料鑒別規(guī)范
- 高三英語二輪復(fù)習(xí)讀后續(xù)寫之彈鋼琴的媽媽講義
- s7et200mp自動化系統(tǒng)手冊
評論
0/150
提交評論