c語(yǔ)言教案Ch結(jié)構(gòu)體_第1頁(yè)
c語(yǔ)言教案Ch結(jié)構(gòu)體_第2頁(yè)
c語(yǔ)言教案Ch結(jié)構(gòu)體_第3頁(yè)
c語(yǔ)言教案Ch結(jié)構(gòu)體_第4頁(yè)
c語(yǔ)言教案Ch結(jié)構(gòu)體_第5頁(yè)
已閱讀5頁(yè),還剩49頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C程序設(shè)計(jì)(第二版)

---------------教學(xué)課件制作人:黃熒制作人單位:河師大數(shù)學(xué)與信息科學(xué)學(xué)院第十一章結(jié)構(gòu)體與共用體本章內(nèi)容結(jié)構(gòu)體變量與數(shù)組的定義、引用和初始化(重點(diǎn))結(jié)構(gòu)體變量和數(shù)組做為函數(shù)的參數(shù)

(重點(diǎn))動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)鏈表(難點(diǎn))共用體枚舉類型用typedef定義類型第一部分:結(jié)構(gòu)體部分1)

結(jié)構(gòu)體的概念---與數(shù)組相當(dāng)(只是元素類型可以不同)類型定義變量定義成員引用初始化2)結(jié)構(gòu)體變量數(shù)組定義數(shù)組初始化數(shù)組應(yīng)用實(shí)例3)結(jié)構(gòu)體數(shù)組4)結(jié)構(gòu)體的指針指針定義移動(dòng)法處理數(shù)組成員作參數(shù)變量作參數(shù)指針作參數(shù)數(shù)組作參數(shù)5)結(jié)構(gòu)體作函數(shù)參數(shù)§11.1

結(jié)構(gòu)體概述-----結(jié)構(gòu)體變量的感性認(rèn)識(shí)結(jié)構(gòu)體變量

-----與數(shù)組變量完全類似

共同點(diǎn):結(jié)構(gòu)體同樣是構(gòu)造型的數(shù)據(jù)類型,可以包含多個(gè)”元素”

不同點(diǎn):結(jié)構(gòu)體可以包含一組類型不同的”元素”如:

存儲(chǔ)學(xué)生信息學(xué)生的信息包含:學(xué)號(hào)、姓名,性別、年齡、分?jǐn)?shù)、地址。numnamesexagescore

addr10010李軍M1887.5北京要點(diǎn):結(jié)構(gòu)體和數(shù)組完全類似,也可以包含多個(gè)元素,不過(guò)結(jié)構(gòu)體的“元素”類型可以不同。§11.2

結(jié)構(gòu)體的類型定義與變量定義如,要求構(gòu)造存儲(chǔ)學(xué)生信息的結(jié)構(gòu)體類型。學(xué)生的信息包含:學(xué)號(hào)、姓名,性別、年齡、分?jǐn)?shù)、地址。結(jié)構(gòu)體類型定義的一般形式:struct

[結(jié)構(gòu)體類型名]{

類型標(biāo)識(shí)符成員名;

類型標(biāo)識(shí)符成員名;

…………….};一結(jié)構(gòu)體類型定義:

(--制定“藍(lán)圖”,指出結(jié)構(gòu)體變量中的元素(成員)名和相應(yīng)的類型。struct

student{

intnum;charname[20];charsex;

intage;floatscore;charaddr[30];};再次強(qiáng)調(diào):

student類型和類型名int、float等是“兄弟姐妹”,是用來(lái)說(shuō)明變量的類型的。二結(jié)構(gòu)體變量的定義:--用于定義變量實(shí)體,只有結(jié)構(gòu)體變量實(shí)體才能存儲(chǔ)一組類型不同的數(shù)據(jù)。2字節(jié)2字節(jié)20字節(jié)1字節(jié)4字節(jié)30字節(jié)namenumsexagescoreaddrStu1結(jié)構(gòu)體變量定義的一般形式:

struct

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

變量列表;方式1:struct

student

{charnum[10];charname[20];charsex;

intage;floatscore;charaddr[30];};struct

student

stu1,stu2;方式2:(!!!)struct

student

{charnum[10];charname[20];charsex;

intage;floatscore;charaddr[30];}stu1,stu2

;方式3:struct{charnum[10];charname[20];charsex;

intage;floatscore;charaddr[30];}stu1,stu2

;如,已給結(jié)構(gòu)體類型定義:

struct

student{intnum;charname[20];charsex;

intage;floatscore;charaddr[30];};要點(diǎn):結(jié)構(gòu)體變量的成員與數(shù)組元素一樣是可以放數(shù)據(jù)的“簡(jiǎn)單變量”!變量Stu1的6個(gè)成員,共占59個(gè)字節(jié)!相應(yīng)的結(jié)構(gòu)體變量定義為:

struct

student

stu1,stu2;§11.3

結(jié)構(gòu)體變量的引用結(jié)構(gòu)體成員的表示方法:

結(jié)構(gòu)體變量名.成員名

成員(分量)運(yùn)算符優(yōu)先級(jí):1結(jié)合性:從左向右如,已有結(jié)構(gòu)體變量定義:struct

student

stu1;

stu1.num=123;

strcpy(,"lili");stu1.sex='f';

stu1.age=21;stu1.score=98;strcpy(stu1.addr,"xinxiang");例從鍵盤(pán)給一個(gè)結(jié)構(gòu)體變量賦值,并輸出結(jié)構(gòu)體變量中的數(shù)據(jù)#include<stdio.h>voidmain(){struct

student

{charnum[10];

charname[20];

charsex;

intage;

floatscore;

charaddr[30];

}stu;

printf("請(qǐng)輸入此學(xué)生的信息:學(xué)號(hào)s、姓名s、性別c、年齡i、成績(jī)f和住址s\n");

scanf("%s%s

%c%d%f%s",stu.num,,&stu.sex,&stu.age,&stu.score,stu.addr);

printf("\n\tNO.:%s\tname:%s\tsex:%c\n",stu.num,,stu.sex);

printf("\tage:%d\tscore:%.1f\taddress:%s\n\n",stu.age,stu.score,stu.addr);}§11.4

結(jié)構(gòu)體變量的初始化例11.1結(jié)構(gòu)體變量的初始化#include<stdio.h>voidmain()

{

struct

student

{

longnum;

charname[20];

charsex;

charaddr[20];

}a={89031,"LiLin",'M',"148jiansheRoad"};

printf("\n\t\t---學(xué)生情況信息---\n\n");

printf("\tNO.:%ld\tname:%s\n",a.num,);

printf("\tsex:%c\taddress:%s\n\n\t",a.sex,a.addr);}關(guān)于結(jié)構(gòu)體類型和變量的4點(diǎn)說(shuō)明特別注意:區(qū)別結(jié)構(gòu)體類型和結(jié)構(gòu)體變量!!!結(jié)構(gòu)體類型只是對(duì)相應(yīng)的結(jié)構(gòu)體變量進(jìn)行結(jié)構(gòu)上的說(shuō)明,系統(tǒng)不為它分配內(nèi)存。結(jié)構(gòu)體變量才是存儲(chǔ)數(shù)據(jù)的變量實(shí)體,系統(tǒng)將為它分配內(nèi)存。numnamesexageBirthdayaddrmonthdayyear4)結(jié)構(gòu)體中的成員名可以和程序中的變量名相同,二者互不干擾,代表不同的對(duì)象.

如,num=stu.num;如,struct

student

{charnum[10];charname[20];charsex;

intage;floatscore;charaddr[30];}stu1,stu2

;2)結(jié)構(gòu)體中的成員與數(shù)組的元素一樣相當(dāng)于普通變量.3)結(jié)構(gòu)體的成員也可以是一個(gè)結(jié)構(gòu)體變量.(結(jié)構(gòu)體類型的嵌套)如,structdate{intyear;

intmonth;

intday;};structstudent{intnum;charname[20];charsex;

intage;

structdatebirthday;charaddr[30];};structstudentstu1,stu2;關(guān)于結(jié)構(gòu)體變量的引用規(guī)則5點(diǎn)說(shuō)明:1)不能將結(jié)構(gòu)體變量整體輸入輸出

如,printf("%d,%s,%f\n",stu);X

scanf("%d%s%%f",&stu);X

printf("%d,%s,%f\n",stu.num,,stu.score);√

scanf("%d%s%f",&stu.num,,&stu.score);√2)結(jié)構(gòu)體嵌套時(shí)應(yīng)該逐級(jí)引用

如,

stu1.birthday.month=12;3)結(jié)構(gòu)體變量成員可以象普通變量一樣進(jìn)行各種運(yùn)算如,stu1.score=stu2.score;sum=stu1.score+stu2.score;stu1.age++;++stu1.age;4)可以引用結(jié)構(gòu)體變量成員的地址,也可以引用結(jié)構(gòu)體變量的地址如,scanf("%d",&stu.num);

printf("%d\n",&stu);//輸出stu首地址5)可以將一個(gè)結(jié)構(gòu)體變量整體賦值給另一個(gè)結(jié)構(gòu)體變量//特許證!!!

如:stu2=stu1;

§11.5結(jié)構(gòu)體數(shù)組---與整型數(shù)組沒(méi)兩樣,只是元素復(fù)雜點(diǎn)!??!結(jié)構(gòu)體數(shù)組的每個(gè)元素都是結(jié)構(gòu)體變量一結(jié)構(gòu)體數(shù)組的定義⑴structstudent{intnum;

charname[20];

charsex;

intage;

floatscore;

charaddr[30];};structstudentstu[N0];⑵structstudent{intnum;

charname[20];

charsex;

intage;

floatscore;

charaddr[30];}

stu[N0];

⑶struct

{intnum;

charname[20];

charsex;

intage;

floatscore;

charaddr[30];}

stu[N0];stu[0]stu[1]stu[2]stu[3]stu[N0-1]...stu一個(gè)元素能放一個(gè)學(xué)生的信息,10個(gè)元素就放十個(gè)學(xué)生的信息。struct{ intnum; charname[20]; charsex;

intage; floatscore; charaddr[30];}stu[3]={

{10101,"李林",'M',18,87.5,"北京路103"},

{10102,"張奮",'M',19,99,"上海路130"},

{10104,"王敏",'F',20,78.5,"中山路1010"}

};二結(jié)構(gòu)體數(shù)組的初始化10101"李林"'M'1887.5"103北京路"10102"張奮"'M'1999"130上海路"注意:可以把每個(gè)元素的大括號(hào)去掉.長(zhǎng)度省略.三結(jié)構(gòu)體數(shù)組的應(yīng)用舉例(下標(biāo)法訪問(wèn)結(jié)構(gòu)體數(shù)組)#include<stdio.h>#include<string.h>#defineN010//定義統(tǒng)計(jì)選票的數(shù)組structperson//提倡全局性結(jié)構(gòu)體類型定義{charname[20];intcount;}leader[3]={"li",0,"gu",0,"fu",0};voidmain(){int

i,j,sum=0;charleaderName[20];//"投票"和統(tǒng)計(jì)票數(shù)

printf("\n\t---%d位選民,共投%d張票,請(qǐng)投票:\n\t",N0,N0);

for(i=1;i<=N0;i++){scanf("%s",leaderName);

for(j=0;j<3;j++)

if(strcmp(leaderName,leader[j].name)==0)

leader[j].count++;}

printf("\n");//輸出結(jié)果

for(i=0;i<3;i++){printf("\t%s\t%d\n",leader[i].name,leader[i].count);

sum+=leader[i].count;}

printf("\n\t廢票%d張。\n\n\t",N0-sum);}算法分析:1統(tǒng)計(jì)選票的變量是結(jié)構(gòu)體放候選人的姓名和票數(shù)2統(tǒng)計(jì)過(guò)程:10個(gè)選民每人”投”一票,和誰(shuí)的名字一樣,誰(shuí)的票數(shù)加1.例11.2

選票的統(tǒng)計(jì)程序:三個(gè)候選人,10個(gè)選民.§11.6指向結(jié)構(gòu)體數(shù)據(jù)的指針一指向結(jié)構(gòu)體的指針變量如,structstudentstu,*p;p=&stu;(*p).num=89101;

stu.num=89101;另外注意到,C規(guī)定:

下面三種形式等價(jià)結(jié)構(gòu)體變量.成員名

(*p).成員名

p->成員名(指向運(yùn)算符)("->":優(yōu)先級(jí)為1!!!)例11.3利用指針?lè)ㄝ敵鲆粋€(gè)結(jié)構(gòu)體變量#include<stdio.h>#include<string.h>#defineFORMAT"\tNo:%ld\tname:%s\tsex:%c\t\tscore:%.2f\n\n"voidmain(){structstudent{longnum;charname[20];charsex;floatscore;};

structstudentstu,*p;p=&stu;

stu.num=89101;//還可以怎么表示?

strcpy(,"LiLi");

stu.sex='m';stu.score=89.5;

printf("\n\t\t---學(xué)生情況信息---\n\n");

printf(FORMAT,stu.num,,stu.sex,stu.score);

printf(FORMAT,(*p).num,(*p).name,(*p).sex,(*p).score);

printf(FORMAT,p->num,p->name,p->sex,p->score);

printf("\n\t");}p->num=89101;練習(xí):分析下列運(yùn)算的含義:p->np->n++++p->n(p->n)++++(p->n)二用指針移動(dòng)法訪問(wèn)結(jié)構(gòu)體數(shù)組stu[0]stu[1]stu[2]stu[3]stu[N0-1]...stu

p->例11.4利用指針移動(dòng)法輸出結(jié)構(gòu)體數(shù)組#include<stdio.h>#defineFORMAT"\t%d\t\t%s\t%c\t%d\n"

structstudent{intnum;charname[20];charsex;

intage;}stu[3]={{10101,"LiLin",'M',18},

{10102,"ZhangFun",'M',19},

{10104,"WangMin",'F',20}};//主函數(shù)voidmain(){

structstudent*p;

printf("\n\t\t---學(xué)生情況信息---\n\n");

printf("\tNo.\t\tName\t\tsex\tage\n\n");

for(p=stu;p<stu+3;p++)

printf(FORMAT,p->num,p->name,p->sex,p->age);

printf("\n\t");}三結(jié)構(gòu)體指針作為函數(shù)參數(shù)P292傳遞結(jié)構(gòu)體變量的值有四種情況:1結(jié)構(gòu)體變量成員作實(shí)參

形參通常是:簡(jiǎn)單變量,值傳遞2結(jié)構(gòu)體變量作實(shí)參

形參通常是:結(jié)構(gòu)體變量,值傳遞

費(fèi)時(shí)費(fèi)內(nèi)存資源,通常不用此方法.可以用指針變量傳遞結(jié)構(gòu)體變量的地址3結(jié)構(gòu)體變量的地址作實(shí)參

形參通常是:結(jié)構(gòu)體指針,地址傳遞4結(jié)構(gòu)體數(shù)組名作實(shí)參

形參通常是:結(jié)構(gòu)體數(shù)組或結(jié)構(gòu)體指針,地址傳遞例11.5處理一個(gè)學(xué)生信息。在主函數(shù)中賦值,在函數(shù)中輸出。

(變量作為實(shí)參:值傳遞)效率低,不提倡。#include<stdio.h>#include<string.h>structstudent{intnum;charname[20];floatscore[3];};voidmain(){voidprint(structstudentstu);//函數(shù)說(shuō)明

structstudentstu;

stu.num=12345;strcpy(,"LiLi");//顯然用賦初值的方法更好

stu.score[0]=67.5;stu.score[1]=89;stu.score[2]=78.6;

print(stu);}//函數(shù)功能:輸出一個(gè)結(jié)構(gòu)體變量//入口參數(shù):結(jié)構(gòu)體變量(值傳遞!!!)voidprint(structstudent

stu){inti;

printf("\n\t\t---學(xué)生情況信息---\n\n");//下面輸出結(jié)構(gòu)體變量的所有數(shù)據(jù)域

printf("\t%d\t%s:\t",stu.num,);

for(i=0;i<3;i++)printf("%.1f\t",stu.score[i]);

printf("\n\n\t");}例11.6處理一個(gè)學(xué)生信息。在主函數(shù)中賦值,在函數(shù)中輸出。

(改變上一題的參數(shù)類型:地址作為實(shí)參:地址傳遞

)效率較高,提倡。

#include<stdio.h>#include<string.h>structstudent{intnum;charname[20];

floatscore[3];};voidmain(){voidprint(structstudent*p);//函數(shù)說(shuō)明

structstudentstu={12345,"LiLi",67.5,89,78.6};

print(&stu);}//函數(shù)功能:輸出一個(gè)結(jié)構(gòu)體變量//入口參數(shù):結(jié)構(gòu)體變量的地址(用結(jié)構(gòu)體指針變量來(lái)傳遞地址!!!)voidprint(structstudent*p){inti;

printf("\n\t\t---學(xué)生情況信息---\n\n");//下面輸出結(jié)構(gòu)體變量的所有數(shù)據(jù)域

printf("\t%d\t%s:\t",p->num,p->name);

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

printf("%.1f\t",p->score[i]);

printf("\n\n\t");}Ex11.3學(xué)生信息數(shù)組的輸出(用指針移動(dòng)法)#defineN04#include<stdio.h>structstudent{longnum;charname[20];

floatscore[3];

floataver;};/*--------------------------------

函數(shù)功能:輸出一個(gè)結(jié)構(gòu)體數(shù)組的數(shù)據(jù)

入口參數(shù):結(jié)構(gòu)體數(shù)組的首地址和數(shù)組長(zhǎng)度

返回值:無(wú)----------------------------------*/voidoutputa(structstudent*stu,intn){structstudent*p;intj;

printf("\n\t\t---學(xué)生情況信息---\n\n");

printf("\t學(xué)號(hào)\t姓名\tC程序\t數(shù)分\t高代\t平均分?jǐn)?shù)\n\n");//輸出表頭

for(p=stu;p<stu+n;p++) { //循環(huán)體:輸出一個(gè)學(xué)生的信息(stu[i])

printf("\t%ld\t%s\t",p->num,p->name);

for(j=0;j<3;j++) //思考:如果用下標(biāo)法,怎么修改程序?

printf("%.1f\t",p->score[j]);

printf("%.1f\t",p->aver);

printf("\n\n");}}/*--------------------------------

函數(shù)功能:輸入一個(gè)結(jié)構(gòu)體數(shù)組的數(shù)據(jù)并求出三門(mén)課的平均值

入口參數(shù):傳遞結(jié)構(gòu)體數(shù)組的首地址和數(shù)組長(zhǎng)度

返回值:無(wú)----------------------------------*/voidinputa(structstudent*stu,intn){

structstudent*p;intj;

printf("請(qǐng)輸入%d個(gè)學(xué)生的信息:(學(xué)號(hào)L,姓名s和三門(mén)成績(jī)f)\n\t",n);

for(p=stu;p<stu+n;p++)

{ //循環(huán)體:輸入一個(gè)學(xué)生的信息(輸入stu[i])

scanf("%ld%s",&p->num,p->name);

p->aver=0;

for(j=0;j<3;j++){scanf("%f",&p->score[j]);p->aver+=p->score[j];}

p->aver/=3;

}}//--主函數(shù)voidmain(){structstudentstu[N0]={771234,"李立東",75,78,89,0,771235,"王偉",90,95,98,0,771236,"付軍",96,83,92,0,771237,"谷玉",92,94,75,0};//inputa(stu,N0);outputa(stu,N0);}Ex11.4學(xué)生信息數(shù)組的輸入并求出三門(mén)課的平均值

(用指針移動(dòng)法)回顧:結(jié)構(gòu)體相關(guān)的內(nèi)容1)

結(jié)構(gòu)體的概念---與數(shù)組類似(只是元素類型可以不同)類型定義:如,struct

student{int

num;charname[10];…};變量定義:如,structstudentstu;(三種格式)成員引用:(點(diǎn)運(yùn)算)如,gets();初始化2)結(jié)構(gòu)體變量數(shù)組定義:如,structstudentstu[N0];(三種格式)數(shù)組初始化數(shù)組應(yīng)用實(shí)例:數(shù)組的輸入輸出,選票統(tǒng)計(jì)。

for(i=1;i<=N0;i++){

scanf("%s",leaderName);

for(j=0;j<3;j++)if(strcmp(leaderName,leader[j].name)==0)

leader[j].count++;}3)結(jié)構(gòu)體數(shù)組4)結(jié)構(gòu)體的指針指針定義:如,structstudent*p;移動(dòng)法處理數(shù)組:如,for(p=stu;p<stu+N0;p++){輸出*p的成員}

成員作參數(shù):同簡(jiǎn)單變量變量作參數(shù):值傳遞,不提倡。相關(guān)算法:輸出一個(gè)結(jié)構(gòu)體變量指針作參數(shù):地址傳遞:相關(guān)算法:輸出一個(gè)結(jié)構(gòu)體變量,輸出結(jié)構(gòu)體數(shù)組數(shù)組作參數(shù):地址傳遞:相關(guān)算法:輸出結(jié)構(gòu)體數(shù)組,輸入與求平均值

for(p=stu;p<stu+n;p++)

{scanf("%ld%s",&p->num,p->name);

p->aver=0;

for(j=0;j<3;j++){scanf("%f",&p->score[j]);p->aver+=p->score[j];}

p->aver/=3;

}5)結(jié)構(gòu)體作函數(shù)參數(shù)§11.7鏈表--真正意義上的動(dòng)態(tài)的數(shù)據(jù)結(jié)構(gòu)(實(shí)用、重要)stu[0]stu[1]stu[2]stu[3]stu[N0-1]...stuP->放第一個(gè)結(jié)點(diǎn)的地址ABCD\0T…

head鏈表的特點(diǎn):1與數(shù)組一樣,鏈表能放多個(gè)數(shù)據(jù).2鏈表的"長(zhǎng)度"(結(jié)點(diǎn)個(gè)數(shù))是不固定的.需要放數(shù)據(jù)就建立一個(gè)結(jié)點(diǎn),不需要的數(shù)據(jù)馬上釋放掉,機(jī)動(dòng)靈活,是真正意義上的動(dòng)態(tài)的數(shù)據(jù)結(jié)構(gòu).3鏈表的"元素"—結(jié)點(diǎn)不是連續(xù)存放的.是"哪有空間就塞哪".東一個(gè)結(jié)點(diǎn),西一個(gè)結(jié)點(diǎn).4鏈表的"元素"—結(jié)點(diǎn)是用指針連接起來(lái)的.鏈表是一串用聯(lián)系指針連起來(lái)的結(jié)點(diǎn)(元素)一鏈表概述鏈表是一串用聯(lián)系指針連起來(lái)的結(jié)點(diǎn)(元素)結(jié)點(diǎn)通常是一個(gè)結(jié)構(gòu)體類型的變量聯(lián)系指針域是放的是下一個(gè)結(jié)點(diǎn)的地址,程序就是通過(guò)它來(lái)依次找到下一個(gè)結(jié)點(diǎn)的鏈表結(jié)點(diǎn)的結(jié)構(gòu)體類型的定義例:放學(xué)生學(xué)號(hào)、姓名、成績(jī)的結(jié)點(diǎn)的類型定義:structstudent{intnum;charname[20];

三個(gè)數(shù)據(jù)域

flaotscore;

structstudent*next;

聯(lián)系指針域}空指針,標(biāo)志著鏈表的尾部放第一個(gè)結(jié)點(diǎn)的地址ABCD\0T…

head頭指針:放第一個(gè)結(jié)點(diǎn)的地址二簡(jiǎn)單鏈表#include<stdio.h>#defineNULL0structstudent//結(jié)點(diǎn)結(jié)構(gòu)體類型{longnum;floatscore;

structstudent*next;};voidmain(){structstudent*head,*p;

structstudent

a,b,c;//==建立鏈表

a.num=99101;a.score=89.5;//給結(jié)點(diǎn)賦值

b.num=99103;b.score=90;

c.num=99107;c.score=85;

head=&a;a.next=&b;//連接結(jié)點(diǎn)

b.next=&c;c.next=NULL;//==輸出鏈表!!!

printf("\n\t三個(gè)結(jié)點(diǎn)數(shù)據(jù)為:\n\n");p=head;do{

printf("\t%ld%5.1f\n\n",p->num,p->score);

p=p->next;

//前進(jìn)指針

}while(p!=NULL);}&aheadABC89.5&b9910190&c9910385\099107例11.7建立并輸出由三個(gè)學(xué)生信息結(jié)點(diǎn)構(gòu)成的鏈表。學(xué)生信息包括:學(xué)號(hào),成績(jī)。算法分析:1)定義鏈表結(jié)點(diǎn)的類型2)建立鏈表:

定義頭指針,建立3個(gè)結(jié)點(diǎn),給3個(gè)結(jié)點(diǎn)賦值,連接3個(gè)結(jié)點(diǎn)。3)輸出鏈表:依次逐個(gè)結(jié)點(diǎn)輸出。三處理動(dòng)態(tài)鏈表所需的函數(shù)1申請(qǐng)空間的兩個(gè)函數(shù):(它們的原型在stdlib.h

和malloc.h中)

1)void*malloc(unsignedsize);←void指針類型

功能:申請(qǐng)size個(gè)字節(jié)的存儲(chǔ)空間返回值:所申請(qǐng)存儲(chǔ)空間的首地址,申請(qǐng)不成功返回NULL.

如:structstudent*p;

len=sizeof(structstudent);

p=(structstudent*)malloc(len);

或:p=(structstudent*)malloc(sizeof(structstudent));

2)void*calloc(unsigned

n,unsignedsize);

功能:申請(qǐng)n個(gè)大小為size字節(jié)的存儲(chǔ)空間返回值:所申請(qǐng)存儲(chǔ)空間的首地址,申請(qǐng)不成功返回NULL.2釋放空間的函數(shù)

free(p);

功能:釋放指針p所指向的結(jié)點(diǎn)所占的空間。四建立動(dòng)態(tài)鏈表ABCD\0T…

head例11.8寫(xiě)一個(gè)函數(shù)建立一個(gè)包含多名學(xué)生信息的單向動(dòng)態(tài)鏈表.

(學(xué)生信息包括學(xué)號(hào)和分?jǐn)?shù).)算法分析:1建立結(jié)點(diǎn)的結(jié)構(gòu)體類型,定義頭指針2構(gòu)造鏈表:

1)建立空鏈表:head=NULL;

2)

為新結(jié)點(diǎn)申請(qǐng)空間:用malloc()函數(shù)

3)

給新結(jié)點(diǎn)的數(shù)據(jù)域賦值

4)

連接新結(jié)點(diǎn)到鏈表尾部

5)重復(fù)2)

3)

4)

直到輸入最后一個(gè)結(jié)點(diǎn)。//3輸出鏈表(下一個(gè)例題)將NULL放入鏈尾結(jié)點(diǎn)的連接指針域建立新結(jié)點(diǎn):(p1指向它)1)為結(jié)點(diǎn)申請(qǐng)空間(malloc())2)輸入學(xué)號(hào)和分?jǐn)?shù)p2=p1;(使得p2指向新的表尾)連接新結(jié)點(diǎn)在鏈尾p2->next=p1;head指向新結(jié)點(diǎn)head=p1;

假真n++;p1->num≠0為第一個(gè)結(jié)點(diǎn)申請(qǐng)空間(malloc())輸入學(xué)號(hào)和分?jǐn)?shù)(p1,p2指向它)head=NULL(建立空鏈表)n==1?例11.8建立鏈表的函數(shù)#include<stdio.h>#include<stdlib.h>#defineNULL0#defineLENsizeof(structstudent)#defineSTUNODE

structstudentSTUNODE//--定義鏈表的結(jié)點(diǎn)類型{longnum;floatscore;STUNODE*next;};intn;//全局變量,放結(jié)點(diǎn)個(gè)數(shù)/*---------------------------

函數(shù)功能:建立學(xué)生信息的鏈表

入口參數(shù):無(wú)

返回值:鏈表的頭指針----------------------------*/STUNODE*create(void)

{STUNODE

*head,*p1,//p1總是指向新結(jié)點(diǎn)*p2;//p2總是指向新表尾

n=0;head=NULL;

p1=p2=(STUNODE*)malloc(LEN);

printf("輸入學(xué)號(hào),分?jǐn)?shù):(學(xué)號(hào)=0是退出.)\n");

scanf("%ld%f",&p1->num,&p1->score);

while(p1->num!=0){n++;

if(n==1)head=p1;//連接新結(jié)點(diǎn)

elsep2->next=p1;

p2=p1;//p2總是指向新表尾

p1=(STUNODE*)malloc(LEN);

scanf("%ld%f",&p1->num,&p1->score);}p2->next=NULL;

return

head;}將NULL放入鏈尾結(jié)點(diǎn)的連接指針域建立新結(jié)點(diǎn):(p1指向它)1)為結(jié)點(diǎn)申請(qǐng)空間(malloc())2)輸入學(xué)號(hào)和分?jǐn)?shù)p2=p1;(使得p2指向新的表尾)連接新結(jié)點(diǎn)在鏈尾p2->next=p1;head指向新結(jié)點(diǎn)head=p1;

假真n++;p1->num≠0為第一個(gè)結(jié)點(diǎn)申請(qǐng)空間(malloc())輸入學(xué)號(hào)和分?jǐn)?shù)(p1,p2指向它)head=NULL(建立空鏈表)n==1?A…

headB\0TC五輸出鏈表ABCD\0T…

headp/*--------------------------------

函數(shù)功能:輸出學(xué)生信息的鏈表

入口參數(shù):鏈表的頭指針

返回值:無(wú)---------------------------------*/voidprint(STUNODE

*head){STUNODE*p;

printf("\n\n\t學(xué)號(hào)\t分?jǐn)?shù)\n");//表頭

p=head;//p從表頭開(kāi)始遍歷表鏈

while(p!=NULL){

printf("\t%ld\t%.1f\n",p->num,p->score);

p=p->next;//前進(jìn)指針

}

printf("\n");}//==主函數(shù)voidmain(){STUNODE*head;head=create();

print(head);}算法思想:1p指向表頭:p=head;2

輸出p所指向的結(jié)點(diǎn):*p3

前進(jìn)指針:p=p->next;4重復(fù)2,3直到p=NULL.p=p->next;//前進(jìn)指針六對(duì)鏈表的刪除操作:(先定位,再刪除.)ABCD\0T…

headp2p1刪除的兩種可能情況:所刪結(jié)點(diǎn)在表頭和不在表頭.①欲刪結(jié)點(diǎn)在表頭(p1==head):②所刪結(jié)點(diǎn)不在表頭(p1≠head):p2->next=p1->next;free(p1);head=p1->next;free(p1);ABCD\0T…

headp1ABCD\0T…

head六對(duì)鏈表的刪除操作:(先定位,再刪除.)ABCD\0T…

headp2p1整體的算法分析:1表為空表(head==NULL):不用刪.2當(dāng)表不空時(shí):a)定位:使p1指向欲刪結(jié)點(diǎn),p2指向它的前一個(gè)結(jié)點(diǎn).

當(dāng)p1所指學(xué)號(hào)不是欲刪學(xué)號(hào)而且后面還有結(jié)點(diǎn)時(shí),同時(shí)前進(jìn)p2p1指針.b)刪除:(兩種可能情況)①欲刪結(jié)點(diǎn)在表頭(p1==head):

head=p1->next;free(p1);②所刪結(jié)點(diǎn)不在表頭(p1≠head):

p2->next=p1->next;free(p1);(p1是鏈尾,也在此情況中。)returnheadreturnhead輸出信息:沒(méi)有找到該學(xué)生的信息當(dāng)p1=head則①

head=p1->next否則,②p2->next=p1->nextfree(p1),n—p1->num=num真假前進(jìn)指針:p2=p1,p1=p1->next(同時(shí)前進(jìn)指針p2p1!!!)p1->num≠num

&&p1->next≠NULLp1=head(定位)head=NULL真假刪除鏈表結(jié)點(diǎn)的函數(shù):/*函數(shù)功能:刪除鏈表中指定學(xué)號(hào)的結(jié)點(diǎn)

入口參數(shù):鏈表的頭指針和指定要?jiǎng)h除的學(xué)號(hào)

返回值:鏈表的頭指針*/STUNODE*del(STUNODE*head,longnum){STUNODE*p1,//p1總指向要?jiǎng)h除的結(jié)點(diǎn)*p2;//p2總指向p1前面的結(jié)點(diǎn)

if(head==NULL){printf("這是一個(gè)空表!\n");returnhead;}//定位:p1=head;

while((num!=p1->num)&&(p1->next!=NULL)){p2=p1;p1=p1->next;}//同時(shí)前進(jìn)指針p2p1//刪除

if(num==p1->num)

{if(p1==head)head=p1->next;//情況①表頭

elsep2->next=p1->next;//情況②表中或表尾

free(p1);n--;

printf("%ld

被刪除了.\n",num);}elseprintf("沒(méi)有找到指定學(xué)號(hào):%ld\n",num);returnhead;}

returnheadreturnhead輸出信息:沒(méi)有找到該學(xué)生信息當(dāng)p1=head則①

head=p1->next否則②

p2->next=p1->nextfree(p1),n—p1->num=num真假p2=p1,p1=p1->next(同時(shí)前進(jìn)指針p2p1!!!)p1->num≠num&&p1->next≠NULLp1=headhead=NULL真假七對(duì)鏈表的保序插入操作(從小到大。先定位,后插入)ABCD\0T…

headp2p0p1保序插入有三種可能情況:插到表頭、插到中間和插到表尾.①插到表頭:head=p0;p0->next=p1;p2->next=p0;p0->next=p1;②插到中間:③插到表尾:ABCD\0T…

headp0p1\0p0p1ABCDT…

headp1->next=p0;p0->next=NULL;ABCD\0T…

head思考:如果不用p1該怎么處理?p0->next=head;head=p0;(調(diào)一下次序行嗎?)七對(duì)鏈表的保序插入操作(從小到大。先定位,后插入)整體的算法分析:1表為空表,表頭指針指向新結(jié)點(diǎn)p0:head=p0;p0->next=NULL;2當(dāng)表不空時(shí):a)定位:使得p1指向第一個(gè)學(xué)號(hào)不小于欲插學(xué)號(hào)的結(jié)點(diǎn),p2指向它前面的結(jié)點(diǎn).

當(dāng)p1所指學(xué)號(hào)小于欲插學(xué)號(hào)而且后面還有結(jié)點(diǎn)時(shí),同時(shí)前進(jìn)p2p1指針.b)插入:(三種可能情況)

當(dāng)p0要插到表頭(p1==head):head=p0;p0->next=p1;②

當(dāng)新結(jié)點(diǎn)是插到表的中部:p2->next=p0;p0->next=p1;③當(dāng)新結(jié)點(diǎn)是插到表尾:p1->next=p0;p0->next=NULL;ABCD\0T…

headp2p0p1例11.11保序插入給定結(jié)點(diǎn)的函數(shù):/*函數(shù)功能:保序插入給定的結(jié)點(diǎn)

入口參數(shù):

鏈表的頭指針和給定結(jié)點(diǎn)的地址

返回值:鏈表的頭指針*/STUNODE*insert(STUNODE*head,STUNODE*stud){STUNODE*p0,//p0總指向要插入的新結(jié)點(diǎn)*p1,//p1總指向要插入的位置*p2;//p2總指向p1的前一個(gè)結(jié)點(diǎn)

p1=head;p0=stud;

if(head==NULL)//表為空表

{head=p0;p0->next=NULL;}else//表不空:先定位,再插入{while((p1->num<p0->num)&&(p1->next!=NULL)){p2=p1;p1=p1->next;}//定位

if(p1->num>=p0->num)//插入:3種可能情況

{if(head==p1)head=p0;//可能情況①表頭

else

p2->next=p0;

//可能情況②中部

p0->next=p1;

}else{p1->next=p0;p0->next=NULL;}}//情況③表尾

n++;returnhead;}整體的算法分析:1表為空表,表頭指針指向新結(jié)點(diǎn)p0:head=p0;p0->next=NULL;2當(dāng)表不空時(shí):a)定位:使得p1指向第一個(gè)學(xué)號(hào)不小于指定學(xué)號(hào)的結(jié)點(diǎn),p2指向它前面的結(jié)點(diǎn).

當(dāng)p1所指學(xué)號(hào)小于欲插學(xué)號(hào)而且后面還有結(jié)點(diǎn)時(shí),同時(shí)前進(jìn)p2p1指針

b)插入:(三種可能情況)

當(dāng)p0要插到表頭(p1==head):head=p0;p0->next=p1;②

當(dāng)新結(jié)點(diǎn)是插到表的中部:p2->next=p0;p0->next=p1;③當(dāng)新結(jié)點(diǎn)是插到表尾:p1->next=p0;p0->next=NULL;對(duì)鏈表的綜合操作將前邊4個(gè)函數(shù)放在一個(gè)c程序中,再加上一個(gè)主程序就可以實(shí)現(xiàn)對(duì)鏈表的綜合處理:voidmain(){ STUNODE*head,stu; longdel_num;

printf("\n輸入學(xué)生記錄:");

head=create();

print(head);

//--刪除操作

printf("\n輸入要?jiǎng)h除學(xué)生的學(xué)號(hào):");

scanf("%ld",&del_num);

head=del(head,del_num);

print(head);

//--保序插入操作

printf("\n輸入要插入學(xué)生的記錄:\n");

scanf("%ld%f",&stu.num,&stu.score);

head=insert(head,&stu);

print(head);}八對(duì)鏈表的多個(gè)結(jié)點(diǎn)刪除與插入:voidmain(){ STUNODE*head,*stu;

longdel_num;

printf("\n輸入學(xué)生記錄:\n"); head=create();

print(head); //==多個(gè)結(jié)點(diǎn)的刪除

printf("\n輸入要?jiǎng)h除學(xué)生的學(xué)號(hào):");

scanf("%ld",&del_num);

while(del_num!=0) {

head=del(head,del_num);

print(head);

printf("\n輸入要?jiǎng)h除的學(xué)號(hào):");

scanf("%ld",&del_num); }

//==多個(gè)結(jié)點(diǎn)的保序插入printf("\n輸入要插入學(xué)生的記錄:\n");stu=(STUNODE*)malloc(LEN);scanf("%ld%f",&stu->num,&stu->score);while(stu->num!=0){

head=insert(head,stu);

printf("\n輸入要插入學(xué)生的記錄:\n");

stu=(STUNODE*)malloc(LEN);

scanf("%ld%f",&stu->num,&stu->score);}print(head);}作業(yè):(挑戰(zhàn)一下自己?。?編寫(xiě)一個(gè)建立學(xué)生信息(包含學(xué)號(hào)和分?jǐn)?shù))鏈表的程序,包含兩個(gè)函數(shù):

1)建立鏈表的函數(shù):要求在建立鏈表時(shí),將新結(jié)點(diǎn)插到表頭.

2)輸出鏈表的函數(shù)

另外在主函數(shù)中調(diào)用它們.

2ex11.12(逆序,思路與題目1類似)

3把課本上保序插入函數(shù)改寫(xiě)成建立一個(gè)有序鏈表的函數(shù)。

4ex11.11(刪除指定年齡的結(jié)點(diǎn),刪除相同值的多結(jié)點(diǎn)的情況。)

后三題只寫(xiě)函數(shù)加在第一題中運(yùn)行。Ex11.11程序目的是輸入一個(gè)age,刪除鏈表中此年齡相同的所有結(jié)點(diǎn)//Ex11.11程序目的是輸入一個(gè)age,刪除鏈表中此年齡相同的所有結(jié)點(diǎn)STUNODE*del_age(STUNODE*head,intage){STUNODE*p1, //p1總指向要?jiǎng)h的結(jié)點(diǎn)(讓p1遍歷鏈表) *p2; //p2總指向p1前邊的結(jié)點(diǎn)

p1=p2=head;while(p1!=NULL)

if(age!=p1->age){p2=p1;p1=p1->next;} //前進(jìn)指針

else{ if(p1==head) {head=p1->next;free(p1);p1=p2=head;} //p1指向表頭

else {p2->next=p1->next;free(p1);p1=p2->next;}//p1指向中間結(jié)點(diǎn)或p1指向表尾

n--;}returnhead;}Ex程序目的:建立鏈表:從表頭插入鏈表//Ex程序目的:建立鏈表:從表頭插入鏈表。STUNODE*create_bt(){

STUNODE*head=NULL,*p; //p總指向新結(jié)點(diǎn)

p=(STUNODE*)malloc(LEN);

printf("請(qǐng)輸入學(xué)號(hào)和成績(jī):(學(xué)號(hào)=0時(shí),退出。)\n");

scanf("%ld%d",&p->num,&p->score);

while(p->num!=0) //插入p指向的結(jié)點(diǎn)

{

if(head==NULL) { head=p;p->next=NULL; } else

{p->next=head;heat=p;}

p=(STUNODE*)malloc(LEN);

printf("請(qǐng)輸入學(xué)號(hào)和成績(jī):(學(xué)號(hào)=0時(shí),退出。)\n");

scanf("%ld%d",&p->num,&p->score); } returnhead;}Ex11.12

程序目的:逆序鏈表//Ex1112

程序目的:逆序鏈表STUNODE*inv(STUNODE*head){

STUNODE*p1,

//p1總指向剩余結(jié)點(diǎn)鏈表表頭,下一個(gè)連接的結(jié)點(diǎn)

*p0; //p0總指向當(dāng)前準(zhǔn)備連接的那個(gè)結(jié)點(diǎn)

p0=p1=head;

if(head!=NULL&&head->next!=NULL)

//head不是指向空表或單點(diǎn)表,再進(jìn)行逆序操作

while(p1!=NULL) //剩余結(jié)點(diǎn)鏈表還不空

{ p0=p1;

//剩余結(jié)點(diǎn)鏈表的表頭作為當(dāng)前要插入的結(jié)點(diǎn) p1=p1->next;

//前進(jìn)指針p1,指向剩余結(jié)點(diǎn)鏈表的新表頭

//連接p0到head p0->next=head; head=p0; //p1作為新的表頭

}

returnhead;}//Ex程序目的:用保序插入建立有序鏈表(按成績(jī))//Ex程序目的:用保序插入建立有序鏈表(按成績(jī))STUNODE*create_sort(){

STUNODE*head, //新有序表的頭指針 *p0, //p0總指向新結(jié)點(diǎn) *p1, //p1遍歷鏈表,定插入的位置:第一個(gè)成績(jī)不小于新結(jié)點(diǎn)成績(jī)的結(jié)點(diǎn) *p2; //p2總指向插入位置的前邊那個(gè)結(jié)點(diǎn) head=NULL;n=0; p0=(STUNODE*)malloc(LEN);

printf("請(qǐng)輸入學(xué)號(hào)和成績(jī):(學(xué)號(hào)=0時(shí),退出。)\n"); scanf("%ld%d",&p0->num,&p0->score); while((p0->num!=0)) {

n++;

if(n==1)

{head=p0;p0->next=NULL;}

else

{p1=head;

while((p0->score>p1->score)&&(p1->next!=NULL))

{p2=p1;p1=p1->next;}//定位

if(p0->score<=p1->score)//插入:3種可能情況

{if(head==p1)head=p0;

//可能情況①

elsep2->next=p0; //可能情況② p0->next=p1;}

else{p1->next=p0;p0->next=NULL;}

//可能情況③

} p0=(STUNODE*)malloc(LEN);

printf("請(qǐng)輸入學(xué)號(hào)和成績(jī):(學(xué)號(hào)=0時(shí),退出。)\n"); scanf("%ld%d",&p0->num,&p0->score); }returnhead;

}§11.8

共用體(也叫聯(lián)合體)union共用體類型名{

類型標(biāo)識(shí)符成員名;

類型標(biāo)識(shí)符成員名;

…………….};如,uniondata{inti;charch;floatf;}a,b,c;…b.ch='a';共用體變量的成員的引用與結(jié)構(gòu)體成員的引用形式上一樣:共用體變量名.成員名共用體類型定義的一般形式:共用體是構(gòu)造數(shù)據(jù)類型---它可以有多個(gè)類型不同的成員它的幾個(gè)不同類型的成員共占同一段內(nèi)存!!!(相互覆蓋)afchi當(dāng)然!sizeof(uniondata)=4關(guān)于共用體類型的幾點(diǎn)說(shuō)明:(1-6)1

共用體類型變量的成員共占同一段內(nèi)存,每一時(shí)刻只能有一個(gè)成員的值存放在其中2最后一次存放共用體成員的值將覆蓋掉其他成員的值

如,a.i=1;a.ch='a';a.f=1.5;3共用體變量和各成員的地址,實(shí)際是同一個(gè)地址4不能對(duì)共用體變量名賦值,不能對(duì)共用體變量初始化

如,①a=1;

X

②m=a;

X

③union{inti;charch;float

f}a={1,'a',1.5};

X5不能把共用體變量作為函數(shù)參數(shù),不能把共用體類型作為函數(shù)返回值類型,但是可以使用指向共用體變量的指針6共用體可以出現(xiàn)在結(jié)構(gòu)體類型中,也可以定義共用體數(shù)組.同樣結(jié)構(gòu)體可以出現(xiàn)在共用體類型中,實(shí)際上結(jié)構(gòu)體和數(shù)組都可以作為共用體的成員.例11.12一個(gè)學(xué)校的選舉登記:其中有學(xué)生和教師(共用體的應(yīng)用)學(xué)生登記信息為:號(hào)碼姓名性別職業(yè)

班級(jí)教師登記信息為:號(hào)碼姓名性別職業(yè)

職務(wù)numnamesexjobclassposition10112086LiWangFMST501profstruct{intnum;charname[10];charsex;

charjob;

union{intClass;charposition[10];}category;}p[2];例11.12一個(gè)學(xué)校的選舉登記:其中有學(xué)生和教師(共用體的應(yīng)用)#include<stdio.h>#defineN02#defineFORMAT"\t%d\t%s\t%c\t%c"struct

{intnum;charname[10];charsex;charjob;

union{intClass;charposition[10];}category;}p[N0];例11.12共用體的應(yīng)用:程序(接上頁(yè)1)voidmain(){inti;

printf("請(qǐng)輸入%d個(gè)人的信息:\n",N0);

printf("學(xué)號(hào)i姓名s性別c工作c:\n");

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

{

scanf("%d%s

%c%c",&p[i].num,p[i].name,&p[i].sex,

&p[i].job);

if(p[i].job=='s')

{printf("請(qǐng)輸入班級(jí):");

scanf("%d",&p[i].category.Class);

}

elseif(p[i].job=='t')

{printf("請(qǐng)輸入職稱:");

scanf("%s",p[i].category.position);}

else

printf("輸入錯(cuò)誤!\n");

}

printf("\n\t學(xué)號(hào)\t姓名\t性別\t工作\t班級(jí)/職稱:\n");

for(i=0;i<N0;i++){

printf(FORMAT,p[i].num,p[i].name,p[i].sex,p[i].job);

if(p[i].job=='s')printf("\t%d\n",p[i].category.Class);

elseprintf("\t%s\n",p[i].category.position);}

printf("\n");}§11.9枚舉類型只要將所需要的變量值一一列舉出來(lái),便構(gòu)成了一個(gè)枚舉類型。如:一周內(nèi)的日期:(枚舉類型的定義)

enum

weekday{sun,mon,tue,wed,thu,fri,sat};枚舉類型的保留字。enum:enumeration枚舉類型名。枚舉元素,即枚舉變量可以取的值。枚舉元素也稱作枚舉常量。枚舉類型的變量定義:

enumweekdayday;關(guān)于使用枚舉類型變量的幾點(diǎn)注意(1-6)1枚舉元素是作為常量處理,也稱為枚舉常量,不能對(duì)它賦值枚舉常量有它相應(yīng)的整型序號(hào)。如:

#include<stdio.h>voidmain(){ enumweekday{sun,mon,tue,wed,thu,fri,sat};inti;

//5個(gè)枚舉常量的值依次為:0,1,2,3,4,5,6

enumweekdayweekdays[7]={sun,mon,tue,wed,thu,fri,sat};

for(i=0;i<7;i++)printf("%d",weekdays[i]);printf("\n");}3枚舉量的序號(hào)或說(shuō)值是可以改變的.

如:在定義中:enum

weekday{sun=7,mon=1,tue,wed,thu,fri,sat};兩個(gè)枚舉量可以比較,它們之間的比較是其序號(hào)(枚舉量也可以和整型數(shù)據(jù)比較))如:workday=sun;

此時(shí)workday==mon為假,workday>=mon為真5可以通過(guò)枚舉量的序號(hào)給枚舉變量賦值,但需進(jìn)行類型強(qiáng)制轉(zhuǎn)換,不能直接賦整數(shù)如:workday=(enumweekday)1;workday=mon;

但注意:workday=1;是不允許的?。?!6枚舉量不能直接輸出和輸入.例11.13口袋中的彩球取出3個(gè)球的所有排列方法口袋中有紅、黃、藍(lán)、白、黑5種球,每次從口袋中取出3個(gè)球,問(wèn)得到三種不同的球的可能取法有幾種,并打印出每種排列。分析:這類題最簡(jiǎn)單的方法是采用窮舉法.#include<stdio.h>enumcolor{red,yellow,blue,white,black};voidmain(){

int

i,j,k,n=0;//由于VC不允許枚舉變量做++運(yùn)算,所以改成了整型變量

char*name[5]={"red","yellow","blue","white","b

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論