下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
譚譚浩強(qiáng)《語言程序設(shè)計(jì)》考點(diǎn)精講及復(fù)習(xí)思考情分析及復(fù)習(xí)介紹第一 C語言概
(1(14第二 算法 (19第三 數(shù)據(jù)類型、運(yùn)算符與表達(dá) (33第四章 單的C程序設(shè)計(jì)第五 擇結(jié)構(gòu)程序設(shè)
(49(60第六 循環(huán)控制 (69第七 數(shù)第八 函
(80(99第九 預(yù)處理命令 (第十 指針 (第十一 結(jié)構(gòu)體與 (第十二 位運(yùn)算 (第十三 文件 (考情分析及章節(jié)介紹考情分析、復(fù)習(xí)方課程特知識點(diǎn)眾多,不利于,難于掌算法的概念及其表示數(shù)據(jù)類型、運(yùn)算符與表達(dá)式;程序設(shè)計(jì)結(jié)構(gòu);數(shù)組函數(shù)指針預(yù)處理命令結(jié)構(gòu)體、、枚舉類型;位運(yùn)算、位段;文件書寫形式類似、功能相近,容易給定以下幾組定義,說明其含義:intp;intp;2.intp[n];intp[n];int(p)[n]3.intp();intp();int(p)();關(guān)于typedef與#define的相似之處typedefint#defineCOUNT作用:都是用COUNT代表int。但事實(shí)上,二者是不同的。#define是在預(yù)編譯時(shí)處理的,只能作簡單的字符串替換,而typedef是在編譯時(shí)處理的,并不是作簡單的字符串替換,而是 一個(gè)類型。知識點(diǎn)綜合運(yùn)用,難于理#include<stdio.hstructstu{intx;inty;}p;intdt[4]={10,20,30,40};structstua[4]={50,dt0],60,dt1],70,dt2],80,dt3]}11main({p=printf("%d,",++p->x)printf("%d,",(++p)->x)printf("%d\n",++(p->y))}運(yùn)行情況輸出51,60,出題思路:按內(nèi)容分布、按題型分布探討按內(nèi)容分布按知識點(diǎn)的基礎(chǔ)內(nèi)容出例如:針對數(shù)據(jù)類型、運(yùn)算符與表達(dá)式在C語言中,int、char和short種類型數(shù)據(jù)在內(nèi)存中所占用的字節(jié)數(shù)(D)A.由用戶自己定 B.均為2個(gè)字C.是任意的 D.由所用機(jī)器的機(jī)器字長所決定例如:針對函數(shù);在語言程序中,在一個(gè)源程序中,main函數(shù)的位置(C)語言程序總是從第一個(gè)定義的函數(shù)開始執(zhí)在語言程序中,要調(diào)用的函數(shù)必須在main函數(shù)中定語言程序總是從main函數(shù)開始執(zhí)語言程序中的main函數(shù)必須放在程序的開始部分例如:針對循環(huán)結(jié)構(gòu);寫出下面程序的輸出結(jié)果(A) {Intn[2]={0},i,j,k=2;(i=0;i<k;i++for(j=0;j<k;j++)n[j]=n[i]+1;Printf(“%d\n”,n[k]);}不確定的B.22C.2D.例如:綜合選擇結(jié)構(gòu)、自增運(yùn)算符#include<stdio.h>({intx,scanf(“%d”, &x);if(x++<0)y=-1;elseif(x==0)y=0;elsey=1;printf(“%d”,y)}如果從鍵盤上輸入,則程序的輸出是(A)A. B.0 C.1 不確定的值例如:綜合選擇分支結(jié)構(gòu)、自增運(yùn)算符;#include<stdio.h>({intx=1,y=0,a=0,b=0;switch(x){caseswitch({case0:a++;case1:b++;}casea++;b++;}printf(“a=%d,b=%d\n” a,b)}33A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=出題思按題型角度:填空題、選擇題、程序補(bǔ)充、程序閱讀、程序改錯(cuò)、程序設(shè)計(jì)填空題:描述“一個(gè)整數(shù)n能被3或7整除”的C語言邏輯表達(dá)式 )(n==)||(n==)以下程序的運(yùn)行結(jié)果是(11)。#defineADD(x,y)x+yvoidmain(){printf(“%d\n”,ADD(1,2)ADD(3,4))}按題型角度:知識點(diǎn)的基本內(nèi)容及綜合選擇題:單項(xiàng)下列標(biāo)識符中,(B)是合法的用戶定義的標(biāo)識符A. B.getchC.voidD.以下程序的運(yùn)行結(jié)果是(B)voidmain(){inti=0,j=0,k=if((++i)||(++j>0))k++;printf(“%d,%d,%d\n”,i,j,k);A.0,0,6B.1,0,7C.1,1,7D.0,1,選擇題:多下面關(guān)于枚舉類型的說法正確的是(B、C、D)可以為枚舉元素賦枚舉元素可以進(jìn)行比枚舉元素的值可以在類型定義時(shí)指枚舉元素可以作為常量使4程序補(bǔ)充從鍵盤上輸入10個(gè)數(shù),求其平均值main({for(i=1,sum=0.0;i<11;i++ scanf("%f",f sum=sum+;;}Printf(“average=%f\n”,sum/10)}scanf("%f",f{sum=sum+以下函數(shù)的功能是:把字符串str2接在字符串str1的后面voidfun(charstr1,char{(p1+i)?。健ǎ穑玻椋睿簦椋剑穑保剑穑玻剑妫铮颍?;p2;i++)i++(p1+i)=\‘(p2++(p1+i)(p1+i)=‘\0’;}(p1+i)=\‘(p2++程序閱讀寫出程序的輸出結(jié)果main({4inta=a+=(a<1)?a:1;printf(“%d”,a); 程序閱讀寫出程序的輸出結(jié)果voidmain({inti,b,k=for(i=1;i<=5;i++{b=i%while(b-->=0)k++}printf("%d,%d\n",k,b) 8,-程序改錯(cuò)下面程序用以計(jì)算整數(shù)階乘voidmain({inti,n;longnpp;scanf("%d",nnpp=1;i=while(i++<= while(i<=npp=npp npp=npp(i-1)printf("n=%d, =%d\n",n,npp)while(i<=}npp(i-1)程序改錯(cuò)輸入一個(gè)三位數(shù),分別求這個(gè)數(shù)的個(gè)、十、百位輸出void {intt,x,y,scanf("%d",t) scanf(“%d”,tx=t/y=(t-x100)/10;y=(t-x100)%10;z=t%10;printf("x=%d,y=%d,z=%d\n",x,y,z)scanf(“%d”,t}y=(t-x100)%按題型角度:算法及知識點(diǎn)的綜合程序設(shè)計(jì):課后習(xí)題、綜合性弱編程輸出10至100之間的所有素?cái)?shù)編程輸出100至999之間的所有水仙花數(shù)(水仙花數(shù)定義,如:153=,則153為水仙花數(shù)設(shè)任意含有10個(gè)元素的一維數(shù)組A和指針變量p,請用指針與數(shù)組關(guān)系編程輸出該數(shù)組元素內(nèi)容。程序設(shè)計(jì):綜合性假設(shè)一個(gè)文本文件中保存著100個(gè)整數(shù),請將這100個(gè)整數(shù)從大到小的順序?qū)懙搅硪粋€(gè)文件中去,并且在新文件中每10個(gè)整數(shù)占一行。源文件名和目標(biāo)文件名通過命令行參數(shù)獲取。#include<stdio.hvoidanintargc,charargv[]{FILEfin,fout;inta[100],i,j,t;If(argc?。剑常穑颍椋睿簦妫ā埃伲铮酰妫铮颍纾铮簦簦铮澹睿簦澹颍幔妫椋欤澹睿幔恚澹埽睢保妫椋睿剑妫铮穑澹睿ǎ幔颍纾觯郏保荩保颉保?;fout=fopen(argv[2],”w”);for(i=0;i<100;i++)for(j=0;j<99-i;i++)(a[j]>a[j+{t=a[j];a[j]=a[j+1];a[j+1]=t;復(fù)習(xí)思從的角度(按章節(jié)順序,較全面)(第一階段)從考題的角度(抓重點(diǎn),找遺漏)(第二階段)從的角度(按章節(jié)順序,較全面)(第一階段)認(rèn)真復(fù)習(xí)每個(gè)知識點(diǎn),掌握C語言規(guī)則。例如:針對字符數(shù)組和字符指針變字符數(shù)組由若干個(gè)元素組成,每個(gè)元素中放一個(gè)字符,而字符指針變量中存放的是地址(字符串第1個(gè)字符的地址),決不是將字符串放到字符指針變量中。對字符數(shù)組只能對各個(gè)元素賦值,不能用以下辦法對字符數(shù)組賦值charstr[14]str=″IloveChina!而對字符指針變量,可以采用下面方法賦值 a=″IloveChina!″對于容易的知識點(diǎn),歸納和總有關(guān)整型的數(shù)據(jù)類定含int定義整型變量 p為指向整型數(shù)據(jù)的指針變intp[n]定義整型數(shù)組p,它有n個(gè)元intp[n]定指針數(shù)組p,它由n個(gè)指向整型數(shù)據(jù)的指針元組成int(p)[n]p為指向含n個(gè)元素的一維數(shù)組的指針變intp()p為帶回整型函數(shù)值的函 p()p為帶回一個(gè)指針的函數(shù),該指針指向整型數(shù)int(p)()p為指向函數(shù)的指針,該函數(shù)返回一個(gè)整型 p—個(gè)指針變量,它指向一個(gè)指向整型數(shù)據(jù)的指變量培養(yǎng)認(rèn)真分析的,建立地址分配模型#include<stdio.hstructstu{intx;inty;}p;intdt[4]={10,20,30,40};structstua[4]={50,dt0],60,dt1],70,dt2],80,dt3]}main({p=printf("%d,",++p->x);printf("%d,",(++p)->x);printf("%d\n",++(p->y));}運(yùn)行情況輸出51,60,從考題的角度(抓重點(diǎn),有遺漏)(第二階段)主要是出題幾率小的知識點(diǎn)。例如:下面符合要求的位段定義是(B)要求:1)a有兩位;2)b有兩位;3)c有兩位;4)d有四位A.struct{unsigneda,b,c:2;unsignedd:4;}B.struct{unsigneda:2,b:2;unsignedc:2,d:4;}C.struct{unsigneda,b,c:6;unsignedd:4;}D.struct{unsigneda,b:4;unsignedc,d:6;}按章節(jié)介紹知識點(diǎn)分布重點(diǎn)內(nèi)容必考;數(shù)據(jù)類型、運(yùn)算符與表達(dá)式、結(jié)構(gòu)化程序設(shè)計(jì)、數(shù)組、函數(shù)、結(jié)構(gòu)體、指針、文件;主要內(nèi)容算算法的概念、算法的特性、算法的表示用自然語言表示算法用流程圖表示算法:基本程序設(shè)計(jì)結(jié)構(gòu)用流程圖表示算法用偽代碼表示算數(shù)據(jù)類型、運(yùn)算符與表達(dá)整型數(shù)據(jù):整型常量的表示方法、整型變量、整型常浮點(diǎn)型數(shù)據(jù):浮點(diǎn)型常量的表示方法、浮點(diǎn)型變量、浮點(diǎn)型常量字符型數(shù)據(jù):字符常量、字符變量、字符串常量各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算算術(shù)運(yùn)算符和算術(shù)表達(dá)式賦值運(yùn)算符和賦值表達(dá)式逗號運(yùn)算符和逗號表達(dá)語言程序設(shè)計(jì)賦值語句數(shù)據(jù)輸入輸字符數(shù)據(jù)輸入輸出格式輸入與輸出選擇結(jié)關(guān)系運(yùn)算符和關(guān)系表達(dá)式邏輯運(yùn)算符和邏輯表達(dá)if語句:If語句的基本形式、If語句的嵌套、條件運(yùn)算switch語循環(huán)控goto語句以及用goto語句構(gòu)成循環(huán)用while語句實(shí)現(xiàn)循環(huán)用dowhile語句實(shí)現(xiàn)循環(huán)用for語句實(shí)現(xiàn)循環(huán)循環(huán)的嵌break語句continue和語數(shù)—維數(shù)組的定、、初始二維數(shù)組的定義、、初始化字符數(shù)組的定義、、初始化字符串和字符串結(jié)束標(biāo)志字符數(shù)組的輸入輸出字符串處理函數(shù)函函數(shù)定義的一般形式、函數(shù)參數(shù)和函數(shù)的返回值函數(shù)的調(diào)用、函數(shù)原型、嵌套調(diào)用、遞歸調(diào)用數(shù)組作為函數(shù)參局部變量和全局變變量的類別:動態(tài)方式與靜態(tài)方式auto變量、用static局部變量、register變量用extern外部變量、用static外部變預(yù)處理命宏定義:不帶參數(shù)的宏定義、帶參數(shù)的宏定義、帶參數(shù)的宏和函數(shù)的區(qū)別“文件包含”處理?xiàng)l件編指地址和指變量的指針和指向變量的指針變量數(shù)組與指針字符串與指指向函數(shù)的指針、返回指針值的函數(shù)指針數(shù)組和指向指針的指針void指針類結(jié)構(gòu)體與結(jié)構(gòu)體變量的定義、、初始化結(jié)構(gòu)體數(shù)組指向結(jié)構(gòu)體類型數(shù)據(jù)的指針用指針處理鏈表共用枚舉類用typedef定義類位運(yùn)位運(yùn)算符和位運(yùn)算位段文文件類型指文件的打開與關(guān)閉文件的讀寫文件的定位出錯(cuò)的檢文件輸入輸出復(fù)習(xí)思路知識點(diǎn)較多、知識點(diǎn)之間可以綜合應(yīng)用,復(fù)習(xí)難度大按章節(jié)順序、全面掌握知識點(diǎn),培養(yǎng)綜合分析考題的能力;從考題的角度、有重點(diǎn)地針對性地復(fù)習(xí)。第一 C語言概本章考考點(diǎn)1語言出現(xiàn)的歷史背語言是國際上廣泛流行的高級語言,語言是在語言的基礎(chǔ)上發(fā)展起來的B(BCPL)語言是1970年由貝爾設(shè)計(jì)的,并用于編寫了第一個(gè)UNIX操作系統(tǒng),優(yōu)點(diǎn):精練,接近硬件;缺點(diǎn):過于簡單,數(shù)據(jù)無類型。1973年貝爾的D.MRitchie在B語言的基礎(chǔ)上設(shè)計(jì)出C語言,對B取長補(bǔ)短,并用之改寫原來用匯編編寫的UNIX,但僅在貝爾使用。1975年第6版發(fā)布,優(yōu)點(diǎn)突出引起關(guān)注1977年出現(xiàn)《可移植語言編譯程序》,推動在各種機(jī)器上實(shí)現(xiàn),語言得到推廣,其發(fā)展相輔相成。1978年影響深遠(yuǎn)的名著《TheCProgrammingLanguage》由BrianW.Kernighan和DennisM合著,被稱為標(biāo)準(zhǔn)C1983年,化(ANSI)根據(jù)C語言各種版本對C的發(fā)展和擴(kuò)充,制定了新的標(biāo)ANSIC,比標(biāo)準(zhǔn)C有了很大的發(fā)展1988年,K&R按照ANSIC修改了他們的《TheCProgrammingLanguage》1987年,ANSI新標(biāo) 87ANSIC1990年,國際標(biāo)準(zhǔn)化組織接受了87ANSIC為ISOC的標(biāo)準(zhǔn)(ISO98991990)1994年,ISO又修訂了C語言標(biāo)準(zhǔn)目前,流行的語言編譯系統(tǒng)大多是以ANSI為基礎(chǔ)進(jìn)行開發(fā)的說明:不同版本的C編譯系統(tǒng)所實(shí)現(xiàn)的語言功能和語則略有差別,因此了解所用的C語言編譯系統(tǒng)的特點(diǎn)??键c(diǎn)2語言的特(1)語言簡潔、緊湊,使用方便、靈活。32個(gè)關(guān)鍵字、9種控制語句,程序形式(2)運(yùn)算符豐富。34種運(yùn)算符(3)數(shù)據(jù)類型豐富,具有現(xiàn)代語言的各種數(shù)據(jù)結(jié)構(gòu)(4)具有結(jié)構(gòu)化的控制語句,是完全模塊化和結(jié)構(gòu)化的語言(5)語法限制不太嚴(yán)格,程序設(shè)計(jì)度大(6)允許直接物理地址,能進(jìn)行位操作,能實(shí)現(xiàn)匯編語言的大部分功能,可直接對硬件進(jìn)行操作。(7)目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。只比匯編程序生成的目標(biāo)代碼效率低10%(8)程序可移植性好。基本上不做修改就能用于各種型號的計(jì)算機(jī)和系統(tǒng)??键c(diǎn)3簡單的C語言程序介紹#include<stdio.h /文件包 voidmain( /主函 函數(shù)體開printf("ThisisaCprogram.\n")}
輸出語/ 函數(shù)體結(jié)/說明:main主函數(shù)名,void函數(shù)類型每個(gè)程序必須有一個(gè)主函數(shù)main{}是函數(shù)開始和結(jié)束的標(biāo)志,不可省每個(gè)語句以分號結(jié)束使用標(biāo)準(zhǔn)庫函數(shù)時(shí)應(yīng)在程序開頭添加:#includestdio.h#include<stdio.hvoidmain( 主函 {intaxintx,inty) 對被調(diào)用函數(shù)max的*inta,b,scanf(″d,%d″,&a,bc=ax(a,b)printf(″max=%d\\n″,c)intaxintx,int}
義變量a、b、c定入變量a和b的 /用max函數(shù),將得到的輸 出c的 調(diào)/輸
賦給/{intif(x>y)z=x;elsez=y;return(z)}例:求兩數(shù)之求#include<stdio.h求voidmain( {
數(shù)之 inta,b, ,定義變量為整 下 3行為語下a=123;b=sum=a+printf(″sumis%d\n″,sum)}說明:/ …… /表示注釋。注釋對編譯和運(yùn)行不起作用,可以用漢字或英文字符表示,可以現(xiàn)在一行中的最右側(cè),也可以單獨(dú)成為一行。程序(1)C程序是由函數(shù)構(gòu)成的,使程序容易實(shí)現(xiàn)模塊化(2)一個(gè)函數(shù)由兩部分組成函數(shù)的首部:例3中的max函數(shù)首intaxintx,inty函數(shù)體:花括號內(nèi)的部分。若一個(gè)函數(shù)有多個(gè)花括號,則最外層的一對花括號為函數(shù)體的范圍。函數(shù)體包括兩部分:部分:inta,b,c;可缺省執(zhí)行部分:由若干個(gè)語句組成,可缺省注意:函數(shù)的部分和執(zhí)行部分都可缺省,例如voiddump({}這是一個(gè)空函數(shù),什么也不做,但是合法的函數(shù)。總結(jié):(1)程序總是從main函數(shù)開始執(zhí)行的,與main函數(shù)的位置無關(guān)(2)C程序書寫格式,一行內(nèi)可以寫幾個(gè)語句,一個(gè)語句可以分寫在多行上,C程序沒有行號。(3)每個(gè)語句和數(shù)據(jù)的最后必須有一個(gè)分號(4)語言本身沒有輸入輸出語句。輸入和輸出的操作是由庫函數(shù)scanf和printf等函數(shù)來完成的。對輸入輸出實(shí)行“函數(shù)化”。考點(diǎn)4運(yùn)行程序的步—、運(yùn)行程序的步(1)上機(jī)輸入與編輯源程(2)對源程序進(jìn)行編(3)與庫函數(shù)連(4)運(yùn)行可執(zhí)行目標(biāo)程二、上機(jī)運(yùn)行程序的方(1)目前使用的大多數(shù)C編譯系統(tǒng)都是集成環(huán)境(IDE)的??捎貌煌木幾g系統(tǒng)對C程序進(jìn)操作(2)常用的有TurboC2.0、TurboC++3.0、VisualC+等(3)TurboC++3.0:是一個(gè)集成環(huán)境,具有方便、直觀和易用的界面,雖然是DOS環(huán)境下的集成環(huán)境,但是可以把啟動TurboC++3.0集成環(huán)境的DOS執(zhí)行文件tc.exe生成快捷方式,也可以用鼠標(biāo)操作。(4)VisualC+:可以用VisualC+對C程序進(jìn)行編譯本章小主要知識點(diǎn)C語言的特點(diǎn):運(yùn)算符豐富、模塊化和結(jié)構(gòu)化、允許直接物理地址、進(jìn)行位操作、可移植性好等簡單的語言程序:函數(shù)、函數(shù)的首部、函數(shù)體運(yùn)行程序的步驟:輸入與編輯源程序、編譯、連接、運(yùn)行第二 算本章考考點(diǎn)1算法的概—個(gè)程序應(yīng)包括兩個(gè)方面的內(nèi)容對數(shù)據(jù)的描述:數(shù)據(jù)結(jié)構(gòu)(datastructure)對操作的描述:算法(alithm著名計(jì)算機(jī)科學(xué)家沃思提出一個(gè)公式數(shù)據(jù)結(jié) +算 =程完整的程序設(shè)計(jì)應(yīng)該是數(shù)據(jù)結(jié)構(gòu)算法程序設(shè)計(jì)方法語言工廣義地說,為解決一個(gè)問題而采取的方法和步驟,就稱為“算法”。對同一個(gè)問題,可有不同的解題方法和步驟。例如求:n方法1:1,,,一直加到100,加99方法2:100(1)(2)…(49)=+49 加51為了有效地進(jìn)行解題,不僅需要保證算法正確,還要考慮算法的質(zhì)量,選擇合適的算法。希望方法簡單,運(yùn)算步驟少。計(jì)算機(jī)算法可分為兩大類別數(shù)值運(yùn)算算法:求數(shù)值解,例如求方程的根、求函數(shù)的定積分等非數(shù)值運(yùn)算:包括的面十分廣泛,最常見的是用于事務(wù)管理領(lǐng)域,例如檢索、人事管理、行調(diào)度管理等例1求1步驟1:先求1,得到結(jié)果步驟2:將步驟1得到的乘積2再乘以3,得到結(jié)果步驟3:將6再乘以4,得步驟4:將24再乘以5,得如果要求1…,則要寫999個(gè)步可以設(shè)兩個(gè)變量:一個(gè)變量代表被乘數(shù),一個(gè)變量代表乘數(shù)。不另設(shè)變量存放乘積結(jié)果,而直接將每一步驟的乘積放在被乘數(shù)變量中。設(shè)p為被乘數(shù),i為乘數(shù)。用循環(huán)算法來求結(jié)果,算法可改寫:S1:使p=2:使i=S3:使pi,乘積仍放在變量p中,可表示為:pipS4:使i的值加1,即ii。S5:如果i不大于5,返回重新執(zhí)行步驟S3以及其后的步驟S4和S5;否則,算法結(jié)束。最后得到的值就是5!的值用這種方法表示的算法具有通用性、靈活性。S3到S5組成一個(gè)循環(huán),在實(shí)現(xiàn)算法時(shí),要反復(fù)多次執(zhí)行S3,S4,S5等步驟,直到某一時(shí)刻,執(zhí)行S5步驟時(shí)經(jīng)過判斷,乘數(shù)i已超過規(guī)定的數(shù)值而不返回S3步驟為止。此時(shí)算法結(jié)束,變量p的值就是所求結(jié)果。例例2有50個(gè)學(xué)生,要求將成績在80分以上者打印出來。設(shè)n表示學(xué)號,n1代表第一個(gè)學(xué)生學(xué)號,ni代表第i個(gè)學(xué)生學(xué)號。用g代表學(xué)生成績,gi代表第i個(gè)學(xué)生成績,算法表示如下:S1:1->S2:如果g80則打?。睿楹停纾椋駝t不打?。樱常海椋保荆樱矗喝绻椋担埃祷兀樱?,繼續(xù)執(zhí)行。否則算法結(jié)束變量i作為下標(biāo),用來控制序號(第幾個(gè)學(xué)生,第幾個(gè)成績)。當(dāng)i超過50時(shí),表示已對50個(gè)學(xué)生的成績處理完畢,算法結(jié)束。例3判定2000~年中的每一年是否閏年,將結(jié)果輸出分析:閏年的條件是:(1)能被4整除,但不能被100整除的年份都是閏年,如1996,2004年是閏年;(2)能被100整除,又能被400整除的年份是閏年。如1600,2000年是閏年。不符合這兩個(gè)條件的年份不是閏年。設(shè)y為被檢測的年份,算法可表示如下S1:2000->S2:若y不能被4整除,則輸出y“不是閏年”。然后轉(zhuǎn)到S6S3:若y能被4整除,不能被100整除,則輸出y“是閏年”。然后轉(zhuǎn)到S6S4:若y能被100整除,又能被400整除,輸出y“是閏年”,否則輸出“不是閏年”。然后轉(zhuǎn)到S6。S5:輸出y“不是閏年”。S6:y+1->S7:當(dāng)2500時(shí),轉(zhuǎn)S2繼續(xù)執(zhí)行,如y,算法停止例4求1-2
+1-1
+……-
+110算法如下:S1:sign=1S2:sum=1S3:deno=S4:sign=(-1)×signS5:term=sign×(1/deno)S6:sum=sum+termS7:deno=deno+S8:若eo100返回S4,否則算法結(jié)束反復(fù)執(zhí)行S4到S8步驟,直到分母大于100為止。一共執(zhí)行了99次循環(huán),向sum累加入了99個(gè)分?jǐn)?shù)。sum最后的值就是多項(xiàng)式的值。例5對一個(gè)大于或等于3的正整數(shù),判斷它是不是一個(gè)素?cái)?shù)概念:所謂素?cái)?shù),是指除了1和該數(shù)本身之外,不能被其它任何整數(shù)整除的數(shù)。例如,13是素?cái)?shù)。因?yàn)樗荒鼙唬?,3,4,…,12整除。分析:判斷一個(gè)數(shù)n(3是否素?cái)?shù)的方法:將n作為被除數(shù),將2到(n)各個(gè)整數(shù)輪流作為除數(shù),如果都不能被整除,則n為素?cái)?shù)。算法如下S1:輸入n的S2:i=(i作為除數(shù)S3:n被i除,得余數(shù)S4:如果r=,表示n能被i整除,則打印n“不是素?cái)?shù)”,算法結(jié)束。否則執(zhí)行S5S5:iiS6:如果i≤n,返回S3。否則打?。睢笆撬?cái)?shù)”,然后結(jié)束實(shí)際上,n不必被2到(n-1)的整數(shù)除,只需被2到n/2間整數(shù)除,甚至只需被2到 之間的整數(shù)除即可。考點(diǎn)2算法的特—個(gè)算法應(yīng)該具有以下特點(diǎn):有窮性:包含有限的操作步驟。確定性:算法中的每一個(gè)步驟都應(yīng)當(dāng)是確定的有零個(gè)或多個(gè)輸入:輸入是指在執(zhí)行算法時(shí)需要從外界取得必要的信息。有一個(gè)或多個(gè)輸出:算法的目的是為了求解,“解”就是輸出。有效性:算法中的每一個(gè)步驟都應(yīng)當(dāng)能有效地執(zhí)行,并得到確定的結(jié)果??键c(diǎn)3算法的表示可以用不同的方法表示算法,常用的有:自然語言傳統(tǒng)流程結(jié)構(gòu)化流程圖偽代碼PAD—、用自然語言表示算自然語言就是人們?nèi)粘J褂玫恼Z言,可以是漢語或英語或其它語言。用自然語言表示通俗易懂,但文字冗長,容易出現(xiàn)“歧義性”。自然語言表示的含義往往不大嚴(yán)格,要根據(jù)上下文才能判斷其正確含義,描述包含分支和循環(huán)的算法時(shí)也不很方便。因此,除了那些很簡單的問題外,一般不用自然語言描述算法。二、用流程圖表示算化ANSI規(guī)定了一些常用的流程圖符號:例6將求5!的算法用流程圖表例7將例2的算法用流程圖表示。打?。担懊麑W(xué)生中成績在80分以上者的學(xué)號和成績。例6例8將例3判定閏年的算法用流程圖表例9將例4的算法用流程圖表例10將例5判斷素?cái)?shù)的算法用流程圖表(圖見用流程圖表示算總結(jié):流程圖是表示算法的較好的工具。一個(gè)流程圖包括以下幾部分(1)表示相應(yīng)操作的框(2)帶箭頭的流程線(3)框內(nèi)外必要的文字說明優(yōu)點(diǎn):用流程圖表示算法要比用文字描述算法邏輯清晰、易于理解三、三種基本結(jié)構(gòu)和改進(jìn)的流程傳統(tǒng)流程圖的弊傳統(tǒng)流程圖用流程線各框的執(zhí)行順序,對流程線的使用沒有嚴(yán)格限制。因此,使用者可以毫不受限制地使流程隨意地轉(zhuǎn)向,使流程圖變得毫無規(guī)律,閱讀者要花很大精力去追蹤流程,使人難以理解算法的邏輯。如圖:缺點(diǎn):難以閱讀、修改,使算法的可靠性和可性難以保證解決辦法:必須限制箭頭的,即不允許無規(guī)律地使流程隨意轉(zhuǎn)向,只能順序地進(jìn)行下去這種如同亂麻一樣的算法稱為BS型算法,意為一碗面條(ABowlofSpaghetti),亂無頭緒三種基本結(jié)Bohra和Jacopini提出了以下三種基本結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)用這三種基本結(jié)構(gòu)作為表示一個(gè)良好算法的基本單元循環(huán)結(jié)三種基本結(jié)構(gòu)的共同特點(diǎn)(1)只有一個(gè)(2)只有一個(gè)出口;(請注意:一個(gè)菱形判斷框有兩個(gè)出口,而一個(gè)選擇結(jié)構(gòu)只有一個(gè)出口。不要將菱形框的出口和選擇結(jié)構(gòu)的出口。)(3)結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會被執(zhí)行到(4)結(jié)構(gòu)內(nèi)不存在“死循環(huán)”(無終止的循環(huán))。不正確的流程表示:總結(jié)由三種基本結(jié)構(gòu)順序組成的算法結(jié)構(gòu),可以解決任何復(fù)雜的問題。由基本結(jié)構(gòu)所構(gòu)成的算法屬于“結(jié)構(gòu)化”的算法,它不存在無規(guī)律的轉(zhuǎn)向,只在本基本結(jié)構(gòu)內(nèi)才允許存在分支和向前或向后的跳轉(zhuǎn)。只要具有上述四個(gè)特點(diǎn)的都可以作為基本結(jié)構(gòu)??梢宰约憾x基本結(jié)構(gòu),并由這些基本結(jié)構(gòu)組成結(jié)構(gòu)化程序。下圖符合基本結(jié)構(gòu)的特點(diǎn):如下是一個(gè)多分支選擇結(jié)構(gòu)。虛線框內(nèi)的結(jié)構(gòu)是一個(gè)一個(gè)出口,并且有上述全部的四個(gè)特點(diǎn)。由此構(gòu)成的算法結(jié)構(gòu)也是結(jié)構(gòu)化的算法??梢哉J(rèn)為這是由三種基本結(jié)構(gòu)所派生出來的。(圖見四、用流程圖表示算1973年,學(xué)者I.Nassi和B.Shneiderman提出一種新的流程圖形式,完全去掉了帶箭頭的流程線。全部算法寫在一個(gè)矩形框內(nèi),在該框內(nèi)還可以包含其它的從屬于它的框。這種流程圖又稱-結(jié)構(gòu)化流程圖用三種N-S流程圖中的基本框,可以組成復(fù)雜的N-S流程圖。圖中的A框或B框,可以是一個(gè)簡單的操作,也可以是三個(gè)基本結(jié)構(gòu)之一。如下圖:A框可以是一個(gè)選擇結(jié)構(gòu),B框可以是一個(gè)循環(huán)結(jié)構(gòu)。例11將例1的求5!算法用圖表例12將例2的算法用圖表示。(打?。担懊麑W(xué)生中成績高于80分的學(xué)號和成績例13將例3判定閏年的算法用圖表例14將例4的算法用圖表例15將例5判別素?cái)?shù)的算法用流程圖表流程圖不符合基本結(jié)構(gòu)特點(diǎn)!不能分解為三種基本結(jié)構(gòu),無法直接用N-S流程圖的三種基本結(jié)構(gòu)的符號來表示。因此,應(yīng)當(dāng)先作必要的變換。(圖見用流程圖表示算總結(jié):一個(gè)結(jié)構(gòu)化的算法是由一些基本結(jié)構(gòu)順序組成的。在基本結(jié)構(gòu)之間不存在向前或向后的跳轉(zhuǎn),流程的轉(zhuǎn)移只存在于一個(gè)基本結(jié)構(gòu)范圍之內(nèi)(如循環(huán)中流程的跳轉(zhuǎn));一個(gè)非結(jié)構(gòu)化的算法可以用一個(gè)等價(jià)的結(jié)構(gòu)化算法代替,其功能不變。如果一個(gè)算法不能分解為若干個(gè)基本結(jié)構(gòu),則它必然不是一個(gè)結(jié)構(gòu)化的算法。優(yōu)點(diǎn):比文字描述直觀、形象、易于理解;比傳統(tǒng)流程圖緊湊易畫。尤其是它了流程線,整個(gè)算法結(jié)構(gòu)是由各個(gè)基本結(jié)構(gòu)按順序組成的,流程圖中的上下順序就是執(zhí)行時(shí)的順序。用N-圖表示的算法都是結(jié)構(gòu)化的算法,因?yàn)樗豢赡艹霈F(xiàn)流程無規(guī)律的跳轉(zhuǎn),而只能自上而下地順序執(zhí)行五、用偽代碼表示算概念:偽代碼是用介于自然語言和計(jì)算機(jī)語言之間的文字和符號來描述算法特點(diǎn):如同一篇文章一樣,自上而下地寫下來。每一行(或幾行)表示一個(gè)基本操作。不用圖形符號,書寫方便、格式緊湊,比較好懂,便于向計(jì)算機(jī)語言算法(即程序)過渡。用處:適用于設(shè)計(jì)過程中需要反復(fù)修改時(shí)的流程描述。例:“打?。慕^對值”的算法可以用偽代碼表示為:IFxispositiveTHENprint-可以用漢字偽代碼表示:若x為正打印否打 -也可以中英文混用例16求5!。用偽代碼表示算法開始置t的初值為置i的初值為當(dāng)i<=,執(zhí)行下面操作:使t=ti使i=i{循環(huán)體到此結(jié)束}輸出t的值結(jié)例 輸出50個(gè)學(xué)生中成績高于80分者的學(xué)號和成績。用偽代碼表示算法BEGIN{算法開始1->iwhilei50{inputandi+1->whilei{ifprintandi->i}END{算法結(jié)束}六、用計(jì)算機(jī)語言表示算概念:用計(jì)算機(jī)實(shí)現(xiàn)算法。計(jì)算機(jī)是無法識別流程圖和偽代碼的。只有用計(jì)算機(jī)語言編寫的程序才能被計(jì)算機(jī)執(zhí)行。因此在用流程圖或偽代碼描述出一個(gè)算法后,還要將它轉(zhuǎn)換成計(jì)算機(jī)語言程序特點(diǎn):用計(jì)算機(jī)語言表示算法必須嚴(yán)格遵循所用的語言的語則,這是和偽代碼不同的用處:要完成一件工作,包括設(shè)計(jì)算法算法兩個(gè)部分。設(shè)計(jì)算法的目的是為了實(shí)現(xiàn)算法。例20將例16表示的算法(求5?。┯谜Z言表示。#include<stdio.h>voidmain(){inti,i=while(i<=i=i+1;}printf(“%d\n”,t)}應(yīng)當(dāng)強(qiáng)調(diào)說明寫出了程序,仍然只是描述了算法,并未實(shí)現(xiàn)算法。只有運(yùn)行程序才是實(shí)現(xiàn)算法。應(yīng)該說,用計(jì)算機(jī)語言表示的算法是計(jì)算機(jī)能夠執(zhí)行的算法。考點(diǎn)4結(jié)構(gòu)化程序設(shè)計(jì)方—個(gè)結(jié)構(gòu)化程序:就是用高級語言表示的結(jié)構(gòu)化算法。用三種基本結(jié)構(gòu)組成的程序必然是結(jié)構(gòu)化的程序,這種程序便于編寫、便于閱讀、便于修改和。結(jié)構(gòu)化程序設(shè)計(jì)強(qiáng)調(diào)程序設(shè)計(jì)風(fēng)格和程序結(jié)構(gòu)的規(guī)范化,提倡清晰的結(jié)構(gòu)結(jié)構(gòu)化程序設(shè)計(jì)方法的基本思路是:把一個(gè)復(fù)雜問題的求解過程分階段進(jìn)行,每個(gè)階段處理的問題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)。采取以下方法來保證得到結(jié)構(gòu)化的程序自頂向下;逐步細(xì)化模塊化設(shè)計(jì);結(jié)構(gòu)化編碼兩種不同的方法自頂向下,逐步細(xì)化;自下而上,逐步積累(圖見用這種方法逐步分解,直到作者認(rèn)為可以直接將各小段表達(dá)為文字語句為止。這種方法就叫做“自頂向下,逐步細(xì)化”。自頂向下,逐步細(xì)化方法的優(yōu)點(diǎn)考慮周全,結(jié)構(gòu)清晰,層次分明,作者容易寫,讀者容易看。如果發(fā)現(xiàn)某一部分中有一段內(nèi)容不妥,需要修改,只需找出該部分修改有關(guān)段落即可,與其它部分無關(guān)。模塊設(shè)計(jì)的方法(1)模塊化設(shè)計(jì)的思想實(shí)際上是一種“分而治之”的思想,把一個(gè)大任務(wù)分為若干個(gè)子任務(wù),每一個(gè)子任務(wù)就相對簡單。(2)在拿到一個(gè)程序模塊以后,根據(jù)程序模塊的功能將它劃分為若干個(gè)子模塊,如果這些子模塊的規(guī)模還嫌大,還再可以劃分為更小的模塊。這個(gè)過程采用自頂向下方法來實(shí)現(xiàn)。(3)子模塊一般不超過50行(4)劃分子模塊時(shí)應(yīng)注意模塊的獨(dú)立性,即:使一個(gè)模塊完成一項(xiàng)功能,耦合性愈少愈好本章小主要知識點(diǎn)程序、算法的概念:運(yùn)算掌握簡單的算法舉例算法的特性:有窮性、確定性、有效性等算法的表示:用自然語言表示、流程圖、流程圖、偽代碼、三種基本結(jié)構(gòu)的流程圖及N-S流程圖等結(jié)構(gòu)化程序設(shè)計(jì)方法:自頂向下、模塊化設(shè)計(jì)第三 數(shù)據(jù)類型、運(yùn)算符與表達(dá)本章考考點(diǎn)1的數(shù)據(jù)類語言提供的數(shù)據(jù)類型:指針類型考點(diǎn)2常量與變—、常量和符號常在程序運(yùn)行過程中,其值不能被改變的量稱為常量。常量區(qū)分為不同的類型:例1符號常量的使RICE30#include<stdio.h>voidmain(){第七 數(shù)本章考考點(diǎn)1一維數(shù)組的定義和數(shù)組:是一組具有相同數(shù)據(jù)類型的數(shù)據(jù)的有序集合—、一維數(shù)組的定定義格式為類型說明符 數(shù)組名[常量表達(dá)式];例如:inta[10];表示定義了一個(gè)整形數(shù)組,數(shù)組名為a,此數(shù)組有10個(gè)元素2.說明(1)數(shù)組名定名規(guī)則和變量名相同,遵循標(biāo)識符定名規(guī)則(2)在定義數(shù)組時(shí),要指定數(shù)組中元素的個(gè)數(shù),方括弧中的常量表達(dá)式用來表示元素的個(gè)數(shù),即數(shù)組長度。例:a[10],表示a數(shù)組有10個(gè)元素,注意下標(biāo)是從0開始的,這10個(gè)元素是a[0],a[1],a[2],[3],a[4],a[5],a[6],a[7],a[8],a[9]。注意:按上面的定義,不存在數(shù)組元素a[10](3)常量表達(dá)式中可以包括常量和符號常量,但不能包含變量。即,C語言不允許對數(shù)組的大小作動態(tài)定義,即數(shù)組的大小不依賴于程序運(yùn)行過程中變量的值。例如,下面這樣定義數(shù)組是不行的:intscanf(“%d″,&n); 在程序中臨時(shí)輸入數(shù)組的大int數(shù)組說明中其他常見的錯(cuò)①floata[0]; 數(shù)組大小為0沒有意 ②intb(2)(3) 不能使用圓括 ③intk,a[k]; 不能用變量說明數(shù)組大3.一維數(shù)組在內(nèi)存中的存維數(shù)組:floatak100]每個(gè)數(shù)據(jù)元素占用的字節(jié)數(shù),就是基類型的字節(jié)數(shù)個(gè)元素占4個(gè)字節(jié)二、一維數(shù)組元素的1.?dāng)?shù)組元素的方式:數(shù)組名[下標(biāo)]下標(biāo)可以是整型常量或整型表達(dá)式。例如:a[0]=a[5]a[7]a[2注意:定義數(shù)組時(shí)用到的“數(shù)組名[常量表達(dá)式]”和數(shù)組元素時(shí)用到的“數(shù)組名[下標(biāo)]”有區(qū)別的例如∶inta[10] 定義數(shù)組長度為 t=a[6] a數(shù)組中序號為6的元素。此時(shí)6不代表數(shù)組長2.一維數(shù)組元素的程序?qū)崳#椋睿悖欤酰洌澹迹螅簦洌椋铮瑁荆觯铮椋洌恚幔椋睿ǎ椋睿簦椋幔郏保埃荩妫铮颍ǎ椋剑?;i<=9;i++)[i]=for(i=9;i>=0;i--printf("%d″,a[i])printf("\n″)}運(yùn)行結(jié)果如下987654321三、一維數(shù)組的初始對數(shù)組元素初始化的實(shí)現(xiàn)方法(1)在定義數(shù)組時(shí)對數(shù)組元素賦以初值。例如inta[10]={0,1,2,3,4,5,6,7,8,9}將數(shù)組元素的初值依次放在一對花括弧內(nèi)。經(jīng)過上面的定義和初始化之后a[0]=0,a[1]=1,a[2]=2,a[3]=3,a[4]=4,[5]=5,a[6]=6,a[7]=7,a[8]=8,a[9]=(2)可以只給一部分元素賦值。例如inta[10]={0,1,2,3,4}定義a數(shù)組有10個(gè)元素,但花括弧內(nèi)只提供5個(gè)初值,這表示只給前面5個(gè)元素賦初值,后5個(gè)元素值為0。(3)如果想使一個(gè)數(shù)組中全部元素值為0,可以寫inta[10]={0,0,0,0,0,0,0,0,0,0};inta[10]={0}不能寫成:inta[10]={010}這是與FORTRAN語言不同的,不能給數(shù)組整體賦初值(4)在對全部數(shù)組元素賦初值時(shí),由于數(shù)據(jù)的個(gè)數(shù)已經(jīng)確定,因此可以不指定數(shù)組長度。例如inta[5]={1,2,3,4,5}或inta[]={1,2,3,4,5}在第二種寫法中,花括弧中有5個(gè)數(shù),系統(tǒng)就會據(jù)此自動定義a數(shù)組的長度為5。但若數(shù)組長度與提供初值的個(gè)數(shù)不相同,則數(shù)組長度不能省略。例如,想定義數(shù)組長度為10,就不能省略數(shù)組長度的定義,而必須寫成inta[10]={1,2,3,4,5}只初始化前5個(gè)元素,后5個(gè)元素為0四、一維數(shù)組程序舉舉例1:用數(shù)組來處理,求解Fibonacci數(shù)列。Fibonacci數(shù)列公式:a1=a2=1,an=an-1+an-2程序?qū)嵗海#椋睿悖欤酰洌澹迹螅簦洌椋铮瑁荆觯铮椋洌恚幔椋睿ǎ椋睿?intf[20]={1,1}for(i=2;i<20;i++f[i]=f[i-2]+f[i-1]for(i=0;i<20;i++{if(i%5==0)printf(″\n″)printf(″12d″,f[i]}/For循環(huán)結(jié) 程序結(jié) 舉例2:用起泡法對10個(gè)數(shù)排序(由小到大)起泡法的思路是:將相鄰兩個(gè)數(shù)比較,將小的調(diào)到前注意:經(jīng)過第一趟(共5次比較與交換)后,最大的數(shù)9已“沉底”。然后進(jìn)行對余下的前面5個(gè)數(shù)第二趟比較。注意:經(jīng)過第二趟(共4次比較與交換)后,得到次大的數(shù)8如果有n個(gè)數(shù),則要進(jìn)行n趟比較。在第1趟比較中要進(jìn)行n次兩兩比較,在第j趟比較中要進(jìn)行nj次兩兩比較。程序流程圖如下#include<stdio.h>voidmain(){inta[10]inti,j,printf(″input10numbers:\n″)for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\n");for(j=0;j<9;j++for(i=0;i<9-j;i++if(a[i]>a[i+1]{t=a[i];a[i]=a[i+1]a[i+1]=}printf(″thesortednumbers:\n″)for(i=0;i<10;i++printf(″d″,a[i])printf(″\n″)}程序運(yùn)行結(jié)果如下input10brs10481265-76100-45123thesortedbrs–76-4501481265100考點(diǎn)2二維數(shù)組的定義和—、二維數(shù)組的定二維數(shù)組定義的一般形式類型說明符數(shù)組名[常量表達(dá)式][常量表達(dá)式]例:定義a為3(3行4列)的數(shù)組,b為5(5行10列)的數(shù)組。如下floata[3][4],b[5][10];不能寫成floata[3,4],b[5,10]注意:可以把二維數(shù)組看作是一種特殊的一維數(shù)組:它的元素又是一個(gè)一維數(shù)組例如:可以把a看作是一個(gè)一維數(shù)組,它有3個(gè)元素:a[0]、a[1]、a[2],每個(gè)元素又是一個(gè)包含個(gè)元素的一維數(shù)組二維數(shù)組在內(nèi)存中的存二維數(shù)組中的元素在內(nèi)存中的排列順序是:按行存放,即先順序存放第一行的元素,再存放第行的元素下圖表示對a[3][4]數(shù)組存放的順例:整型數(shù)組b[3][3]={{1,2,3},{4,5,6},{7,8,9}}問題:有了二維數(shù)組的基礎(chǔ),那么數(shù)組如何定義呢?定義三維數(shù)組: floata[2][3][4];數(shù)組元素在內(nèi)存中的排列順序:第一維的下標(biāo)變化最慢,最右邊的下標(biāo)變化最快。二、二維數(shù)組的二維數(shù)組元素的表示形式為:數(shù)組名[下標(biāo)][下標(biāo)]例如:a[2][下標(biāo)可以是整型表達(dá)式,如a[2-1][2-注意:不要寫成a[2,3],a[2-1,22-1]形數(shù)組元素可以出現(xiàn)在表達(dá)式中,也可以被賦值,例如:b[1][2]=a[2][3]在使用數(shù)組元素時(shí),應(yīng)該注意下標(biāo)值應(yīng)在已定義的數(shù)組大小的范圍內(nèi)。常出現(xiàn)的錯(cuò)誤有:inta[3][4] 定義a為3×4的數(shù) ┆a[3][4]=三、二維數(shù)組的初始數(shù)據(jù)類型數(shù)組名[常量表達(dá)式1][常量表達(dá)式2]={初始化數(shù)據(jù)};可以用下面4種方法對二維數(shù)組初始化(1)分行給二維數(shù)組賦初值。如inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}(2)可以將所有數(shù)據(jù)寫在一個(gè)花括弧內(nèi),按數(shù)組排列的順序?qū)Ω髟刭x初值。如inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}(3)可以對部分元素賦初值。如inta[3][4]={{1},{5},{9}};10005000900也可以對各行中的某一元素賦初值,inta[3][4]={{1},{0,6},{0,0,0,11}}10000600000也可以只對某幾行元素賦初值。inta[3][4]={{1},{5,6}}100056000000(4)如果對全部元素都賦初值,則定義數(shù)組時(shí)對第一維的長度可以不指定,但第二維的長度不能省。如:inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};等價(jià)于:inta[][4]={1,2,3,4,5,6,7,8,9,10,11,12}在定義時(shí)也可以只對部分元素賦初值而省略第一維的長度,但應(yīng)分行賦初值。如inta[][4]={{0,0,3},{},{0,10}} 3 00 0四、二維數(shù)組程序舉例4將一個(gè)二維數(shù)組行和列元素互換,存到另一個(gè)二維數(shù)組中#include<stdio.h>voidmain(){inta[2][3]={{1,2,3},{4,5,6}}intb[3][2],i,j;printf(″arraya:\n″);for(i=0;i<=1;i++{for(j=0;j<=2;j++ printf(″5d″,a[i][j])b[j][i]=a[i][j]}printf(″\n″)}printf(″arrayb:\n″)for(i=0;i<=2;i++{for(j=0;j<=1;j++)printf("%5d″,b[i][j]);printf(″\n″)}} 程序結(jié) 運(yùn)行結(jié)果如下array arrayb: 例5有一個(gè)3的矩陣,要求編程序求出其中值最大的那個(gè)元素的值,以及其所在的行號和列號。用流程圖表示算法,如下程序如下#include<stdio.h>voidmain(){inti,j,row=0,colum=0,xinta[3][4]={{1,2,3,4},{9,8,7,6}{-10,10,-5,2}}max=a[0][0]for(i=0;i<=2;i++for(j=0;j<=3;j++if(a[i][j]>x{max=a[i][j]row=i;colum=}printf(″max=%d,row=%d,colum=%d\n″,ax,row,colum);} 程序結(jié) 考點(diǎn)3字符數(shù)—、字符數(shù)組的定定義方法與前面介紹的類似。例如charc[10]c[0]=′I′;c[1]=′′;c[2]=c[3]=mc[4]=′′;c[5]=′h′;c[6]=′a′;c[7]=′p′;c[8]=′p′;c[9]=′y′;用來存放字符數(shù)據(jù)的數(shù)組是字符數(shù)組。字符數(shù)組中的一個(gè)元素存放一個(gè)字符二、字符數(shù)組的初始對字符數(shù)組初始化,最容易理解的方式是逐個(gè)字符賦給數(shù)組中各元素。如charc[10]={’I′,’′,’a′,’m′,’’,′h′,′a′,′p′,′p′,′y′}如果在定義字符數(shù)組時(shí)不進(jìn)行初始化,則數(shù)組中各元素的值是不可預(yù)料的如果花括弧中提供的初值個(gè)數(shù)(即字符個(gè)數(shù))大于數(shù)組長度,則按語法錯(cuò)誤處理如果初值個(gè)數(shù)小于數(shù)組長度,則只將這些字符賦給數(shù)組中前面那些元素,其余的元素自動定為空字符(即\0′)。例如charc[10]={′c′,′′,′p′,′r′,′o′,′g′,′r′,′a′,m′(圖見如果提供的初值個(gè)數(shù)與預(yù)定的數(shù)組長度相同,在定義時(shí)可以省略數(shù)組長度,系統(tǒng)會自動根據(jù)初值個(gè)數(shù)確定數(shù)組長度。例如charc[]={′I′,′′,′a′,m′′′,′h′,′a′,′p′,′p′,′y′};數(shù)組c的長度自動定為10也可以定義和初始化一個(gè)二維字符數(shù)組。例如:二、函數(shù)調(diào)用的方按函數(shù)在程序中出現(xiàn)的位置來分,可以有以下三種函數(shù)調(diào)用方式函數(shù)語把函數(shù)調(diào)用作為一個(gè)語句。如例1中的printstar(),這時(shí)不要求函數(shù)帶回值,只要求函數(shù)完成一定的操作。函數(shù)表達(dá)函數(shù)出現(xiàn)在一個(gè)表達(dá)式中,這種表達(dá)式稱為函數(shù)表達(dá)式。這時(shí)要求函數(shù)帶回一個(gè)確定的值以參加表達(dá)式的運(yùn)算。例如:c=max(a,b);函數(shù)參函數(shù)調(diào)用作為一個(gè)函數(shù)的實(shí)參。例如m=max(a,max(b,c))其中max(b,c)是一次函數(shù)調(diào)用,它的值作為max另一次調(diào)用的實(shí)參。m
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小區(qū)窗戶銷售合同范例
- 手工柜子購買合同范例
- 商拍場地合同范例
- 上海人防工程施工合同模板
- 與國外合作合同范例
- 2024年泉州申請客運(yùn)從業(yè)資格證2024年試題
- 制作 度合同模板
- 2024年福州客運(yùn)從業(yè)資格證應(yīng)用能力考試
- 2024年通遼小車客運(yùn)從業(yè)資格證考試
- 2024年廣東客運(yùn)從業(yè)資格證實(shí)操考試題庫及答案解析
- 2023~2024學(xué)年第一學(xué)期高一期中考試數(shù)學(xué)試題含答案
- 2023年全國中學(xué)生英語能力競賽初三年級組試題及答案
- 一種基于STM32的智能門鎖系統(tǒng)的設(shè)計(jì)-畢業(yè)論文
- 部編版道德與法治九年級上冊 8.2 共圓中國夢 教學(xué)設(shè)計(jì)
- 裝飾施工技術(shù)標(biāo)準(zhǔn)及要求
- 2018秋七年級虎外考試卷英語試卷
- 河洛擇日法[技巧]
- P91材質(zhì)焊接及熱處理工程作業(yè)指導(dǎo)書(完整版)
- 醫(yī)療器械質(zhì)量保證及售后服務(wù)承諾書模板
- 英語四級單詞表4500.xls
- (最新整理)紫外可見分光光度計(jì)期間核查規(guī)程
評論
0/150
提交評論