freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c語言高級程序設(shè)計(下)ppt(編輯修改稿)

2024-11-13 04:14 本頁面
 

【文章內(nèi)容簡介】 。再分別編寫代碼,將文件中的頭、字段信息和記錄數(shù)據(jù)讀到上面定義的結(jié)構(gòu)的實例中。在讀數(shù)值時,要將所讀到的值的內(nèi)容反轉(zhuǎn),如在文件中有二個字節(jié)為0x00 和 0x06,則要將這兩個字節(jié)反轉(zhuǎn)為 0x06和 0x00。 42 定義記錄結(jié)構(gòu) : typedef struct rec{ char flag。 char name[32]。 char location[64]。 char specialties[64]。 char size[6]。 char rate[8]。 char owner[8]。 } REC。 43 定義字段描述結(jié)構(gòu) : typedef struct field{ char * name。 short len。 } FIELD。 定義頭描述結(jié)構(gòu) : typedef struct { long cookies。 long len。 short fieldNum。 }HEADER。 44 第 6章 鏈表部分 45 例 例 ,要求輸入學生選修課程的學習情況(每個學生可選多門課程,一門課程可有多個學生選修),包括:學號、學生姓名、課程名稱、成績、所在系別、授課教師姓名;完成下列輸出: 將每門課程的成績由高到低排序輸出; 計算出每個學生所有選修課程的平均成績,并由高到低排序輸出。 46 例 首先要定義學生鏈表和課程鏈表的結(jié)點的結(jié)構(gòu),然后編寫創(chuàng)建其結(jié)點實例的方法和向鏈表中插入的方法。對于每一個學生,建立相應(yīng)學生信息的結(jié)點;然后計算學生平均成績,并按照平均成績將上述結(jié)點插入到學生鏈表中。 47 例 數(shù)據(jù)結(jié)構(gòu)設(shè)計: head … num name dep ave course next student … cour teacher score next … 48 例 課程鏈表中結(jié)點的定義 : typedef struct course{ char cour[30]。 int score。 char teacher[10]。 struct course *next。 }COURSE。 49 例 學生鏈表中結(jié)點的定義 : typedef struct student{ int num。 char name[10]。 char dep[20]。 float ave。 COURSE *link。 struct student *next。 }STUDENT。 50 建立學生鏈表的代碼片段 : for(i=0。in。i++){ insertStudentNode(amp。head,createStudentNode())。 } insertStudentNode函數(shù): void insertStudentNode(STUDENT **h,STUDENT *stu){ STUDENT *p,*q。 /*根據(jù)所插入的學生所有選修課程的平均成績和原來鏈表中所有學生的平均成績進行比較由高到低排序 */ if(*h==NULL||stuave=(*h)ave){ stunext=*h。 *h=stu。 } else{ q=*h。 p=qnext。 while (p!=NULL amp。amp。 stuavepave){ q=p。 p=pnext。 } stunext=p。 qnext=stu。 } } 51 createStudentNode函數(shù): STUDENT * createStudentNode(){ COURSE *q。 STUDENT * p=(STUDENT *)malloc(sizeof(STUDENT))。 printf(num=)。 scanf(%d,amp。pnum)。 printf(name=)。 scanf(%s,pname)。 printf(dep=)。 scanf(%s,pdep)。 plink=NULL。 /*輸入所學課程的分數(shù) */ /*若為 39。039。則結(jié)束 */ while ((q=createCourseNode())!=NULL){ insertCourseNode(amp。(plink),q )。 } /*計算課程的平均成績 */ pave =aver(plink)。 return p。 } 52 例 例 ( 1)編寫一個函數(shù),根據(jù)一個已知數(shù)組構(gòu)造一個線性鏈表; ( 2)編寫一個函數(shù),對線性鏈表排序。 提示: 只需定義結(jié)點結(jié)構(gòu)及其操作。這里我們給出了結(jié)點的創(chuàng)建、插入、排序和打印函數(shù)。 53 建立結(jié)點: ELEM *createNode(int n){ ELEM *q=(ELEM*)malloc(sizeof(ELEM))。 qn=n。 qnext=NULL。 return q。 } 54 在鏈表尾插入結(jié)點 : void insertAtTail(ELEM ** h,ELEM * elem){ ELEM * p1,*p2。 if(*h==NULL){ *h=elem。 return 。 } for(p1=*h,p2=p1next 。p2!=NULL。p1=p2,p2=p2next)。 /*移到鏈表尾部 */ p1next=elem。 elemnext=NULL。 } 55 鏈表元素排序 : void sortList(ELEM **h){ ELEM *p,*q,*r,*s,*h1。 h1=p=(ELEM*)malloc(sizeof(ELEM))。 pnext=*h。 while(pnext!=NULL){ q=pnext。 r=p。 while(qnext!=NULL){ if ((qnextn)(rnextn)) r=q。 q=qnext。 } if(r!=p){ s=rnext。 rnext=pnext。 r=snext。 snext=pnextnext。 pnextnext=r。 pnext=s。 } p=pnext。 } *h=h1next。 free(h1)。 } 56 例 例 編寫一個程序,能夠完成二個任意長度的以字符串表示的正整數(shù)的乘法。 說明:輸入的整數(shù)可能超過系統(tǒng)所能表示的最大整數(shù)及最大實數(shù)的范圍或精度。 例:輸入: 124597860和 123 輸出: 15325536780 57 例 提示: 可以將乘法的結(jié)果放于鏈表中,因此我們要首先定義鏈表結(jié)點結(jié)構(gòu)和它相關(guān)的操作:創(chuàng)建結(jié)點實例和鏈表顯示操作,然后編寫乘法運算程序。對于乘數(shù)從個位開始的每一位,逐一與被乘數(shù)相乘。當?shù)?i位乘數(shù) bi與被乘數(shù) aj相乘時,結(jié)果落于第 i+j位上。 被乘數(shù) … aj … a2 a1 乘數(shù) … bi … b1 當前結(jié)果鏈表的位 ri+j ri+j1 第 i位乘數(shù) bi與被乘數(shù)的第 j位 aj相乘時的結(jié)果 aj*bi 進位 ci+j ci+j1 58 例 因此: m=ri+j+aj*bi+ci+j1 /*本次計算中,結(jié)果鏈表的第 i+j位上的累計總值 */ ri+j=m%10 /*本次計算中,結(jié)果鏈表的第 i+j位的最終值 */ ci+j=m/10 /*本次計算中的進位(進到第 i+j+1位上) 59 第 i位乘數(shù)與被乘數(shù)的乘法計算 void multi(BIT *head,char *str,char ch,int i); 參數(shù) head:結(jié)果鏈表的頭指針, str:被乘數(shù)串, ch:乘數(shù)第 i位上的數(shù)字, i:乘數(shù)位數(shù) 定位乘積個位: ptr=head。 while (ni){ if(ptrnext!=NULL) ptr=ptrnext。 else{ q=createNode(0)。 ptrnext=q。 ptr=ptrnext。 } n++。 } 60 定位被乘數(shù)個位: p=str。 while(*p!=39。\039。) p++。 乘法運算: q=ptr。 while(pstr){ p。 mul1=(*p39。039。)*(ch39。039。)+a1。 /*乘運算 */ a1=mul1/10。 mul1%=10。 /*a1為乘積進位 */ if(ptr==NULL){ ptr=createNode(0)。 qnext=ptr。 q=ptr。 } mul2=ptrnum+mul1+a2。 /*與結(jié)果鏈當前位累加 */ a2=mul2/10。 /*a2為累加進位 */ mul2%=10。 /*mul2為本次運算結(jié)果鏈當前位的最終值 */ ptrnum=mul2。 q=ptr。 ptr=ptrnext。 } 61 處理最高進位: if(a1!=0||a2!=0){ if(ptr==NULL){ ptr=createNode(0)。 qnext=ptr。 ptrnum=ptrnum+a1+a2。 } } 62 兩個數(shù)字串的乘法計算: 參數(shù) head:結(jié)果鏈表的頭指針的地址, str:被乘數(shù)串, str2:乘數(shù)串 void multiply(BIT ** head,char * str1,char *str2){ char * p。 int i。 p=str2。 /*定位乘數(shù)個位 */ while (*p!=39。\039。) p++。 /*為 str2的每一位分配空間 */ *head=createNode(0)。 i=0。 while (pstr2){ p。 if (*p!=39。039。){ multi(*head,str1,*p,i)。 /*乘數(shù)的第 i位數(shù) *p乘以被乘數(shù) */ } i++。 } } 63 例 例 L(至少有 1個結(jié)點),其頭結(jié)點指針 head,編寫一個函數(shù)將 L逆臵,即最后一個結(jié)點變成第一個結(jié)點,原來倒數(shù)第二個結(jié)點變成第二個結(jié)點,以次類推。 64 例 提示: 定義鏈表的結(jié)點結(jié)構(gòu)以及創(chuàng)建結(jié)點、插入、打印、逆臵等鏈表的相關(guān)操作。鏈表逆臵的部分操作: head NULL p q r p q r p q r p q NULL 65 例 例 編寫一個函數(shù),交換單鏈表中 p所指向的結(jié)點和其后續(xù)位臵上的結(jié)點。head指向該鏈表的表頭, p指向該鏈表中的某一結(jié)點。 66 提示: 交換指定結(jié)點的后序兩個元素,要對鏈指針進行操作。因此要描述鏈表的指針及相關(guān)操作。其中交換結(jié)點操作 : head NULL p s 67 例 例 :輸入數(shù)字串形式的人民幣錢數(shù)(人民幣小寫),
點擊復制文檔內(nèi)容
教學課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1