C語言復(fù)習(xí)小結(jié)_第1頁
C語言復(fù)習(xí)小結(jié)_第2頁
C語言復(fù)習(xí)小結(jié)_第3頁
C語言復(fù)習(xí)小結(jié)_第4頁
已閱讀5頁,還剩78頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C語言復(fù)習(xí)小結(jié)第三章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式常量包括直接常量(或稱字面常量)和符號常量。直接常量有整型常量,實(shí)型常量,字符常量與字符串常量。整型常量有以下三種數(shù)制形式表示:十進(jìn)制:如123; -60; 0ハ進(jìn)制:以。開始,如0123表示(123)8十六進(jìn)制:以O(shè)x開始,如0x123表示(123)露實(shí)型常量有以下兩種形式表示:小數(shù)形式:由數(shù)字、數(shù)符和小數(shù)點(diǎn)組成。注意必須有小數(shù)點(diǎn)。如123.0 .123 0.0 12.5指數(shù)形式:數(shù)字部分e指數(shù)部分。字母E/e前必須有數(shù)字,字母E/e后必須為整數(shù)(1-3位)。如123e2 123E2字符常量是用單撇號括起來的一個(gè)字符。例如:字符常量的值實(shí)際上是ー個(gè)數(shù)字值。存儲的實(shí)際值為ASCII值。所以字符常量可以象整數(shù)ー樣參與運(yùn)算。(注意:轉(zhuǎn)義字符)字符串常量是用ー對雙引號括起來的字符序列。如:“CHINA”,“a”,“X+Y”。字符串常量在內(nèi)存中的存放:每一個(gè)字符均以其ASCI!碼存放,且最后添加一個(gè)“、0”作為字符串的結(jié)束標(biāo)志。(注:在表達(dá)ー個(gè)字符串時(shí)要時(shí)刻記著尾部有個(gè)へ〇,字符結(jié)束整個(gè)字符串。)變量是指在程序運(yùn)行過程中其值可以改變的量。系統(tǒng)為程序中的每一個(gè)變量開辟ー個(gè)存儲單元。變量有兩個(gè)要素:1)變量名:每個(gè)變量都必須有一個(gè)名字,即變量名。變量名由字母、數(shù)字和下劃線組成,且第一個(gè)字符必須是字母或下劃線。如果是字母通常使用小寫字母,不使用大寫字母。如:name,no,x,_k,i,j,stu_name等。變量名中不能含有運(yùn)算符、括號等C中關(guān)鍵字。命名遵循顧名思義原則,且不宜過長。C區(qū)分大小寫字母。2)變量值:每個(gè)變量都有特定的值,且可以改變。在程序中,通過變量名來引用變量的值。變量的定義所有的變量必須在賦值使用之前定義。定義變量的一般形式是:typevariable-list; (變量定義語句)注:type為C語言中有效類型;variable-list為變量列表,多個(gè)變量之間用,隔開。

如:inti,j,k;floata;整型變量數(shù)據(jù)類型所占位數(shù)取值范圍int16-32768-32767short16-32768-32767long32-21イ乙一21イムunsignedint160-65535unsignedshort160-65535unsignedlong32〇?42億實(shí)型變量分類所占位數(shù)取值范圍float單精度32-3.4*10-38-3.いすdouble雙精度 64-1.7*10-308-1.7*1O308longdouble長雙精度128-1.2*10-W2-1.2*10,劃字符變量1、變量的定義charcl,c2; /?指定cl,c2為字符型變量?/2、字符型數(shù)據(jù)的存儲ー個(gè)字符變量在內(nèi)存中占ー個(gè)字節(jié),并以ASCI!碼存儲,存儲形式與整型ー樣,可以和整數(shù)進(jìn)行運(yùn)算。3、字符數(shù)據(jù)與整型數(shù)據(jù)可互相賦值C語言中的關(guān)鍵字:(32個(gè))類型說明符:chardoublefloatintlongshortsignedunsignedstruct(結(jié)構(gòu)體)union(共同體)結(jié)構(gòu)化語句中用:ifelseswitchcasebreakdefaultdowhileforcontinuegoto存儲類別用:autostaticexternregister函數(shù)定義用:voidreturn其他:constsizeoftypedefenumvolatileC運(yùn)算符C語言中有以下幾類運(yùn)算符:1)算術(shù)運(yùn)算:+,-,/,*,%(模運(yùn)算)2)關(guān)系運(yùn)算:く,>,==,>=,<=,!=3)邏輯運(yùn)算:!,&&,||4)位運(yùn)算:くく,?,一,I,A,&基本算術(shù)運(yùn)算符+(加法運(yùn)算或正號運(yùn)算符)-(減法運(yùn)算或負(fù)號運(yùn)算符)*(乘法運(yùn)算符)/(除法運(yùn)算符)%(求余運(yùn)算符,或稱模運(yùn)算符)運(yùn)算符的優(yōu)先級和結(jié)合性一(負(fù)號)-*/%一+~注:(1)兩個(gè)整數(shù)相除結(jié)果為整數(shù),多數(shù)機(jī)器采用“向零取整”方法。如:5/3=1;-5/3=-1(2)參與+,へ/運(yùn)算的兩個(gè)數(shù)中有一個(gè)為實(shí)數(shù),則結(jié)果為double型。如:6/2.0的結(jié)果為3.0(3)模%運(yùn)算符(或稱求余運(yùn)算符)兩側(cè)的運(yùn)算量均為整型量。如:55%12(4)三角函數(shù)的自變量使用弧度。如sin50。應(yīng)寫成sin(50*3.1415926/180)例:3x2+4xysin560-1x-yIe2'3的表達(dá)式為:3*x*x+4*x*y*sin(56*3.14/180)-fabs(x-y)*exp(2.3)在求表達(dá)式的值時(shí),要按照優(yōu)先級的高低依次計(jì)算如果運(yùn)算符兩側(cè)優(yōu)先級相同,則按規(guī)定的結(jié)合方向(從左到右)進(jìn)行。自增、自減運(yùn)算符++i,—i 在使用1前,使i的值加(減)1i++,i—在使用1后,使i的值加(減)1注意:)++,ー運(yùn)算符只適用于對整型變量操作,而不能作用于常量或表達(dá)式,如5++或(a+b)一是錯(cuò)誤的。)++,一的結(jié)合方向是自右到左。如j=3;printf(w%dw,-j++);則輸出ー3,后使j值增為40思考:1、(i++)+(i++)+(i++)結(jié)果?2、(++i)+(++i)+(++i)結(jié)果?3、1+++>)是6++)+>)還是1+(++力?4、printf( ,i,i++)結(jié)果賦值運(yùn)算符簡單的賦值就是把ー個(gè)表達(dá)式的值賦給ー個(gè)變量。復(fù)合的賦值運(yùn)算符在賦值符“ノ之前加上其它運(yùn)算符,可以構(gòu)成復(fù)合的運(yùn)算符 く變量〉運(yùn)算符=く表達(dá)式)等價(jià)于く變量〉=く變量〉運(yùn)算符く表達(dá)式〉如:m+=n*3等價(jià)于m=m+(n*3)賦值表達(dá)式對賦值表達(dá)式求解的過程是:將賦值運(yùn)算符右側(cè)的表達(dá)式的值賦給左側(cè)的變量。賦值表達(dá)式的值就是被賦值的變量的值。設(shè)a的值為6,計(jì)算a+=a-=a*a先進(jìn)行a*a的計(jì)算,結(jié)果為36再進(jìn)行a-=36的計(jì)算,相當(dāng)于a=a-36=-30最后進(jìn)行a+=-30的計(jì)算,相當(dāng)于a=a-30=-60問:j=k+=32*k合法嗎?什么結(jié)果printf(“%d”,i=20);又是如何呢?★賦值時(shí)進(jìn)行的類型轉(zhuǎn)換將實(shí)型數(shù)據(jù)(包括單、雙精度)賦給整型變量時(shí),舍棄實(shí)數(shù)的小數(shù)部分。將整型數(shù)據(jù)賦給單、雙精度變量時(shí),數(shù)值不變,但以浮點(diǎn)數(shù)形式存儲到變量中。將一個(gè)double型數(shù)據(jù)賦給float變量時(shí),截取其前面7位有效數(shù)字,存放到float變量的存儲單元(32位)中。將一個(gè)float型數(shù)據(jù)賦給double變量時(shí),數(shù)值不變,有效位數(shù)擴(kuò)展到16位,在內(nèi)存中以64位存儲。字符型數(shù)據(jù)賦給整型變量時(shí):若系統(tǒng)將字符處理為無符號的量,則將字符的8位放到整型變量的低8位,高8位補(bǔ)〇。若系統(tǒng)將字符處理為帶符號的量,如果字符最高位為0,則整型變量高8位補(bǔ)0;如果字符最高位為1,則整型變量高8位補(bǔ)1。將一個(gè)int、short、long型數(shù)據(jù)賦給ー個(gè)char型變量時(shí),只將其低8位原封不動(dòng)地送到char型變量(即截?cái)啵Х柕恼蛿?shù)據(jù)賦給long型變量時(shí),要進(jìn)行符號擴(kuò)展,將整型數(shù)的16位送到long型變量的低16位中,如果int型數(shù)據(jù)為正值,則long型變量的高16位補(bǔ)〇;如果int型數(shù)據(jù)為負(fù)值,則long型變量的高16位補(bǔ)1。以保持?jǐn)?shù)值不變。若將一個(gè)long型數(shù)據(jù)賦給ー個(gè)int型變量,只將!ong型數(shù)據(jù)中的低16位原封不動(dòng)地送到整型變量中(即截?cái)啵?。將unsignedint型數(shù)據(jù)賦給!ongint型變量時(shí),不存在符號擴(kuò)展問題,只需將高位補(bǔ)。。將unsigned類型數(shù)據(jù)賦給ー個(gè)占字節(jié)數(shù)相同的整型變量時(shí),是將unsigned型變量的內(nèi)容照原樣送到非unsigned型變量中,但如果數(shù)據(jù)范圍超過相應(yīng)的整型范圍,則會出現(xiàn)數(shù)據(jù)錯(cuò)誤。將非unsignedint型數(shù)據(jù)賦給長度相同的unsigned型變量時(shí),也是原樣照賦(連原有的符號位也作為數(shù)值ー起傳送)。逗號是ー種運(yùn)算符形式如下: 表達(dá)式1,表達(dá)式2由逗號隔開的ー對表達(dá)式從左向右進(jìn)行計(jì)算,其求解過程為:先求解表達(dá)式1,再求表達(dá)式2,整個(gè)逗號表達(dá)式的值是表達(dá)式2的值。逗號運(yùn)算符是所有運(yùn)算符中級別最低的。注:ー個(gè)逗號表達(dá)式又可以與另ー個(gè)表達(dá)式組成一個(gè)新的逗號表達(dá)式,例如:(a=4*6,a+5),a+6 整個(gè)表達(dá)式的值為30。在進(jìn)行運(yùn)算時(shí),不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算。(轉(zhuǎn)換規(guī)則見書)C語言提供ー種“強(qiáng)制類型轉(zhuǎn)換”運(yùn)算符,將一個(gè)類型的變量強(qiáng)制轉(zhuǎn)換為另ー種類型。一般形式為:(類型標(biāo)識符)(表達(dá)式)若x原為實(shí)型變量且值為2.6,在執(zhí)行i=(int)x后得到ー個(gè)整數(shù)2,并把它賦給整型變量i,但x仍為實(shí)型,值為2.6。C運(yùn)算符的優(yōu)先順序:(從上到下依次為由高至リ低,同一級的按各自的結(jié)合方向)(從左到右)1.()、[]、f(從左到右)!、++、一ー、ー、?、!、++、一ー、ー、?、也、sizeof、(類型)?、ハ%+、ーく、>、く=、>===、!=&&II?:(條件運(yùn)算符)=、+=、一=、*=、/=、(單目、從右到左)

(從左到右)(從左到右)(從左到右)(從左到右)(從左到右)(從左到右)(從右到左)%= (從右到左)11.,(逗號運(yùn)算符) (從左到右)復(fù)習(xí)作業(yè)題:.請編寫程序,輸入兩個(gè)整數(shù)n和m,計(jì)算以下表達(dá)式的值:sum=n+mdiff=n-mprod=n*mquot=n/m并上機(jī)時(shí)調(diào)試完成。main(){intm,n,sum,diff,prod;floatquot;scanf("%d,%d",&n,&m);

sum=n+m;diff=n-m;prod=n*m;if(m==O)printf(udataerror**);elsequot=1.0*n/m;printf(**%5d,%5d,%5d,%5f\n",sum,diff,prod,quot);).請編寫程序,輸入x,計(jì)算以下表達(dá)式的結(jié)果。funl(x)=———+―--main(){floatx,y;printf(**x=*');scanf(**%f,,&x);y=2*x/(x+1.21)+2/(x-1.54);printf(**funl(x)=%f\n,*,y);).請編寫程序,輸入x,計(jì)算以下表達(dá)式的結(jié)果。y=sin(x)ey=sin(x)e2+1main(){floatx;doubley;printf(Mx=u);scanf(,,%r,,&x);y=x*x/sin(x)+2*x/(exp(2)+l);printf(,'y=%10f\n,,,y);).請編寫程序,輸入兩個(gè)自然數(shù),求它們的商和余數(shù)。main(){intx,y,a,b;scanf(H%d,%dn,&x,&y);a=x/y;b=x%y;printf(n%5d,%5d\nn,a,b);).請編寫程序,輸入一個(gè)自然數(shù),判斷該數(shù)是否能夠被3和7同時(shí)整除。main(){intx;scanf(n%dH,&x);if((x%3==0)&&(x%7==0))printf(H%5dcanbedevideby3and7\nn,x);elseprintf(n%5dcannotbedevideby3and7\nn,x);}第四章順序程序設(shè)計(jì)字符輸出函數(shù)格式:putchar(c)功能:將c值所對應(yīng)的字符輸出到標(biāo)準(zhǔn)輸出設(shè)備上(一般為顯示器)。C可以是整型或字符型。一次只能輸出ー個(gè)的先也可以輸出控制符,如putchar(ハガ)輸出ー個(gè)換行符,即光標(biāo)移到下一行。putchar()函數(shù)也可以輸出轉(zhuǎn)義字符,如:putchar('\10『)即輸出字符ク.字符輸入函數(shù)格式:getchar(ノ?getch0或getche0一功能:從標(biāo)準(zhǔn)設(shè)備(一般是鍵盤)輸入ー個(gè)字符。字符輸入函數(shù)浸域"參數(shù),函數(shù)值就是從設(shè)備輸入的字符。三個(gè)函數(shù)有一些差別:getchar0函數(shù)在由鍵盤鍵入一個(gè)字符后,必須按回車鍵,而getch()和getche0函數(shù)不需要。getche()函數(shù)和getchar()會顯示出所輸入的字符,而getch0函數(shù)不響應(yīng)輸入的字符。格式輸出函數(shù)格式:printf(格式控制,輸出表列)功能:printf函數(shù)可以將任意類型的多個(gè)數(shù)據(jù)輸出到標(biāo)準(zhǔn)輸出設(shè)備上(一般為顯示器)。1.d格式字符 有以下幾種格式字符:(1)%d按整型數(shù)據(jù)的實(shí)際長度輸出。(2)%mdm為要指定輸出字段寬度,若m小于實(shí)際長度,則按實(shí)際長度輸出。%ld輸出長整型數(shù)據(jù)(字母)。格式符 以8進(jìn)制形式輸出整數(shù)x格式符 以16進(jìn)制形式輸出整數(shù)u格式符用來輸出unsigned型數(shù)據(jù),即無符號數(shù),以10進(jìn)制輸出。int型可用%u輸出,而unsigned型,也可用%d輸出。c格式符用來輸出ー個(gè)字符s格式符用來輸出ー個(gè)字符串,有幾種用法:(1)%s如printf(“%s”,“CHINA”);輸出結(jié)果CHINA(注意:不包括雙引號)(2)%msmく串長,突破;否則按右對齊,左補(bǔ)空格。(3)%-ms山く串長,突破;否則按左對齊,右補(bǔ)空格。(4)%m.ns輸出占m個(gè)字符,取自左起n個(gè)字符,且向右對齊,左補(bǔ)空格。(5)%-m.ns m,n含義同上,不過是左對齊,右補(bǔ)空格。f格式符用來輸出實(shí)數(shù),以小數(shù)形式輸出,有以下幾種(1)%f 系統(tǒng)指定輸出整數(shù)部分,小數(shù)部分輸出6位;單精度實(shí)數(shù)有效位數(shù)一般為7位。雙精度數(shù)也可用%f格式輸出,有效位數(shù)一般為16位。(2)%m.nf指定輸出占m個(gè)字符,小數(shù)位占n位,右對齊。(3)%-m.nf指定輸出占m個(gè)字符,小數(shù)位占n位,左對齊。e格式符%e不指定輸出數(shù)據(jù)所占的寬度和數(shù)字部分小數(shù)的位數(shù),由系統(tǒng)自動(dòng)指定給出5位小數(shù),指數(shù)部分占4位(如e+02),其中,e占1位,指數(shù)符號占1位,指數(shù)占2位。數(shù)值按規(guī)范化指數(shù)形式輸出(即小數(shù)點(diǎn)前必須有且只有1位非零數(shù)字)。(2)ne和%-m.neg格式符根據(jù)數(shù)值輸出自動(dòng)選f格式或e格式(選輸出時(shí)所占字符長度少的ー種)。注意:在使用printf函數(shù)時(shí),有以下幾點(diǎn)要說明:(1)除X,E,Gタト其他格式字符必須用小寫,如不能把%d寫成%DO(2)可在格式控制串中用‘轉(zhuǎn)義字符'\n,\b,\377等。(3)連續(xù)用兩個(gè)%,可輸出%字符,如: printf( ,1.0/3);輸出結(jié)果為: 0.333333%格式輸入函數(shù)-格式:scanf(格式控制,地址表列)-功能:scanf函數(shù)可以從標(biāo)準(zhǔn)輸入設(shè)備輸入任意類型的多個(gè)數(shù)據(jù)(一般為顯示器)。ー注意:輸入數(shù)不能規(guī)定精度。當(dāng)輸入一串?dāng)?shù)據(jù)時(shí),系統(tǒng)如何區(qū)分每個(gè)數(shù)據(jù):(1)根據(jù)格式字符的含義分隔字符(2)系統(tǒng)按格式串指定的長度截取所需的數(shù)據(jù)⑶用隱含的分隔符:在輸入數(shù)據(jù)中用空格或換行符分隔數(shù)據(jù)。(4)用%后的“ノ附加說明符來表示跳過它相應(yīng)的數(shù)據(jù)(5)使用顯示分隔符:在格式說明符中若還可以有其它字符,在輸入字符時(shí)應(yīng)輸入與這些字符相同的字符。(6)用“肥”格式輸入字符時(shí),空格字符和轉(zhuǎn)義字符都作為有效字符輸入。注意:(1)輸入時(shí)不能規(guī)定精度如scanf(w%6.If",&a)是不合法的。(2)格式控制之后是地址表列而不是變量表列scanf(券d,%d”,&a,&b);是正確的,而scanf("%d,%*d,%d”,a,b);是錯(cuò)誤的。復(fù)習(xí)作業(yè)題:.請編寫程序設(shè)圓半徑r=1.5,圓柱高h(yuǎn)=3,求圓周長、圓面積、圓球表面積、圓球體積、圓柱體積。用scanf輸入數(shù)據(jù),輸出計(jì)算結(jié)果時(shí)保留小數(shù)點(diǎn)后兩位。main()floatpi,r,h,l,s,sq,vq,vz;pi=3.1415926;printf("pleaseinputtherandh:\nn);scanf("%f,%f",&r,&h);l=2*pi*r;s=pi*r*r;sq=4*pi*r*r;vq=4*pi*r*r*r/3.0;vz=pi*r*r*h;printf(nyuanzhouchangis:l=%6.2f\nu,l);printf(Hyuanmianjiis:s=%6.2f\n",s);printf(nyuanqiubiaomianjiis:sq=%6.2f\nu,sq);printf("yuanqiutijiis: vq=%6.2f\n",vq);printf("yuanzhutijiis:vz=%6.2f\n",vz);).請編寫程序輸入一個(gè)華氏溫度,要求輸出攝氏溫度。(保留小數(shù)點(diǎn)后兩位)。計(jì)算公式如下:c=評ー32)main()(floatc,f;printf(npleaseinputahuashiwendu:\nn);scanf(H%fn,&f);c=(5.0/9.0)*(f-32);printf(Hsheshiwenduis:%5.2f\nH,c);).用下面的scanf函數(shù)輸入數(shù)據(jù),問在鍵盤上應(yīng)如何輸入オ能使a=10,b=20,cl='A',c2='a',x=1.5,y=-3.75,z=67.8scanf(n%5d%5d%c%c%f%f%*f,%fn,&a,&b,&cl,&c2,&x,&y,&z);第五章 選擇結(jié)構(gòu)程序設(shè)計(jì)關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式(可以是算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式或賦值表達(dá)式)連接起來的式子,稱為關(guān)系表達(dá)式。關(guān)系表達(dá)式的值為邏輯值“真”或“假”,以1代表“真”,以。代表“假”。若a=5,b=3,c=l,則, a>b>c的計(jì)算過程是:先計(jì)算a>b,結(jié)果為真,值為1

再計(jì)算l>c,結(jié)果為假,值為〇, f=b>c!=a的計(jì)算過程是:先計(jì)算b>c,結(jié)果為真,值為1再計(jì)算1!=a結(jié)果為真,值為1最后將1賦值給f邏輯運(yùn)算符! (邏輯非)&& (邏輯與)II (邏輯或)&&和!I是雙元運(yùn)算符它要求有兩個(gè)關(guān)系表達(dá)式做為操作數(shù),如:(a>b)11(x>y)就是ー個(gè)邏輯表達(dá)式。!是一元運(yùn)算符只要求有一個(gè)關(guān)系表達(dá)式做為操作數(shù),如:!(a>b)就是ー個(gè)邏輯表達(dá)式。請思考: 5>3&&2118<4-!0的值。邏輯表達(dá)式邏輯表達(dá)式的值是ー個(gè)邏輯量“真”或“假”。C語言編譯系統(tǒng)在給出邏輯結(jié)果時(shí),以數(shù)值1代表“真”,以。代表“假”;但是在判斷ー個(gè)量是否為“真”時(shí),以非。代表“真”,以。代表“假”。例如:若x=l。,則!x的值為。。若a=3,b=2,則a&&b的值為1.5&&0I|8的值為1.邏輯運(yùn)算符特點(diǎn)在邏輯表達(dá)式的求解中并不是所有的運(yùn)算符都被執(zhí)行,只是在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí),ォ執(zhí)行下ー個(gè)運(yùn)算符。當(dāng)a=5,b=3,c=2,d=l,x=l,y=1則表達(dá)式(x=aくb)&&(y=cくd)首先計(jì)算“aCb”,結(jié)果為0,則x=0,因此,整個(gè)表達(dá)式的值為0.而“y=cくd”將不被執(zhí)行,所以y的值仍為1而不是0,條件運(yùn)算符 ?:條件表達(dá)式的形式為:表達(dá)式1?表達(dá)式2:表達(dá)式3先計(jì)算表達(dá)式1,若其值為非零,則結(jié)果為表達(dá)式2的值,否則就是表達(dá)式3的值。結(jié)合性:從右到左例如:設(shè)a=2,b=3,c=4J則:計(jì)算m=a>b?a:b>c?b:c先計(jì)算b>c?b:c,結(jié)果為4再計(jì)算m=a>b?a:4,結(jié)果為4則m的值為4,整個(gè)表達(dá)式的值也為4.if語句的三種形式:if形式:if(表達(dá)式)語句;例如:if(x>y)printf("%d",x);if-else形式:if(表達(dá)式)語句1;else語句2;例如:if(x>y)printf("%d”,x);elseprintf(M%dw,y);else-if形式if(表達(dá)式1)語句1;elseif(表達(dá)式2)語句2;else語句n;例如:if(number>500)cost=0.15;elseif(number>300)cost=0.10;elseif(number>100)cost=0.075;elseif(number>50)cost=0.05;elsecost=0;if語句中的書寫問題:(l)if語句中,在if后面都有“表達(dá)式”,一般為邏輯表達(dá)式或關(guān)系表達(dá)式。執(zhí)行if語句時(shí)先對表達(dá)式求解,若表達(dá)式的值為0,按“假”處理,為非0,按“真”處理。(2)在每一個(gè)else前面要有一個(gè)分號(;),整個(gè)語句結(jié)束處也要有一個(gè)分號(;)。(3)在if和else后面只能含有一個(gè)內(nèi)嵌的操作語句,如果有多個(gè)語句,要用花括號“0”將幾個(gè)語句括起來成為ー個(gè)復(fù)合語句。嵌套的if語句-在ー個(gè)if語句中又包含了另ー個(gè)if語句,稱為if語句的嵌套。C語言規(guī)定,else總是和它上面離它最近的if配對。因此,最好使內(nèi)嵌的if語句也包含else部分,如果遇到if和else的數(shù)目不匹配,可以通過加花括弧來確定配對關(guān)系。例如:if(){if()語句1}else語句2switch語句的基本格式:switch(表達(dá)式){case常量表達(dá)式1: 語句!;[break;]case常量表達(dá)式2: 語句2;[break;]case常量表達(dá)式n: 語句n;[break;]default:語句n+1;)注意:?當(dāng)表達(dá)式的值與某ー個(gè)case后面的常量表達(dá)式的值相等時(shí),就執(zhí)行該case后面的語句,都不相等時(shí),就執(zhí)行default后語句。每個(gè)case的常量表達(dá)式的值必須互不相同。各個(gè)case的出現(xiàn)次序不影響執(zhí)行結(jié)果。用break語句可以跳出switch結(jié)構(gòu)。多個(gè)case語句可以共用ー組執(zhí)行語句。復(fù)習(xí)作業(yè)題:.請編寫程序,實(shí)現(xiàn)從鍵盤上輸入3個(gè)整數(shù)a,b,c,并輸出其中最大的數(shù)。方法一:main(){inta,b,c;printf(Hpleaseinputthreeintegers:\n");scanf("%d,%d,%dH,&a,&b,&c);if(a<b)if(b<c)printf(nmax=%d\n1*,c);elseprintf(',max=%d\n,*,b);elseif(a<c)printf(*,max=%d\n*,,c);elseprintf("max=%d\n",a);)方法二:main()(inta,b,c,temp,max;printf(Hpleaseinputthreeintegers:\nu);scanf("%d,%d,%dH,&a,&b,&c);temp=(a>b)?a:b;max=(temp>c)?temp:c;print*“max二%d\n”,max);).請編寫程序,實(shí)現(xiàn)從鍵盤上輸入4個(gè)整數(shù),并按從小到大的順序輸出。main()(intt,a,b,c,d;printf("pleaseinputfourintegers:\n");scanf("%d,%d,%d,%d",&a,&b,&c,&d);printf("\na=%d,b=%d,c=%d,d=%d\n",a,b,c,d);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;c=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}printf(Htheorderis:\nn);printf(M%d%d%d%d”,a,b,c,d);).請編寫程序,根據(jù)函數(shù):, x (x<l)y=v2x-l (1くxV10)ゝ3x-ll (x210) 輸入x值,輸出y值。main()(intx,y;printf(Hinputx:n);scanf(M%dn,&x);if(x<l){y=x;printf(Mx=%3d,y=x=%d\nn,x,y);)elseif(x<10){y=2*x-l;printf(Hx=%3d,y=2*x-l=%d\nH,x,y);)else{y=3*x-ll;printf(nx=%3d,y=3*x-ll=%d\nn,x,y);)).請編寫程序,實(shí)現(xiàn)對給出的ー百分制成績,輸出相應(yīng)的成績等級。即:90分以上為,A"8〇?89分為,B,,7〇?79分為,C,60?69分為HT,60分以下為,EL方法一:#include"stdio.h"main(){ints;scanf("%d”,&s);if(s>=90)printf(WAW);elseif(s>=80)printf(rtBw);elseif(s>=70)printf();elseif(s>=60)printf();elseprint?“E”);)方法二:main()(floatscore;chargrade;printf(npleaseinputthegradeofstudent:**);scanf(**%f**,&score);while(score>100llscore<0){printf(**\ntheinputiserror,pleaseonceagain.**);scanf(**%f**,&score);)switch((int)(score/l0)){case10:case9:grade=*A*;break;case8:grade=*B*;break;case7:grade=*C*;break;case6:grade=*D*;break;case5:case4:case3:case2:case1:case〇:grade二'E';)printf("scoreis:%5.1f,thegradeis:%c\n",score,grade);).編寫程序,輸入一個(gè)字符,判別它是否是大寫字母,如果是,將它轉(zhuǎn)換成小寫字母;如果不是,不轉(zhuǎn)換。然后輸出最后得到的字符。#include“stdio.h"main()(charch;scanf(“%c'',&ch);ch=(ch>=tA,&&ch<=<Z,)?(ch+32):ch;printf(“%c'',ch);}.輸入兩個(gè)運(yùn)算量和一個(gè)運(yùn)算符,完成加、減、乘、除運(yùn)算,輸出運(yùn)算結(jié)果。#include''stdio.h''main(){intx,y,z;charch;printf(nEnteranoperator(+,-,*/):\n**);ch=getchar();printf(HEntertwonumbers:**);scanf(**%d,%d**,&x,&y);switch(ch){case*+*:z=x+y;printf(**x+y=%d**,z);break;case*-*:z=x-y;printf(**x-y=%d**,z);break;case***:z=x*y;printf(**x*y=%d**,z);break;case7,:if(y==0)printf(**divisionbyzero\n**);else{z=x/y;printf(**x/y=%d**,z);break;}default:printf(**Theerroroperator**);)).編寫程序,判斷某一年是否是閏年。方法一:#include“stdio.h"main(){intyear,leap;scanf(w%dw,&year);if(year%4==0){if(year%100==0){if(year%400==0)leap=l;elseleap=O;}elseleap=l;}elseleap=O;if(leap)printf("%dis”,year);elseprintf(w%disnotw,year);print*“aleapyearAn”);)方法二:#include“stdio.h''main(){intyear,leap;scanf("%d”,&year);if((year%4==0&&year%100!=0)ll(year%400==0))leap=l;elseleap=O;if(leap)printf("%dis”,year);elseprintf("%disnoビ,year);print*“aleapyear.Vi”);}第六章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)while語句格式:while(表達(dá)式)語句;功能:while語句用來實(shí)現(xiàn)“當(dāng)型”循環(huán)執(zhí)行過程:首先判斷表達(dá)式,當(dāng)表達(dá)式的值為非〇時(shí),反復(fù)執(zhí)行while中的語句。注意事項(xiàng):1)當(dāng)條件滿足時(shí),執(zhí)行一次。,執(zhí)行到}則返回while語句開始下一次。2)如果第一次條件就不滿足,循環(huán)則一次都不作,直接結(jié)束。執(zhí)行}后的語句。3)循環(huán)體中應(yīng)有使循環(huán)趨向結(jié)束的語句。4)一些變量的賦值操作要在while的前面要完成。5)循環(huán)體如果包含ー個(gè)以上的語句,應(yīng)用花括弧括起來。dowhile語句格式:do語句while(表達(dá)式);功能:do-while語句用來實(shí)現(xiàn)“直到型”循環(huán)執(zhí)行過程:先無條件執(zhí)行ー次語句,然后再判斷表達(dá)式,當(dāng)表達(dá)式的值為非〇時(shí),返回,再執(zhí)行該語句。一般,while結(jié)構(gòu)和do-while結(jié)構(gòu)實(shí)現(xiàn)時(shí)可以相互轉(zhuǎn)換。for語句格式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句執(zhí)行過程:首先計(jì)算表達(dá)式1的值,給循環(huán)變量賦初值,然后測試表達(dá)式2的值,若其值非0,則執(zhí)行循環(huán)體語句,執(zhí)行循環(huán)體一次后再計(jì)算表達(dá)式3的值,自動(dòng)修改循環(huán)變量的值,返回再測試表達(dá)式2的值,直到表達(dá)式2的值為0(假)退出循環(huán)。三個(gè)表達(dá)式都可以省略。說明:(1)for語句一般形式中的“表達(dá)式1”可以省略,不過若省略了,其后的分號不能省略,且應(yīng)在for語句之前給循環(huán)變量賦初值。(2)如果表達(dá)式2省略(其后分號不能省),即不判斷循環(huán)條件,循環(huán)無終止地執(zhí)行下去。例如:for(i=l;;i++)sum=sum+i;就相當(dāng)于i=l;while(1){sum=sum+i;i++;)(3)表達(dá)式3也可以省略,但此時(shí)程序設(shè)計(jì)者應(yīng)另外設(shè)法保證循環(huán)能正常結(jié)束。例如:for(i=l;i<=100;){sum=sum+i;i++;}(4)可以省略表達(dá)式1和表達(dá)式3,只有表達(dá)式2,即只給循環(huán)條件。例如:for(;i<100;){sum=sum+i;i++;}就相當(dāng)于while(i<100){sum=sum+i;i++;)循環(huán)的嵌套一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱為循環(huán)的嵌套。內(nèi)嵌的循環(huán)中還可以嵌套循環(huán),這就是多重循環(huán)。三種循環(huán)結(jié)構(gòu)可以相互嵌套。break語句:break語句用于循環(huán)語句和switch語句,作用是跳出循環(huán)和switch語句,提前結(jié)束循環(huán)。continue語句:continue語句類似于break語句,但不是退出循環(huán),而是跳過本次循環(huán)體下面未執(zhí)行的語句,接著執(zhí)行下一次循環(huán)的迭代。復(fù)習(xí)作業(yè)題:1.請分別用WhileヽDo???whileヽFor三種循環(huán)結(jié)構(gòu)格式語句編程計(jì)算1+2+3+...+19+20。用While格式語句:main(){inti=l;longsum=0;while(i<=20)sum=sum+i;i++;)printf(H%ldn,sum);)用Do While格式語句:main(){inti=l;longsum=();dosum=sum+i;i++;}while(i<=20);printf(**%Id**,sum);)用For格式語句:main(){inti;longsum=0;for(i=l;i<=20;i++)sum=sum+i;printf(n%ld",sum);}.請編寫程序計(jì)算20!=l*2*3…*19*20。main(){inti=l;longfac=l;while(i<=20)(fac*=i;i++;}printf("%ld",fac);.請用多種解法編寫程序計(jì)算1-1/2+1/3+...+l/9-l/10o解法一:main(){inti=l;floatsum=O;while(i<=10){if(i%2==0)sum=sum-1.0/i;elsesum=sum+1.0/i;i++;}printf(n%f",sum);}解法二:main(){inti=l;floatsum=O;while(i<=10){sum=sum+1.0/i;sum=sum-1.0/(i+l);i+=2;}printf(''%f",sum);解法三:main(){inti=l;floatsuml=0,sum2=0;while(i<=10){suml=suml+1.0/i;i=i+2;}i=2;while(i<=10){sum2=sum2+1.0/i;i=i+2;}printf(n%fn,suml-sum2);}解法四:main(){inti=l,sign=l;floatsum=O;whi!e(i<=10){sum=sum+1.0/i*sign;i++;sign=-sign;}printf(M%fn,sum);及其和的程序。4.請編程求滿足1+2+3+...+n<500中最大的n及其和的程序。main(){intn=O,sum=O;do{++n;sum+=n;}while(sum<500);printf(Hn=%dsum=%d\nn,n-l,sum-n);.打印“九九乘法表1TOC\o"1-5"\h\z2 43 6 94 8 12510156121871421816249182716TOC\o"1-5"\h\z20 2524 30 3628 35 42 4932 40 48 56 6436 45 54 63 72main(){intij;for(i=l;i<=9;i++){for(j=l;j<=i;j++)printf(u%4dn,i*j);printf(u\nH);)).輸出以下圖形。#include"stdio.h"voidmain()(intij,k;charspace='for(i=l;i<=6;i++){for(j=2;j<=i;j++)printf(n%cM,space);for(k=l;k<=6;k++)printf(H%cH,'*');printfC,Xn**);)}.輸出以下圖形。****'{cjjc****#include"stdio.h"voidmain()intij,k;for(i=l;i<=4;i++){for(j=l;j<=4-i;j++)printf(un);for(k=l;k<=2*i-l;k++)printf(n*H);printf(n\nn);}for(i=l;i<=3;i++){for(j=l;j<=i;j++)printf(nH);for(k=l;k<=7-2*i;k++)printf(H*H);printf(,,\nn);)).輸入一個(gè)整數(shù)機(jī),判斷是否是素?cái)?shù)。main(){intm川;scanf(n%dn,&m);for(i=2;i<=j;i++)if(m%i==0)break;if(i>=j+l)printf("%disaprimenumber”,m);elseprintf("%disnotaprimenumber",m);}.把100?200之間不能被3整除的數(shù)輸出。#include“stdio.h"main(){intn;for(n=100;n<=200;n++){if(n%3==0)continue;printf("%d",n);}).求100-200之間的全部素?cái)?shù)。#include"math.h"main(){intm,iJ,n=0;for(m=101;m<200;m=m+2){j=sqrt(m);for(i=2;i<=j;i++)if(m%i==0)break;if(i>=j+l){printf(H%6dH,m);n=n+1;}if(n%10==0)printf(rt\nw);}printf(“\n”)).請編寫程序20求Z”!(即求1!+2!+3!+ +20!)main()(floats=0,t=l;intn;for(n=l;n<=20;n++)(t=t*n;s=s+t;printf(nl!+2!+...+20!=%e\n",s);}.請編寫程序100 50 101求とk+乙《十乙-k=l k=l k=l氏main()(intk,nl=100,n2=50,n3=10;floatsl=0,s2=0,s3=0;for(k=l;k<=nl;k++)sl=sl+k;for(k=l;k<=n2;k++)s2=s2+k*k;for(k=l;k<=10;k++)s3=s3+1.0/k;printf(nthesumis%8.2f\nn,sl+s2+s3);).用近似公式求e^l+l/l!+l/2!+-+l/n!用單循環(huán)編寫的程序片段:e=1.0;term=1.0;for(i=l;i<=n;i++){term/=i;e+=term;}.用11/4^l-l/3+l/5-l/7+...求!!的近似值,直到最后ー項(xiàng)的絕對值小于10-6為止。#include“stdio.h”#include"math.h"voidmain(){ints;floatn,t,pi;t=l;pi=0;n=1.0;s=l;while((fabs(t))>le-6){pi=pi+t;n=n+2;s="s;t=s/n;}pi=pi*4;printf(“pi=%12.6f\n”,pi);).請編程求fibonacci數(shù)列的前40個(gè)數(shù)。fl=l;f2=l;n=2;prin以"%121d%121dw,fl,f2);for(i=3;i<=40;i++){f=fl+f2;if(n%4==0)printf(n\nn);printf(M%121dH,f);n=f2;f2=f;n++;}.百錢買百雞問題。公雞每只5元,母雞每只3元,小雞3只一元,問一百元買ー百只雞有幾種解法。for(x=0;x<=19;x++)for(y=0;y<=33-x;y++){z=100-x-y;if(z%3==0&&5*x+3*y+z/3==100)

printf(nx=%dy=%dz=%dM,x,y,z);).用100元換成5元,1元,0.5元,共100張,且每種不少于1張,有多少種組合?#include“stdio.h"voidmain(){intiJ,k,sum=0;floatrbs=0.0;for(i=1;i<=100;i++)foru=1;j<=100;j++)for(k=1;k<=100;k++){sum=i+j+k;rbs=5*i+j+0.5*k;if((sum==100)&&(rbs==100))printf(“5元…%d,1元一%d,0.5元…%d\n”,iJ,k);})可改進(jìn)為:#include“stdio.h"voidmain(){intiJ;for(i=1;i<=ll;i++)for0=1;j<=100-i;j++)if(5*i+j+0.5*(100-i-j)==100)printf(“5元…%d,1元…%d,0.5元…%d\n”,ij,100-i-j));}.請編寫程序求5,;=a+aa+aaa+ +aa...a之值,其中a是ー個(gè)數(shù)字。例如:2+22+222+2222+22222(此時(shí)n=5),n由鍵盤輸入。main()inta,n,i=l;longsn=0,tn=0;printf(na,n=:H);scanf(H%d,%dH,&a,&n);while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;)printf(,,a+aa+aaa+...+aa..a=%ld\n,,,sn);).請編寫程序求所有的“水仙花數(shù)”。所謂“水仙花數(shù)”是指ー個(gè)3位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如,153就是一水仙花數(shù),因?yàn)?53=1+5'+3,main()intij,k,n;printf("shuixianhuashushi:n);for(n=100;n<1000;n++){i=n/100;j=n/10-i*10;k=n%10;if(n==i*i*i+j*j*j+k*k*k)printf(H%4dn,n);)printf(,,\nu);).請編寫程序找出1000之內(nèi)的所有完數(shù),ー個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為“完數(shù)”。例如,6的因子為1、2、3,而6=1+2+3,因此6是“完數(shù)”。輸出時(shí)按下面的格式輸出其因子: 6itsfactorsare1,2,3main()(intm,s,i;for(m=2;m<1000;m++){s=0;for(i=l;i<m;i++)if(m%i==0)s=s+i;if(s==m){printf(M%disawanshu.itsyinziis:",m);for(i=l;i<m;i++)if(m%i==O)printf(,'%d,,,,i);printf(n\nu);))).請編寫程序輸入2個(gè)正整數(shù)m,n,求其最大公約數(shù)和最小公倍數(shù)。main()(intp,i,n,m,temp;printf("pleaseinputtwointegers(>0)n,m:");scanf("%d,%d”,&n,&m);if(n<m){temp=n;n=m;m=temp;}p=n*m;for(i=m;i>l;i-)if((m%i==0)&&(n%i==0))break;printf(Hzuidagongyueshuis:%d\nn,i);printf(nzuixiaogongbeishuis:%d\nH,p/i);).請編寫程序,求下列分?jǐn)?shù)序列的前20項(xiàng)之和。2 3 5 8 13 21「5,3,78,13, main(){inti,t;floata=2,b=l,term,sum=0;for(i=l;l<=20;i++){term=a/b;sum=sum+term;t=a;a=a+b;b=t;)printf(**sum=%9.6f\n**,sum);).請編寫程序若一個(gè)球從100m髙度自由落下,每次落地后反跳回原髙度的一半,再落下。求它在第10次落地時(shí),共經(jīng)過多少m?第10次反彈多髙?main(){inti;floats=100,h=100;for(i=2;i<=10;i++){h=h/2;s=s+2*h;)printf(Hthetotallenthis:%fm\nu,s);printf("thelasthigthis:%fm\n",h/2);).請編寫程序猴子吃桃問題。猴子第一天摘下若干桃子,當(dāng)即吃了一半,還不過癮,又多吃了一個(gè)。第二天早上又將剩下的桃子吃掉一半,又多吃了一個(gè)。以后每天早上都吃了前一天剩下的一半零一個(gè)。到第!0天早上再想吃時(shí),就只剩ー個(gè)桃子了。求第一天猴子共摘了多少桃子。main(){inti,xl,x2=l;for(i=10;i>l;i—){xl=(x2+l)*2;x2=xl;)printf(ntotal=%d\nn,xl);第七章數(shù)組數(shù)組的有關(guān)概念數(shù)組是具有一定順序關(guān)系的若干相同類型變量的集合,特點(diǎn):a)數(shù)組具有有序性b)數(shù)組具有同一性c)數(shù)組具有整體性組成數(shù)組的每個(gè)分量稱為數(shù)組的元素;數(shù)組的維數(shù)(ー維,二維,三維)數(shù)組的定義類型說明符數(shù)組名[常量表達(dá)式];例如: inta[5];charc[20];floatx[10];注意:數(shù)組名命名規(guī)則與變量名相同;數(shù)組名后是方括號,而不是小括號;常量表達(dá)式表示元素的個(gè)數(shù),下標(biāo)從零開始。ー數(shù)組的大小是固定的,不能動(dòng)態(tài)定義。例如:intn;scanf("%d",&n);inta[n];是錯(cuò)誤的。數(shù)組必須先定義,后使用。只能逐個(gè)引用數(shù)組元素。引用形式: 數(shù)組名[下標(biāo)];-其中下標(biāo)可以是整型的常量、變量或表達(dá)式;ー數(shù)組長度為M時(shí),下標(biāo)值為0,1,2...M-1ー維數(shù)組的初始化可以用賦值語句或輸入語句使數(shù)組中的元素得到值,對數(shù)組元素的初始化可以用以下方法:1)在定義數(shù)組時(shí),對數(shù)組元素賦以初值。2)可以只給一部分元素賦值3)在對全部數(shù)組元素賦初值時(shí),可以不指定數(shù)組長度。C語言規(guī)定,對數(shù)組的使用只能逐個(gè)引用數(shù)組元素,不能ー次引用整個(gè)數(shù)組。同樣,對數(shù)組的輸入和輸出也是依次對每個(gè)元素進(jìn)行的。說明:在循環(huán)體內(nèi)利用循環(huán)控制變量作為下標(biāo)輸入輸出數(shù)組元素,因此數(shù)組元素輸入輸出的次序和數(shù)量可以控制的。二維數(shù)組定義的一般形式為:類型說明符數(shù)組名[常量表達(dá)式][常量表達(dá)式]例如:inta[2][3]; charc[20][7];二維數(shù)組的元素在數(shù)組中的是按行排列的。引用形式:數(shù)組名[下標(biāo)][下標(biāo)];?其中下標(biāo)可以是整型的常量、變量或表達(dá)式;兩個(gè)下標(biāo)的值不要超過各自的范圍;要嚴(yán)格區(qū)分定義數(shù)組時(shí)a⑵⑶,和引用數(shù)組時(shí)的a⑵⑶;二維數(shù)組的初始化分行賦初值inta[2][3]={{1,2,3},{4,5,6});不分行賦初值intb[2][3]={1,2,3,4,5,6};對部分元素賦初值intc[3][4]={{1},{0,2},{0,0,3}};intd[3][4]={{1},0,{9}};未賦值的元素自動(dòng)賦值。,且前面的。不能省,后面的??梢允 θ吭刭x初值,省略第一維的長度inta[][2]={{1,2},{3,4}};inta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};字符數(shù)組的定義及初始化存放字符數(shù)據(jù)的數(shù)組是字符數(shù)組,字符數(shù)組中的ー個(gè)元素存放ー個(gè)字符。?定義 char字符數(shù)組名[整型常量表達(dá)式][…]?初始化逐個(gè)為數(shù)組中各元素指定初值字符用字符串給字符數(shù)組初始化字符數(shù)組的輸入輸出>輸出字符時(shí)不包含‘、〇’>用“%s”格式符時(shí),輸出項(xiàng)是數(shù)組名,而不是數(shù)組元素名。>輸入項(xiàng)為數(shù)組名時(shí),前面不要再加。>當(dāng)數(shù)組長度大于字符串實(shí)際長度,也只輸出到遇へO’結(jié)束。如:charc[1O]={"well");printf("沁”,c);A如果ー個(gè)字符數(shù)組中有多個(gè)、〇',則遇到第一個(gè)へ。',輸出就結(jié)束。>利用scanf輸入多個(gè)字符串,以空格分隔。C語言提供了一個(gè)用于讀字符串的函數(shù),它讀入全部字符(包括空格),直到遇到回車符為止,它是gets。。字符串的輸入gets(字符數(shù)組)一格式:gets(ch)功能:從終端輸入一個(gè)字符串到字符數(shù)組ch中,輸入回車鍵時(shí)結(jié)束,并將回車符へn'轉(zhuǎn)換成へ〇ノ,其中ch只能是ー個(gè)字符數(shù)組名。字符串的輸出puts(字符數(shù)組)一格式:puts(ch)功能:向終端輸出字符串,并將,MT轉(zhuǎn)換成ハ『輸出,其中ch可以是某個(gè)字符數(shù)組名,也可以是一個(gè)字符串常量。字符串的復(fù)制strcpy(字符數(shù)組1,字符串2)一格式:strcpy(chi,ch2)功能:將ch2中的字符串復(fù)制到chi字符數(shù)組,限定chi為字符數(shù)組名,ch2可以是字符串常量或字符數(shù)組名。說明:ch!必須定義的足夠大拷貝時(shí)’、〇’一起拷貝過去不能用賦值語句將一個(gè)字符串常量或字符數(shù)組直接賦給ー個(gè)字符數(shù)組。如:strl="china”;或strl=str2;可以將字符串2前面的n個(gè)字符拷貝到字符數(shù)組1中,如:strcpy(chi,ch2,2);字符串的比較strcmp()一格式:strcmp(chi,ch2)功能:對chi和ch2所對應(yīng)的字符串從左到右——進(jìn)行比較(比較字符的ASCII碼值的大小),第一個(gè)不相等的字符的大小決定了整個(gè)字符串的大小,若chi和ch2的所有字符完全相同,則chi等于ch2°chl=ch2函數(shù)返回〇chl<ch2函數(shù)返回一個(gè)負(fù)整數(shù)chl>ch2函數(shù)返回一個(gè)正整數(shù)ー說明:對兩個(gè)字符串比較,不能用if(chl==ch2)printf("yes");只能用if(strcmp(chi,ch2)==0)printf("yes”);字符串的連接函數(shù)strcat0一格式:strcat(chi,ch2);功能:將ch2復(fù)制到ch!的后面,連接時(shí)將chi的へ(T去掉,只在新字符串后保留一個(gè)へ。,。要求chi必須是一個(gè)足夠大的字符數(shù)組,ch2可以是字符串常量或字符數(shù)組名。求字符串長度的strlen()格式:strlen(ch)功能:返回ch的有效字符的個(gè)數(shù),不包括へ?!趦?nèi),其中ch為字符數(shù)組名或某個(gè)字符串常量。字符串大小寫轉(zhuǎn)換strlwrO格式:strlwr(ch);一功能:將ch中所有的大寫字母轉(zhuǎn)換成小寫字母。字符串大小寫轉(zhuǎn)換struprO格式:strupr(ch);一功能:將ch中所有的小寫字母轉(zhuǎn)換成大寫字母。二維字符數(shù)組定義:charstr[3][6];或intstr[3][6];引用:一可以單獨(dú)輸出某ー個(gè)元素,也可以輸出某一行的元素,即某ー個(gè)字符串。如:printf("%s”,str⑵);初始化:charstr[3][6]={wChina”,”Japan",”Korea”};復(fù)習(xí)作業(yè)題:.定義ー個(gè)ー維數(shù)組,存放10個(gè)整數(shù)在其中,找出其中最大的ー個(gè)數(shù)。main()inti,max,x[10];printf(Henterdata:\n");for(i=0;i<10;i++)scanf("%dH,&x[i]);max=x[0];for(i=l;i<10;i++)if(x[i]>max)max=x[i];printf(nmax=%d\n",max);).使用數(shù)組編程,計(jì)算出前40項(xiàng)Fibonacci數(shù)列,要求一行打印5個(gè)數(shù)。main(){longf[40];inti;f[O]=l;f[l]=l;for(i=2;i<40;i++)f[i]=f[i-l]+f[i-2];for(i=0;i<40;i++){if(i%5==0)printf("\n");printf(,,%121d',,f[i]);}).用冒泡法對10個(gè)整數(shù)按從小到大的順序排列輸出。#include"stdio.h”voidmain(){inti,j;floata[ll],temp;for(i=1;i<=10;i++)scanf(“%f”,&a[i]);printf(“\n”);for(i=1;i<=10;i++){printf("%f,”,a[i]);if(i%5==0)printf(“\n”);}printf(“\n”);for(j=1;j<10;j++)for(i=l;i<=10-j;i++)if(a[i]>a[i+1]){temp=a[i];a[i]=a[i+l];a[i+l]=temp;)for(i=1;i<=10;i++){printf(a%f,",a[i]);if(i%5==0)printf(“\n”);}}.用選擇法對10個(gè)數(shù)從小到大排序。#include“stdio.h”voidmain(){inti,j,k;floata[10],temp;for(i=0;i<=9;i++)scanf(w%fw,&a[i]);printf(“\n”);for(i=0;i<9;i++){k=i;for(j=i+l;j<=9;j++)if(a[k]>a[j])k=j;if(i!=k){temp=a[i];a[i]=a[k];a[k]=temp;}for(i=0;i<=9;i++){printf(a%f,”,a[i]);if(i%5==4)printf(“\n”);}).求兩個(gè)3*4矩陣的和。main(){inta[3][4],b[3][4];c[3][4];intij;printf("輸入a矩陣的元素值、n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf(,,%d,,,&a[i][j]);printf("輸入b矩陣的元素值、n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf(u%dn,&b[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)/*矩陣a和b的對應(yīng)元素相加*//?結(jié)果存放在c矩陣中*/printf("和矩陣為:\nH);for(i=0;i<3;i++){for(j=0;j<4;j++)printf(H%5dH,c[i][j]);printf("\nn);}).將一個(gè)2*3的數(shù)組行、列元素互換,存到另外一個(gè)數(shù)組中。main()(inta[2][3]={{l,2,3},{4,5,6});intb[3][2],ij;printf(uarraya八n’’);for(i=0;i<=l;i++){for(j=0J<=2;j++){print—bU][i]=a[i]U];}printf("\n'');printf(uarrayb:\n^^);for(i=0;i<=2;i++)for(j=0;j<=l;j++)prin城“%5d”,b[i][jD;printf(“\n");)).求一個(gè)3*4矩陣中的最大值及其所在的行、歹!]。main(){inta[3][4],row=0,col=0,ij,max;for(i=0;i<3;i++)for(j=0;j<4;j++)scanf(n%dn,&a[i][j]);max=a[O][O];for(i=0;i<3;i++)for(j=0;j<4;j++)if(a[i][j]>max){max=a[i][j];row=i+l;col=j+l;}printf(wmax=%d,row=%d,col=%d\nw,max,row,col);).請編寫程序,求一個(gè)3X3矩陣對角線元素之和。main(){inta[3][3],sum=0;intij;printf(HEnterdata:\nM);for(i=0;i<3;i++)for(j=0;j<3;j++)scanf(H%dn,&a[i][j]);for(i=0;i<3;i++)sum=sum+a[i][i];printf(Hsum=%5d\nn,sum);).請編寫程序?qū)Ι`個(gè)已排好序的數(shù)組,從鍵盤上輸入ー個(gè)數(shù),要求按原來排序的規(guī)律將它插入數(shù)組中。main(){inta[ll]={2,6,9,13,18,25,29,33,37,46};intiJ,tempi,temp2,number;printf(H\narraya:\nn);for(i=0;i<10;i++)printf(H%5dn,a[i]);printf(n\ninsertdata:**);scanf(M%dH,&number);if(number>a[9])a[10]=number;else{for(i=0;i<10;i++){if(a[i]>number){templ=a[i];a[i]=number;for(j=i+l;j<ll;j++){temp2=a[j];a[j]=templ;templ=temp2;)break;printf(**now,arraya:\nn);for(i=0;i<ll;i++)printf(n%5d",a[i]);).請編寫程序打印以下的楊輝三角形(要求打印出10行)。11146411510105116152015611721353521711828567056288119368412612684369#defineN10main(){intij,a[N][N];for(i=0;i<N;i++){a[i][i]=l;a[i][0]=l;)for(i=2;i<N;i++)for(j=l;j<i;j++)a[i][j]=a[i-l]U]+a[i-l]U-l];for(i=0;i<N;i++){for(j=0;j<=i;j++)printf(H%6dn,a[i][j]);printf(n\nn);printf(H\nn);).請編寫程序打印ー個(gè)由5行(每行5個(gè)星號)組成的平行四邊型形狀的圖案。main(){chara[6]={*******H};intij;charspace=**;printf(n\nn);for(i=l;i<=5;i++){for(j=l;j<=i;j++)printfC*%c",space);printf(M%s\nH,a);)).請編寫程序?qū)⒁粋€(gè)數(shù)組中的值按逆序從新存放。例如,假設(shè)原來順序?yàn)?35,27,19,13,6,1〇要求改為:1,6,13,19,27,35〇#defineN6main(){inta[N],i,temp;print?”Enteraarray:\n");for(i=0;i<N;i++)scanf("%d",&a[i]);printf("arrayais:\n");for(i=0;i<N;i++)printf("%4d",a[i]);for(i=0;i<N/2;i++){temp=a[i];a[i]=a[N-i-l];a[N-i-l]=temp;}printf("\nNow,arrayais:\n");for(i=0;i<N;i++)printf("%4d",a[i]);printf("\n");).請編寫程序?qū)蓚€(gè)字符串連接起來,不要用strcat函數(shù)。main(){charsl[80],s2[40];inti=0j=0;printf(n\ninputstringl:**);scanf(M%sH,sl);printf(u\ninputstring2:u);scanf(H%sn,s2);while(sl[i]!=,\O,)i++;while(s2[j]!=,\0,)sl[i++]=s2[j+4-];sl[i]=,\O,;printf(**thenewstringis:%sM,sl);}.請編寫程序?qū)蓚€(gè)字符串s!和s2比較,如果sl>s2,輸出ー個(gè)正數(shù);sl=s2,輸出0;sl<s2,輸出ー個(gè)負(fù)數(shù)。不要用strcmp函數(shù)。兩個(gè)字符串用gets函數(shù)讀入。輸出的正數(shù)或負(fù)數(shù)的絕對值應(yīng)是相比較的兩個(gè)字符串相應(yīng)字符的ASCII碼的差值。例如,“A"與“0’相比,"A"v“

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論