C語(yǔ)言結(jié)構(gòu)體與文件_第1頁(yè)
C語(yǔ)言結(jié)構(gòu)體與文件_第2頁(yè)
C語(yǔ)言結(jié)構(gòu)體與文件_第3頁(yè)
C語(yǔ)言結(jié)構(gòu)體與文件_第4頁(yè)
C語(yǔ)言結(jié)構(gòu)體與文件_第5頁(yè)
已閱讀5頁(yè),還剩28頁(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)介

第13講結(jié)構(gòu)體與文件上周平臺(tái)編程訓(xùn)練情況練習(xí)完成情況:19個(gè)同學(xué)存在未做題或者提交題有錯(cuò)。平臺(tái)發(fā)帖區(qū):29個(gè)問(wèn)題貼,其中我轉(zhuǎn)帖qq問(wèn)題的聊天記錄8個(gè)帖子,復(fù)習(xí)貼子7個(gè),希望大家去瀏覽帖子。復(fù)習(xí)很重要,查疑補(bǔ)漏,期中考試前的內(nèi)容是基礎(chǔ)上周平臺(tái)訓(xùn)練問(wèn)題親密數(shù)問(wèn)題最大/小值問(wèn)題復(fù)習(xí)問(wèn)題:注意語(yǔ)法細(xì)節(jié)親密數(shù)問(wèn)題1intfun(inta)

{

ints=0,i;

for(i=1;i<a;i++)

if(a%i==0)

s=s+i;

returns;

}

#include<stdio.h>

voidmain()

{

intn,k,i,j;

scanf("%d",&k);

for(i=1;i<=k;i++)

for(j=1;j<=k;j++)

{

if((fun(i)==j)&&(fun(j)==i)&&i<j)

{

printf("%d,%d\n",i,j);}

}

}

超過(guò)時(shí)間限制了,雖然等半天能出來(lái)結(jié)果去平臺(tái)看帖子,

12.4題聊天記錄親密數(shù)問(wèn)題2#include<stdio.h>

voidmain()

{

intn,m,k,j,s1=0,s2=0;

scanf("%d",&k);

for(n=1;n<=k;n++)

{

for(j=1;j<n;j++)

if(n%j==0)

m=s1+j;

for(j=1;j<k;j++)

if(m%j==0)

s2=s2+j;

if(s2==m&&m!=n&&n<m)

printf("%d,%d\n",n,m);

}

}

超過(guò)1K無(wú)結(jié)果啊去平臺(tái)看帖子,關(guān)于親密數(shù)的錯(cuò)誤-來(lái)自qq對(duì)于每個(gè)n,都需s1=0,s2=0,即重新計(jì)算因子和親密數(shù)問(wèn)題3#include<stdio.h>

voidmain()

{

intm,n,k,i,a,s;

scanf("%d",&k);

for(m=1;m<=k;m++)

for(n=1;n<=k;n++)

{

a=0,s=0;

for(i=1;i<m;i++)

{

if(m%i==0)

a=a+i;

}

for(i=1;i<n;i++);

{

if(n%i==0)

s=s+i;

}

if(a==n&&s==m&&m!=n)

printf("%d,%d\n",m,n);

}

}為啥無(wú)結(jié)果?去平臺(tái)看帖子,為什么沒(méi)有結(jié)果楊培文答疑:1.算s的那個(gè)for后面的分號(hào)去了2.而且要判斷m小于n才輸出n的值無(wú)需再用循環(huán)嵌套,即算完m的因子和a后,直接執(zhí)行n=a;//給n賦值m的因子和,即滿足了n==a

親密數(shù)問(wèn)題4#include<stdio.h>

voidmain()

{

intm,n,i,k,j,q=0,p=0;

scanf("%d\n",&k);

for(m=1;m<=k;m=m+1)

{

q=0;

for(i=1;i<m;i=i+1)

if(m%i==0)

q=q+i;

}

for(n=1;n<=k;n=n+1)

{

p=0;

for(j=1;j<n;n=n+1)

if(n%j==0)

p=p+j;

}

if(m==p&&n==q&&m!=n)

printf("%d,%d\n",m,n);

}為啥無(wú)結(jié)果?去平臺(tái)看帖子,12.4思路問(wèn)題:兩個(gè)for循環(huán)嵌套沒(méi)能構(gòu)成窮舉語(yǔ)法細(xì)節(jié):scanf("%d\n",&k);格式控制中不需要\n,刪除即可

分析:你的第一個(gè)for循環(huán)嵌套,執(zhí)行完成后,q的值是k的因子和,m值是k+1你的第二個(gè)for循環(huán)嵌套,執(zhí)行完成后,p的值是k的因子和,n值是k+1也就是說(shuō),q與p相等,m與n相等,那么緊隨其后的if條件中m!=n肯定不滿足,所以不執(zhí)行輸出語(yǔ)句,即無(wú)結(jié)果。最大最小值問(wèn)題:#include<stdio.h>

voidmain()

{inta[10],i,max,n;

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

scanf("%d",&a[i]);

max=0;

for(i=1;i<n;i++)

{if(a[max]<a[i])max=i;}

printf("最大數(shù)在第%d個(gè)位置\n",max+1);

}語(yǔ)法細(xì)節(jié):n沒(méi)有被賦值?直接換成10平臺(tái)的6.7題平臺(tái)13.1題,返回最大值的位置(指針)本講新內(nèi)容函數(shù)的返回值是指針(地址)文件結(jié)構(gòu)體返回指針值的函數(shù)返回值為指針的函數(shù),定義的形式為:

類型名*函數(shù)名(參數(shù)表);例如:

int*func(intx,inty);表示函數(shù)func返回值為指向int型數(shù)據(jù)的指針。定義注意事項(xiàng):函數(shù)名前的*

只表示返回值為指針型數(shù)據(jù)書265頁(yè)返回指針值的函數(shù)平臺(tái)13.1功能:求兩個(gè)數(shù)中較大的數(shù)。#include<stdio.h>int*fun(int*p1,int*p2){

if(*p1>*p2)returnp1;

elsereturnp2;}voidmain(){inta,b,*max;scanf(“%d

%d”,&a,&b);max=fun(&a,&b);printf(“%d\n”,*max);}舉一反三:平臺(tái)13.2題2.文件概述文件:文件指存儲(chǔ)在外部介質(zhì)(如磁盤)上數(shù)據(jù)的集合。操作系統(tǒng)是以文件為單位對(duì)數(shù)據(jù)進(jìn)行管理的。文件程序數(shù)據(jù)區(qū)輸出文件緩沖區(qū)輸入文件緩沖區(qū)緩沖區(qū):在內(nèi)存區(qū)開(kāi)辟的一片區(qū)域文件的分類按數(shù)據(jù)的組織形式:ASCII文件(文本文件):每一個(gè)字節(jié)放一個(gè)ASCII代碼二進(jìn)制文件:把內(nèi)存中的數(shù)據(jù)按其在內(nèi)存中的存儲(chǔ)形式原樣輸出到磁盤上存放。例:整數(shù)10000在內(nèi)存中的存儲(chǔ)形式以及分別按ASCII碼形式和二進(jìn)制形式輸出如下圖所示:數(shù)字字符對(duì)應(yīng)的ascii碼,占存儲(chǔ)空間多與內(nèi)存一樣,10000的二進(jìn)制形式文件類型指針TurboC在stdio.h文件中有以下的文件類型聲明:typedefstruct{shortlevel;/*緩沖區(qū)“滿”或“空”的程度*/

unsignedflags;/*文件狀態(tài)標(biāo)志*/

charfd;/*文件描述符*/

unsignedcharhold;/*如無(wú)緩沖區(qū)不讀取字符*/

shortbsize;/*緩沖區(qū)的大小*/

unsignedchar*buffer;/*數(shù)據(jù)緩沖區(qū)的位置*/unsignedar*curp;/*指針,當(dāng)前的指向*/unsignedistemp;/*臨時(shí)文件,指示器*/shorttoken;/*用于有效性檢查*/}FILE;在緩沖文件系統(tǒng)中,每個(gè)被使用的文件都要在內(nèi)存中開(kāi)辟一FILE類型的區(qū),存放文件的有關(guān)信息。文件指針的定義FILE*fp;定義文件指針的作用fp是一個(gè)指向FILE類型結(jié)構(gòu)體的指針變量。作用:可以使fp指向某一個(gè)文件的結(jié)構(gòu)體變量,從而通過(guò)該結(jié)構(gòu)體變量中的文件信息能夠訪問(wèn)該文件。文件的打開(kāi)與關(guān)閉打開(kāi)fo坐pe渡n函數(shù)FI竟LE錘*扣fpfp擇=f口op劫en驢(文件群名,劈燕打開(kāi)騎方式晨)打開(kāi)責(zé)方式書33企3頁(yè)表13未-1關(guān)閉fc湊lo梢se函數(shù)fc粗lo鳳se衰(f欄p)C語(yǔ)言地中對(duì)賄文件嗎的讀宮寫都僚是用么庫(kù)函沸數(shù)來(lái)槽實(shí)現(xiàn)狐。文件舉的讀非寫格式臣化讀地寫函諷數(shù):fp津ri塵nt鳳f(貞)和fs捆ca箱nf縣()函數(shù)樣調(diào)用:書34幻玉2頁(yè)fp裁ri說(shuō)nt貫f弟(文件月指針呈,格陷式字測(cè)符串搶,輸膝出表皆列)循;fs待ca寧nf旦(文件斜指針匹,格套式字吉符串蘋,輸涂入表追列)脅;函數(shù)服功能:從磁染盤文椅件中蒙讀入崇或輸塊出字帖符。例:fp鈴ri窯nt賤f(折fp瘋,"洲%d質(zhì),%絹6.妖2f唉",戀i,字t)巷;fs泄ca絨nf西(呆fp鍛,"假%d暮,%疲f"嫂,&谷i,芹&t婦);用fp今ri鄉(xiāng)豐nt胃f和fs啞ca圖nf函數(shù)樂(lè)對(duì)磁臨盤文里件讀億寫,坡使用寫方便抓,容綱易理晨解。文件遙的讀億寫(續(xù))fg允et蚊s函數(shù):書34蒸4頁(yè)函數(shù)畝作用賽:從指柴定文塵件讀長(zhǎng)入一鼻個(gè)字戒符串晴。函數(shù)循調(diào)用祖:fg廚et貼s(蕩st補(bǔ)r,蘿n,舒fp朵);從fp指向巴的文句件輸汪入n-到1個(gè)字果符,趙在最煙后加抵一個(gè)’\0’。返回鹿值:st踢r的首孔地址開(kāi)。舉例筐:fg嗓et傷s(融st異ri情ng寶,1糟00兔0,月fp咬);文件甜的讀凈寫(續(xù))fp填ut滋s函數(shù)函數(shù)甚作用秒:向指太定的嚇文件命輸出盡一個(gè)吼字符憐串。函數(shù)汪調(diào)用君舉例尊:fp哀ut蛾s(鄰"c努hi勺na澇",殘fp芳);第一弄個(gè)參畫數(shù)可成以是或字符教串常庫(kù)量、兇字符堵數(shù)組腎名或罷字符屈型指針技。字江符串膜末尾帽的′\0′不輸笑出。返回尼值:輸入珍成功陶,返償回值杜為0;輸入垂失敗湖,返講回EO迫F。#i駱nc晴lu丟de嶺<前st修di乳o.像h>vo趟id央m網(wǎng)ai鏈n(爐){劇FI捉LE旁*饅fi晴n,醉*f猶ou覺(jué)t;ch賢ar抖s嫁tr露[5包0]若;in照t崗i;fo括ut湊=f嶺op覺(jué)en咱("昌d:裕\\茄da拘ta棕1.霧tx系t"伴,"歇r"杠);fi任n=匙fo平pe娃n(殘"d屋:\饅\d歡at圈a2止.t巡壽xt研",筒"w瞧")擋;wh漫il蓬e(駐!fe播of(f廣ou窗t)認(rèn)){fg凝et烤s(嗓st門r,慣30傍,f攏ou輸t)就;fp吸ut賭s(僵st著r,也fi閑n)運(yùn);}fc海lo勤se眾(f功ou概t)持;fc沈lo粥se魄(f窩in悔);}fe刪of()丸函數(shù)步來(lái)判報(bào)斷文弄件是摟否真梨的結(jié)見(jiàn)束如果李文件韻結(jié)束公,函目數(shù)fe艷of(fp)值采為1(真);否則池為0(假)文件姿的舉妖例:文件喊輸入泄輸出附小結(jié)分類妄函數(shù)高名秒功能文件輪讀寫fg氏et破c(方),優(yōu)ge伍tc順()從指奏定文軟件取配得一孫個(gè)字寸符fp等ut獄c(輛),記pu見(jiàn)tc難()把字呀符輸池出到榮指定缺文件fg揪et社s(府)從指憲定文繞件讀搶取字史符串fp淹ut如s(啞)把字毒符串柜輸出鬼到指券定文硬件ge喇tw岸()從指藍(lán)定文勵(lì)件讀送取一善個(gè)字稻(in柔t(yī)型)pu求tw鍋()把一秤個(gè)字災(zāi)輸出記到指副定文粗件fr無(wú)ea霜d(提)從指膚定文準(zhǔn)件中較讀取賣數(shù)據(jù)阻項(xiàng)fw四ri崇te薄()把數(shù)吐?lián)?xiàng)近寫到宴指定獸文件擱中fs脈ca胳nf直()從指灰定文麗件按仍格式臂輸入桑數(shù)據(jù)fp先ri加nt趙f(缺)按指曬定格匆式將郵數(shù)據(jù)厚寫到撥指定總文件腿中3.結(jié)構(gòu)且體概念運(yùn):有時(shí)是需要覺(jué)將不同楚類型的數(shù)災(zāi)據(jù)組吳合成刊一個(gè)冤有機(jī)的整斧體,勸以便蔥于引向用。如:一個(gè)汽學(xué)生股有學(xué)株號(hào)/姓名/性別/年齡/地址該等屬煮性in闖t丈nu伴m;訪c斧ha讓r暮na淚me辨[2曉0]塊;近c(diǎn)平ha梯r無(wú)se洞x;in寬t舅ag爭(zhēng)e;暮i原nt壟c卡ha陵r日ad釋dr宵[3倒0]珍;應(yīng)當(dāng)誘把它碗們組吳織成夾一個(gè)己組合校項(xiàng),薪在一什個(gè)組集合項(xiàng)中查包含唐若干膨個(gè)類辰型不愉同(漁當(dāng)然籍也可鑰以相咽同)的數(shù)逮據(jù)項(xiàng)營(yíng)。圖11-1100101LiFunM18 87.5BeijingNumnamesexagescoreaddr結(jié)構(gòu)四體定時(shí)義聲明你一個(gè)庸結(jié)構(gòu)而體類黃型的扔一般猾形式閑為:st鵝ru絕ct結(jié)構(gòu)獄體名{成岡員表盼列}具;如:st根ru猶ctst餡ud幟en重t{in光tnu何m;ch宴arna筆me求[2崇0]莊;ch扮arse振x;in斯tag有e;fl詞oa板tsc去or廉e;ch客arad舊dr座[3越0]掛;}結(jié)構(gòu)沈體名類型引名成員膛名定義勻結(jié)構(gòu)錦體類?ài)E型變喝量的跑方法可采吵取方擦法定啦義結(jié)活構(gòu)體勺類型羊變量噸:先聲繩明結(jié)謙構(gòu)體踏類型妙再定膏義變辛量名例如掙:st鼻ru牌ct愿st辜ud侄en蛙tst友ud惜en膚t1,st跪ud數(shù)en衛(wèi)t2;|渾|攔|結(jié)構(gòu)信體類玩型名沾結(jié)構(gòu)突體變蔽量名定義宣了st趙ud灰en娃t1和st肉ud舅en幸t2為st刑ru籌ct雪s扯tu兄de尾nt類型嘉的變閣量,肅即它叮們具杯有st糖ru摩ct發(fā)s截tu柜de音nt類型涼的結(jié)隊(duì)構(gòu).圖11-2student1100101ZhangXinM1990.5Shanghai100102WangLiF2098Beijingstudent2在定拖義了總結(jié)構(gòu)賠體變碰量后潮,系栽統(tǒng)會(huì)滑為之窄分配鍵內(nèi)存努單元蘋。例如:s繩tu軟de贏nt凝1和st相ud怨en欠t2在內(nèi)涼存中寨各占59個(gè)字昏節(jié)(2+沃20雅+1鹿+2產(chǎn)+4而+3攏0=弊59)。結(jié)構(gòu)領(lǐng)體變席量的悠引用在定柴義了艇結(jié)構(gòu)皆體變弟量以鬼后,當(dāng)然仙可以份引用鳳這個(gè)納變量稍。但妨應(yīng)遵賭守以隆下規(guī)狡則:(1江)不能勤將一炭個(gè)結(jié)餓構(gòu)體征變量餐作為奮一個(gè)按整體阻進(jìn)行價(jià)輸入衛(wèi)和輸情出。例如:已定味義st宵ud推en個(gè)t1和st適ud嫂en貝t2為結(jié)鍋構(gòu)體杏變量塞并且染它們駱已有雀值。pr討in誕tf算(″旨%d須,%部s,蔑%c饅,%鍬d,葵%f助,%\n″辨,s叮tu虛de等nt衡1)羅;引用短結(jié)構(gòu)遺體變清量中櫻成員屈的方銅式為付:結(jié)構(gòu)屑體變袋量名.成員霞名例如辜:st別ud鄉(xiāng)豐en婚t1專.n浙um表示st織ud拳en省t1變量葡中的nu精m成員結(jié)構(gòu)有體變峰量的屋初始煮化但不您能用蓋以下醉語(yǔ)句勝整體領(lǐng)讀入該結(jié)構(gòu)邪體變憤量,例如硬:sc萌an學(xué)f(″%憤d,%s,%c,%d,%f,%s″,&st睡ud童en頌t1);結(jié)構(gòu)娃體變蓋量的區(qū)地址耽主要播用作核函數(shù)規(guī)參數(shù)斬,傳茅遞結(jié)曾構(gòu)體宋變量粗的地陽(yáng)址。例11誤.1對(duì)結(jié)穩(wěn)構(gòu)體鉗變量剖初始啦化.#i稱nc宇lu浪de晶<苗st忍di振o.貼h>最v社oi略d貝ma爪in(){s烏tr牛uc悉t乒st崗ud跨en夫t{lo肯ng片i斬nt殘n鉤um;ch暈ar辟n簽am隊(duì)e[雁20皇];到c撕ha犧r(nóng)號(hào)se瓶x;ch屑ar摔a虎dd括r[竹20沉];都}a=泄{1換01防01,″L嗓iL倉(cāng)in犬″,′M推′,″1政23座B早ei吼ji亭ng屠R圍oa摟d″};/*對(duì)結(jié)滲構(gòu)體肅變量a賦初課值*/pr刪in蜘tf毛(″鉗No思.:闖%l血d\nn魚am丈e:皂%s\ns格ex既:%耗c\na希dd江re搶ss星:%遭s\n″,a.鏡nu幟m,a.喊na愧me,a.藥se幼x,a.惹ad星dr棍);}運(yùn)行沸結(jié)果罵:No斥.:10賺10逆1na厚me:Li唱Li妄nse控x:Mad侄dr揪es陶s:12篇3冰Be鹿ij潑in黨g駕Ro港ad結(jié)構(gòu)盲體數(shù)黑組定義申結(jié)構(gòu)燈體數(shù)忽組和定靠義結(jié)飾構(gòu)體兼變量候方法在相仿款,只述需說(shuō)賄明為蒼數(shù)組猴即可例如誕:st剪ru恥ct血s絲式tu填de翅nt{i憤nt朋n銹um洞;c架ha擠r鍋na裙me晴[2康0]祖;c哭ha歇r濁se果x;存in例t克ag幟e;fl徒oa扎t剃sc潔or板e(cuò);妨ch菜ar礙a棗dd姜r[偉30疤];};st烈ru課ct嚇s慮tu耕de袍ntst沫u[失3]脊;以上捕定義捧了一繡個(gè)數(shù)陜組st盆u,數(shù)賺組有繪3個(gè)饞元素推,均蚊為st襪ru侄ct鵲s熔tu綿de搖nt類型竄數(shù)據(jù)挪。結(jié)構(gòu)滾體數(shù)鮮組結(jié)構(gòu)域體數(shù)壺組的肅初始色化與其饑他類叢型的北數(shù)組預(yù)一樣籃,對(duì)怕結(jié)構(gòu)翅體數(shù)繞組可悉以初峰始化譯。例如卸:st隔ru膛ct容s哀tu藥de紀(jì)nt{in葬t(yī)騾nu密m;釋ch猛ar續(xù)n飲am樹(shù)e[兆20碗];ch玩ar絡(luò)s黨ex;in駕t蔬ag漆e;fl倍oa財(cái)t咐sc懇or呢e;緊c瓣ha剃r裹ad飄dr甩[3柳0];}st尾u[3]={{長(zhǎng)10醬10野1,″L籠iL臘in偶″,′M桿′,18,87塔.5,″1脅03獻(xiàn)B糕ei付ji委ng撒Ro牙ad角″},寧{10獸10退2,″Z拳h(huán)a阻ng摟F宋un脆″,′M爛′,19,99,″1概30蘭S生ha梨ng輔ha憤i蝦Ro仁ad悉″}坡};圖11-5結(jié)構(gòu)價(jià)體數(shù)洪組應(yīng)

溫馨提示

  • 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)論