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

正文內容

c語言程序設計一體化案例教程下ppt-資料下載頁

2025-04-11 22:12本頁面
  

【正文】 23 25 32 44 66排序后的實數(shù)為: 排序后的字符串為:cab can cap car cat? 中的庫函數(shù) qsort 與本案例的 Sort 函數(shù)相似:void qsort( void *b, size_t num, size_t width,int (*cmp)(const void *e1,const void *e2) )。其中, size_t 類型名代表 unsigned int 。 示例程序如下: includeincludeincludeint CmpS(const void*a,const void*b)/* 比較兩個字符串 */{ return strcmp((char*)a,(char*)b)。 }int main(void){ char s[5][4]={cat,car,cab,cap,can}。 int i。qsort(s,5,sizeof(s[0]),CmpS)。for(i=0。i5。i++) printf(%s \ t,s[i])。return 0。}案例 通用類型程序設計*(續(xù)6)第 9 章 自定義數(shù)據(jù)類型目錄 結構體 單向鏈表 共用體 枚舉 閱讀材料教學目標? 掌握結構體、共用體和枚舉類型的定義? 掌握結構體、共用體和枚舉類型變量的定義和使用方法? 掌握結構體數(shù)組的定義及應用? 掌握指針訪問結構體變量及成員的方法? 掌握單向鏈表的基本操作及應用? 掌握結構體變量、數(shù)組、指針做函數(shù)參數(shù)和結構體變量做函數(shù)返回值的方法及應用? 預定義數(shù)據(jù)類型,可用于描述簡單數(shù)據(jù),但難以描述復雜數(shù)據(jù),為此 C 語言允許用戶自定義數(shù)據(jù)類型。? 自定義數(shù)據(jù)類型包括結構體、共用體和枚舉。 結構體案例 成績排名? 問題描述: 設學生數(shù)據(jù)包括姓名、學號、 C 成績、英語成績。試編程輸入 10 位學生數(shù)據(jù),按 C 成績和英語成績的平均成績的升序方式輸出他們的成績表。? 思路分析與知識聚焦? 確定數(shù)據(jù)結構:即如何保存 10 位學生的原始數(shù)據(jù)?? 方法一:學生數(shù)據(jù) 按類分組。 定義 5 個數(shù)組分別存放 10 位學生的姓名、學號、 C 成績、英語成績和平均成績:char name[10][9]。unsigned No[10]。float c[10],eng[10],ave[10]。用下標代表學生,即 name[i] 、 No[i] 、 c[i] 、 eng[i] 和ave[i] 表示第 i 個學生數(shù)據(jù) (0 ≤ i < 10) 。 不足: 變量多、未直接反映同一學生數(shù)據(jù)間的聯(lián)系、后續(xù)處理繁瑣。? 請讀者按此數(shù)據(jù)結構完成后續(xù)編程,并與本案例程序比較。案例 成績排名 ( 續(xù) 1)? 方法二:學生數(shù)據(jù) 按人分組。 每個學生的 5 個數(shù)據(jù)作為一個整體,直接表現(xiàn)同一學生數(shù)據(jù)之間的聯(lián)系。? 先定義結構體類型,描述同一學生的 5 個數(shù)據(jù):struct Student /* 定義結構體類型 */{ char name[9]。 /* 姓名 */unsigned No。 /* 學號 */float c, /*C 成績 */eng, /* 英語成績 */ave。 /* 平均成績 */} 。? 后定義 Student 類型的數(shù)組 s , 存放 10 位學生數(shù)據(jù):struct Student s[10]。/* 變量少 */? 小結:結構體可將相關數(shù)據(jù)組成一個整體。? 成員 ( 域 ) 說明應包括類型和名稱,但不能指定存儲種類。? 類型為已有類型。? 此處的 struct表明 Student 是結構體類型,有別于基本數(shù)據(jù)類型。? 類型名? 定義結構體類型的關鍵字? 類型定義結束標志案例 成績排名 ( 續(xù) 2)? 了解結構體變量的內存分配。 與基本類型一樣,結構體類型定義后,可定義它的變量、數(shù)組和指針,并可指定存儲種類:static struct Student s3。 ? s3 定義后,系統(tǒng)在靜態(tài)存儲區(qū)為它分配內存,并用默認初值 0 初始化。? s3 占用的內存:理論上是各成員占用內存的總和,如右圖所示。但實際占用內存因系統(tǒng)而異,可用 sizeof(s3)計算。 16 位系統(tǒng)下占用 25 字節(jié); 32 位系統(tǒng)下占用 28 字節(jié)。原因是,在 32 位系統(tǒng)下,系統(tǒng)為結構體變量分配內存是以 4 個字節(jié)為基準進行的,不足 4 字節(jié)時,補足 4 字節(jié)。案例 成績排名 ( 續(xù) 3)? 了解結構體變量的操作。 設有下列定義:struct Student a ={ 張三 ,202210101 u,} ,b =a ,c,*p =amp。a 。? 通過結構體變量訪問其成員,用成員運算符 (.) :strcpy( , 李四 )。 =202210102u。? 通過指針訪問結構體變量的成員,用成員運算符 (. 或 ) :strcpy( (*p).name , 李四 )。strcpy( p name , 李四 )。/* 薦 ! , (*p).name 的簡寫 */( * p ) .No=202210102u。p No=202210102u。? 同類結構體變量間可賦值 ( 等價于各成員依次賦值 ) 。? 結構體變量、數(shù)組和指針均可做函數(shù)的參數(shù)和返回值。? 結構體變量不能直接輸入 / 輸出,其成員能否直接輸入 /輸出,取決于其成員的類型。? 兩側括號不可少? 定義時初始化:? 在花括號內依次列出成員值? 用同類變量案例 成績排名 ( 續(xù) 4)? 確定程序結構: 以結構體為基礎,按題意做功能分解:? Input(struct Student*p,int n) 函數(shù):輸入 n 位學生數(shù)據(jù)存入 p 所指數(shù)組。? Average(struct Student*p,int n) 函數(shù):計算 p 所指數(shù)組中 n 位學生的平均成績。? Sort(struct Student*p,int n) 函數(shù):對 p 所指數(shù)組中 n 位學生按平均成績的升序排序。? Output(struct Student*p,int n) 函數(shù):輸出 p 所指數(shù)組中 n 位學生的成績排名。? 主函數(shù):分別調用上述函數(shù)完成指定任務。? 程序實現(xiàn): 參見教材。案例 成績排名 ( 續(xù) 5)? 問題思考? 上述程序中, Input 函數(shù)也可定義為:struct Student Input(int i) /* 輸入第 i 位學生數(shù)據(jù)并返回 */{ struct Student s。printf( 輸入第 % d 個學生數(shù)據(jù) ( 姓名 學號 C 成績 英語成績 ):, i+1)。scanf(%s%d%f%f,amp。,amp。,amp。)。return s。}相應地,主函數(shù)改為:…for(i=0。iN。i++)s[i]=Input(i)?!? 功能上,此 Input 函數(shù)同樣能完成。? 效率上,此 Input 函數(shù)低。因執(zhí)行:s[i]=Input(i)。需先調用 Input 函數(shù),調用結束時再將 Input 的返回值復制給 s[i] 。案例 成績排名 ( 續(xù) 6)? Input 等函數(shù)的通用性都較強。若學生人數(shù)需在程序運行時才可確定,則可用下列 main 函數(shù),進一步提高內存的使用效率和程序的通用性 ( 可刪除無參宏 N ) :int main(void){ int n。 /* 存學生人數(shù) */struct Student *p。 /* 指向存學生數(shù)據(jù)的動態(tài)結構體數(shù)組 */printf( “ 輸入學生人數(shù) : ” )。scanf(%d,amp。n)。p=malloc(n*sizeof(struct Student))。 /* 申請堆內存 */if(!p){printf( 未申請到足夠的堆內存 ! \ n)。 return 1。}Input(p,n)。 Average(p,n)。 Sort(p,n)。 (p,n)。free(p)。return 0。}案例 兩點距離和中點坐標? 問題描述: 編寫一個程序,輸入二維坐標中的兩點坐標,輸出這兩點之間的距離和中點坐標。? 思路分析與知識聚焦:? 思路一: 設用兩個 float 型的變量表示一個二維坐標點,則? 計算兩點間距離的函數(shù)原型可聲明為:float Distance(float x1,float y1,float x2,float y2)。x1 、 y1 、 x2 、 y2 分別表示第一、二點坐標,返回值為兩點間距離。? 計算兩點間中點的函數(shù)原型可聲明為:void Mid(float x1,float y1,float x2,float y2,float*x,float*y)。x1 、 y1 、 x2 、 y2 分別表示第一、二點坐標, x 、 y 指向中點坐標的保存位置。? 函數(shù)原型設計繁瑣、可讀性差,并殃及其定義和調用。案例 兩點距離和中點坐標 ( 續(xù) 1)? 思路二: 將二維坐標點定義成結構體類型 Point :struct Point {float x,y。}。為簡化變量定義,可為結構體類型 Point 取別名 POINT :typedef struct Point POINT 。當然也可在定義結構體類型 Point 時為它取別名:typedef struct Point{float x,y。} POINT 。若不再用 Point 定義變量,則還可省略結構體類型名 Point :typedef struct{ /* 省略結構體類型名 */float x,y。} POINT 。 /* 為無名結構體類型取別名 */案例 兩點距離和中點坐標 ( 續(xù) 2)此后可用類型別名 POINT 定義結構體類型 Point 的變量 :? 計算兩點間距離的函數(shù)原型可聲明為:float Distance( POINT p1 , POINT p2)。p1 和 p2 分別表示第一、二點,函數(shù)返回兩點間距離。? 計算兩點間中點的函數(shù)原型可聲明為:POINT Mid(POINT p1, POINT p2)。p1 和 p2 分別表示第一、二點,函數(shù)返回中點。? 思路二設計的函數(shù)原型,雖無本質變化,但表達更簡潔,可讀性大為改善,更接近人的思維。? 程序實現(xiàn)案例 兩點距離和中點坐標 ( 續(xù) 3) includeincludetypedef struct{ /* 定義全局結構體類型,描述二維坐標點 */float x,y。}POINT。POINT Input(void){/* 返回輸入的坐標點 */POINT p。scanf(%f%f,amp。,amp。)。return p。}float Distance(POINT p1,POINT p2){ /* 求 p1 到 p2 間距離并返回 */float dx= ,dy= 。return sqrt(dx*dx+dy*dy)。}案例 兩點距離和中點坐標 ( 續(xù) 4)POINT Mid(POINT p1, POINT p2){/* 求 p1 到 p2 間的中點并返回 */POINT t={ (+)/2, (+)/2 }。return t。}int main(void){POINT p0,p1,p2。printf( 請輸入一個二維坐標點的坐標: )。 p0=Input( )。printf( 請再輸入一個二維坐標點的坐標: )。 p1=Input( )。p2=Mid(p0,p1)。printf((%.1f,%.1f) 到 (%.1 f,%.1f) 的距離 =%.1 f \ n, , Distance(p0,p1))。printf((%.1f,%.1f) 到 (%.1 f,%.1f) 的中點為 (%.1 f,%.1f) \ n, , ,)。return 0。}案例 兩點距離和中點坐標 ( 續(xù) 5)? 問題思考: 以 Mid 函數(shù)為例。? 提高函數(shù)調用的參數(shù)傳遞效率,形參可用 POINT 類型的指針:POINT Mid( POINT *p1 , POINT *p2 ) {POINT t={(p1 x+p2 x)/2, (p1 y+p2 y)/2}。return t。}主函數(shù)中的相關調用也應做修改:p2=Mid( amp。p0 , amp。p1 )。高效:①減少形參內存占用量。②減少實參傳遞時間。? 結構體指針做函數(shù)參數(shù)也要保證指針參數(shù)所指數(shù)據(jù)的安全。因 Mid 函數(shù)僅讀取坐標點而不改變,則應將它的原型聲明做如下改進,以防意外改變:POINT Mid( const POINT* p1, const POINT* p2)。案例 加密? 思路分析: 細節(jié)參見源程序。? 結構體類型 ENCODE : 描述碼表的結構。? ENCODE 類型的數(shù)組 tab : 保存碼表。注意,數(shù)組 tab 最后以39。 \ 039。 結束,一方面便于編寫通用的將明文轉換成密文的函數(shù)encode , 另一方面便于擴充碼表。? encode 函數(shù):按碼
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1