單元9-結(jié)構(gòu)類型的使用_第1頁
單元9-結(jié)構(gòu)類型的使用_第2頁
單元9-結(jié)構(gòu)類型的使用_第3頁
單元9-結(jié)構(gòu)類型的使用_第4頁
單元9-結(jié)構(gòu)類型的使用_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

<<C語言程序設(shè)計基礎(chǔ)>>課程單元九

結(jié)構(gòu)類型的使用主要內(nèi)容結(jié)構(gòu)類型概述結(jié)構(gòu)類型的說明結(jié)構(gòu)變量的定義(重點)結(jié)構(gòu)變量的引用(重點)結(jié)構(gòu)類型數(shù)據(jù)的處理用函數(shù)處理結(jié)構(gòu)類型(難點)考號姓名筆試成績面試成績總成績1501王虎89921502李雪82851503張揚7796…………某單位招聘考試成績匯總表問題引入如何處理?數(shù)據(jù)特點:1.各行內(nèi)數(shù)據(jù)不盡相同;2.各行間數(shù)據(jù)情況相同;3.以行為單位處理數(shù)據(jù).unsignednum;charname[10];intexama;intexamb;inttotal;問題引入考號姓名筆試成績面試成績總成績1501王虎89921502李雪82851503張揚7796繪制二維表格第一步:制作表頭第二步:畫出各行第三步:編輯各行數(shù)據(jù)使用結(jié)構(gòu)類型第一步:結(jié)構(gòu)說明第二步:結(jié)構(gòu)變量定義第三步:結(jié)構(gòu)變量引用某單位招聘考試成績匯總表如何轉(zhuǎn)換成C語言描述?9.1結(jié)構(gòu)類型的基本使用9.1.1結(jié)構(gòu)類型說明9.1.2結(jié)構(gòu)變量定義9.1.3結(jié)構(gòu)變量引用9.1結(jié)構(gòu)類型的基本使用9.1.1結(jié)構(gòu)類型說明unsignednum;charname[10];intexama;intexamb;inttotal;{};structjob_exam考號姓名筆試成績面試成績總成績1501王虎89921502李雪82851503張揚7796某單位招聘考試成績匯總表例9-19.1結(jié)構(gòu)類型的基本使用9.1.1結(jié)構(gòu)類型說明unsignednum;charname[10];intexama;intexamb;inttotal;{};structjob_exam結(jié)構(gòu)類型說明的一般格式struct<結(jié)構(gòu)名>

{<類型名1><成員變量名1>;<類型名2><成員變量名2>;......<類型名n><成員變量名n>;};

結(jié)構(gòu)類型關(guān)鍵字結(jié)構(gòu)類型說明的標識符結(jié)構(gòu)類型成員列表結(jié)構(gòu)成員起始終止標志分號為結(jié)構(gòu)類型終止標記9.1結(jié)構(gòu)類型的基本使用9.1.2結(jié)構(gòu)變量定義考號姓名筆試成績面試成績總成績1501王虎89921502李雪82851503張揚7796某單位招聘考試成績匯總表structjob_exam*p=&a;structjob_exam

a,b;structjob_exam

s[3];

(1)定義兩個結(jié)構(gòu)變量a和b(2)定義結(jié)構(gòu)變量數(shù)組s,有三個元素(3)定義結(jié)構(gòu)指針p,指向結(jié)構(gòu)變量aunsignednum;charname[10];intexama;intexamb;inttotal;{};structjob_exam例9-29.1結(jié)構(gòu)類型的基本使用9.1.2結(jié)構(gòu)變量定義結(jié)構(gòu)類型說明和變量定義合二為一unsignednum;charname[10];intexama;intexamb;inttotal;{};structjob_examstructjob_exam*p=&a;structjob_exam

a,b;structjob_exam

s[3];

unsignednum;charname[10];intexama;intexamb;inttotal;{}a,b,s[3],*p;structjob_exam9.1結(jié)構(gòu)類型的基本使用9.1.2結(jié)構(gòu)變量定義結(jié)構(gòu)體變量定義時同時初始化struct

job_exam

{unsignednum; charname[10]; intexama; intexamb; inttotal;

}a={1501,"王虎",89,92},s[3]={{1501,"王虎",89,92},{1502,"李雪",87,96},{1503,“張揚”,82,85}},

*p=&a;unsignednum;charname[10];intexama;intexamb;inttotal;{}a,b,s[3],*p;structjob_exam9.1結(jié)構(gòu)類型的基本使用9.1.2結(jié)構(gòu)變量定義結(jié)構(gòu)體變量的存儲特點系統(tǒng)為結(jié)構(gòu)變量分配內(nèi)存的字節(jié)總數(shù)為:結(jié)構(gòu)變量所包含的各個成員變量所占字節(jié)數(shù)之和。如結(jié)構(gòu)變量a所占內(nèi)存字節(jié)數(shù)為26。結(jié)構(gòu)體變量的存儲示意圖nameexamaexambtotalnum10字節(jié)4字節(jié)4字節(jié)4字節(jié)4字節(jié)astruct

job_exam

{unsignednum; charname[10]; intexama; intexamb; inttotal;

}a={1501,"王虎",89,92},s[3]={{1501,"王虎",89,92},{1502,"李雪",87,96},{1503,"張揚",82,85}},

*p=&a;9.1結(jié)構(gòu)類型的基本使用9.1.3結(jié)構(gòu)變量引用(1)用成員運算符“.”引用結(jié)構(gòu)變量成員(2)用指針引用結(jié)構(gòu)變量成員a.total=a.exama+a.examb;p->total=p->exama+p->examb;struct

job_exam

{unsignednum; charname[10]; intexama; intexamb; inttotal;

}a={1501,"王虎",89,92},s[3]={{1501,"王虎",89,92},{1502,"李雪",87,96},{1503,"張揚",82,85}};引用變量成員(*p).total=(*p).exama+(*p).examb;9.1結(jié)構(gòu)類型的基本使用9.1.3結(jié)構(gòu)變量引用#include<stdio.h>voidmain(){structjob_exam {unsignednum; charname[10]; intexama; intexamb; inttotal; }a={1501,"王虎",89,92};

a.total=a.exama+a.examb;//計算總成績

printf("編號姓名筆試面試總成績\n");printf("%4u%8s%6d%6d%6d\n",a.num,,a.exama,a.examb,a.total);}運行結(jié)果:程序演示

例9-3實例應(yīng)用1—引用變量成員9.1結(jié)構(gòu)類型的基本使用9.1.3結(jié)構(gòu)變量引用#include<stdio.h>voidmain(){structjob_exam {unsignednum; charname[10]; intexama; intexamb; inttotal; }*p,s[3]={{1501,"王虎",89,92},{1502,"李雪",87,96},{1503,"張揚",82,85}};p=s;

printf("編號姓名筆試面試總成績\n");for(inti=0;i<3;i++){(*p).total=(*p).exama+(*p).examb;printf("%4u%8s%6d%6d%6d\n",p->num,p->name,p->exama,p->examb,p->total);p++;}}運行結(jié)果:程序演示

例9-4實例應(yīng)用2—引用變量成員9.1結(jié)構(gòu)類型的基本使用9.1.3結(jié)構(gòu)變量引用#include<stdio.h>voidmain(){structjob_exam {unsignednum; charname[10]; intexama,intexamb,inttotal; }t,s[3]={{1501,"王虎",89,92},{1502,"李雪",87,96},{1503,"張揚",82,85}};for(inti=0;i<3;i++)s[i].total=s[i].exama+s[i].examb;

t=s[0];

if(t.total<s[1].total)t=s[1];

if(t.total<s[2].total)t=s[2];printf("總成績最高的考生信息:\n");printf("編號姓名筆試面試總成績\n");printf("%4u%8s%6d%6d%6d\n",t.num,,t.exama,t.examb,t.total);}運行結(jié)果:程序演示

結(jié)構(gòu)體變量整體的引用實例應(yīng)用3—引用變量整體例9-59.1結(jié)構(gòu)類型的基本使用有如下定義:

structjob_exama,b;請為結(jié)構(gòu)變量a,b輸入各成員值,交換a和b數(shù)據(jù)后輸出。

考號姓名筆試成績面試成績總成績1501王虎89921502李雪82851503張揚7796某單位招聘考試成績匯總表【隨堂練習9-1】【提示與思考】1.結(jié)構(gòu)類型如何定義

2.結(jié)構(gòu)變量的定義方式3.結(jié)構(gòu)變量的賦值方式4.結(jié)構(gòu)變量的交換

(1)變量成員的交換

(2)變量的整體交換程序演示

9.2用函數(shù)處理結(jié)構(gòu)類型數(shù)據(jù)知識回顧:函數(shù)調(diào)用中的數(shù)據(jù)傳遞方式:

1.數(shù)值傳遞方式2.地址傳遞方式處理結(jié)構(gòu)類型數(shù)據(jù)時,函數(shù)間傳遞結(jié)構(gòu)變量的值還是地址?考號姓名筆試成績面試成績總成績1501王虎89921502李雪82851503張揚7796某單位招聘考試成績匯總表用函數(shù)完成:查找最高總成績的考生信息。例9-69.2用函數(shù)處理結(jié)構(gòu)類型數(shù)據(jù)【分析】結(jié)構(gòu)變量不能作為一個整體輸入和輸出,但可以作為一個整體賦值、傳遞給函數(shù)以及作為函數(shù)返回值?!咎幚矸椒ā慨斢媒Y(jié)構(gòu)變量作函數(shù)參數(shù)進行整體傳送時,要將全部成員逐個傳送,時間和空間開銷很大,降低了程序效率。一般我們不將結(jié)構(gòu)變量作為函數(shù)參數(shù),而采用結(jié)構(gòu)指針變量,實參傳向形參的只是地址,減少了時間和空間開銷。結(jié)構(gòu)體變量的存儲示意圖nameexamaexambtotalnum10字節(jié)4字節(jié)4字節(jié)4字節(jié)4字節(jié)a結(jié)構(gòu)類型變量特點分析9.2用函數(shù)處理結(jié)構(gòu)類型數(shù)據(jù)考號姓名筆試成績面試成績總成績1501王虎89921502李雪82851503張揚7796某單位招聘考試成績匯總表用函數(shù)完成:查找最高總成績的考生信息。structjob_exam{unsignednum; charname[10]; intexama; intexamb; inttotal; }s[3]={{1501,“王虎”,89,92},{1502,“李雪”,87,96},{1503,"張揚",82,85} };例9-69.2用函數(shù)處理結(jié)構(gòu)類型數(shù)據(jù)【自定義函數(shù)】voidfind(structjob_exam*p){*p=s[0];for(inti=1;i<3;i++)if((*p).total<s[i].total) *p=s[i];}用函數(shù)完成:查找最高總成績的考生信息。例9-6【主函數(shù)】voidmain(){inti;structjob_examt; for(i=0;i<3;i++)s[i].total=s[i].exama+s[i].examb;

溫馨提示

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

評論

0/150

提交評論