如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
结构与函数的关系向结构中传递函数的成员;在函数之间传递整个结构;向函数传递结构的地址(指针)。向函数中传递结构的成员在函数中传递结构成员的方法与传递简单变量的方法相同:在函数之间传递成员的值;在函数之间传递成员的地址。实例printf(“%d”,man.birthday.year);传递成员的值scanf(“%d”,&man.birthday.year);传递成员的地址gets(man.name);传递结构成员的地址在函数之间传递整个结构将结构作为整体,在函数之间传递:将结构变量作为形参;函数的返回值为一个结构类型。例C11_401.C:利用结构变量求解两个复数之积。①、(3+4i)×(5+6i)②、(10+20i)×(30+40i)structcomplx{intreal;/*real为复数的实部*/intim;/*im为复数的虚部*/};structcomplxcmult(za,zb)/*函数的返回值为结构类型*/structcomplxza,zb;/*形式参数为结构类型*/{structcomplxw;w.real=za.real*zb.real-za.im*zb.im;w.im=za.real*zb.im+za.im*zb.real;return(w);/*返回计算结果,返回值的类型为结构*/}向函数传递结构的地址向函数中传递结构的地址要将函数的形参定义为指向结构的指针,在调用时要用结构的地址作为实参。例C11_402.C:输入10本书的名称和单价,按照单价排序。程序中使用插入排序算法。插入排序的基本思想是:在数组中,有N个已经从小到大已经排好序的元素,要加入1个新的元素时,可以从数组的第1个元素开始,依次与新元素进行比较。当数组中首次出现第i个元素的值大于新元素时,则新元素就应当插在原来数组中的第i-1个元素与第i个元素之间。此时可以将数组中第i个元素之后(包括第i个元素)的所有元素向后移动1个位置,将新元素插入,使它成为第i个元素。这样就可以得到已经排好序的N+1个元素。5#defineNUM10structbook/*定义结构book*/{charname[20];/*书名*/floatprice;/*单价*/};main(){structbookterm,books[NUM];intcount;/*数组books的元素计数器*/for(count=0;count<NUM;){printf(“EnterNameandPrice.book%d=",count+1);scanf(“%s%f”,term.name,&term.price);sortbook(term,books,count++);/*传递结构变量term和结构数组book数组的首地址)*/}printf("--------BOOKLIST---------\n");for(count=0;count<NUM;count++)printbook(&books[count]);/*传递数组中1个元素的地址*/}sortbook(term,pbook,count)structbookterm;/*形参:结构变量term*/structbook*pbook;/*指向结构数组首元素的指针pbook*/intcount;/*数组中已存入count个有序元素*/{inti;structbook*q,*pend=pbook;for(i=0;i<count;i++,pend++);for(;pbook<pend;pbook++)if(pbook->price>term.price)break;for(q=pend-1;q>=pbook;q--)*(q+1)=*q;*pbook=term;/*在pbook处插入新元素term*/}printbook(pbook)structbook*pbook;{printf("%-20s%6.2f\n",pbook->name,pbook->price);}定义结构变量stu:structstudent{intnum;floatscore;charsex;}stu;union§11-5联合(续2)§11-5联合(续3)§11-7枚举类型用户自定义类型标准类型(如int、char、float等):系统已经定义好的类型,用户可以直接使用,无须再进行定义。用户自定义类型:用户根据自己的实际要求,自己定义的新的数据类型。除结构和联合等类型之外,还可以用类型说明语句typedef定义新的类型标识符