




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
期末復(fù)習(xí)考試形式:2016秋季學(xué)期示例平時(shí):綜合作業(yè)15分考勤:5分期末:筆試+上機(jī)考試60+20分考試題型選擇題(共20題,每題2分,共40分);其中結(jié)構(gòu)體部分(第九章一道選擇題);文件部分(第十章一道選擇題)填空題(共7
題(10空),每題2分,共20分)編程題(共5題,每題8分,共40分)第3章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式是語(yǔ)言的基本成分,是組成程序的基本元素,要掌握。熟悉各種基本數(shù)據(jù)類型的常量和變量:常量的表示形式;變量的定義、變量初始化、變量賦值熟悉常用運(yùn)算符的定義及優(yōu)先級(jí)別。會(huì)計(jì)算各表達(dá)式的值重點(diǎn):
輸入輸出函數(shù)的各種使用方式,如八進(jìn)制,十進(jìn)制,十六進(jìn)制的輸入輸出。自增和自減運(yùn)算符的使用。賦值和計(jì)算時(shí)的類型轉(zhuǎn)換(自動(dòng)和強(qiáng)制)。逗號(hào)表達(dá)式的使用。3.2.1常量和變量1.常量:在程序運(yùn)行過(guò)程中,其值不能被改變的量整型常量:如1000,12345,0,-345實(shí)型常量十進(jìn)制小數(shù)形式:如0.34-56.790.0指數(shù)形式:如12.34e3(代表12.34103)字符常量:如’?’轉(zhuǎn)義字符:如’\n’字符串常量:如”boy”符號(hào)常量:#definePI3.14163.2.1常量和變量2.變量:在程序運(yùn)行期間,變量的值是可以改變的變量必須先定義,后使用定義變量時(shí)指定該變量的名字和類型變量名和變量值是兩個(gè)不同的概念變量名實(shí)際上是以一個(gè)名字代表的一個(gè)存儲(chǔ)地址從變量中取值,實(shí)際上是通過(guò)變量名找到相應(yīng)的內(nèi)存地址,從該存儲(chǔ)單元中讀取數(shù)據(jù)3.2.1常量和變量3.常變量:constinta=3;4.標(biāo)識(shí)符:一個(gè)對(duì)象的名字C語(yǔ)言規(guī)定標(biāo)識(shí)符只能由字母、數(shù)字和下劃線3種字符組成,且第一個(gè)字符必須為字母或下劃線合法的標(biāo)識(shí)符:如sum,average,_total,Class,day,BASIC,li_ling不合法的標(biāo)識(shí)符:M.D.John,¥123,#33,3D64,a>b大小寫(xiě)字母是不同的字符3.2.7運(yùn)算符和表達(dá)式1.基本的算術(shù)運(yùn)算符:+:正號(hào)運(yùn)算符(單目運(yùn)算符)-:負(fù)號(hào)運(yùn)算符(單目運(yùn)算符)*:乘法運(yùn)算符/:除法運(yùn)算符%:求余運(yùn)算符+:加法運(yùn)算符-:減法運(yùn)算符3.2.7運(yùn)算符和表達(dá)式說(shuō)明兩個(gè)整數(shù)相除的結(jié)果為整數(shù)如5/3的結(jié)果值為1,舍去小數(shù)部分如果除數(shù)或被除數(shù)中有一個(gè)為負(fù)值,舍入方向不固定。例如,-5/3,有的系統(tǒng)中得到的結(jié)果為-1,在有的系統(tǒng)中則得到結(jié)果為-2;1/2=?VC++采取“向零取整”的方法
如5/3=1,-5/3=-1,取整后向零靠攏%運(yùn)算符要求參加運(yùn)算的運(yùn)算對(duì)象(即操作數(shù))為整數(shù),結(jié)果也是整數(shù)。余數(shù)符號(hào)與被除數(shù)相同。
如8%3,結(jié)果為2。-8%3=?8%-3=?
-8%-3=?0-22-2#include<stdio.h>#include<math.h>{intmain()floatf1,f2;scanf(“%f”,&f1);f2=pow(f1,0.5);//f2=sqrt(f1);printf(“rootof%0.2f=%f\n”f1,f2);Return0;}3.2.7運(yùn)算符和表達(dá)式C沒(méi)有乘方運(yùn)算,冪運(yùn)算采用庫(kù)函數(shù)pow(x,y)2.自增、自減運(yùn)算符:作用是使變量的值加1或減1++i,--i:在使用i之前,先使i的值加(減)1i++,i--:在使用i之后,使i的值加(減)1++/--運(yùn)算符注意:++、--只能作用于變量,不能用于表達(dá)式和常量,如:22++、++(a+b)錯(cuò)誤右結(jié)合性-i++-(i++)不建議++、--運(yùn)算符連用,如果要在一條語(yǔ)句中將特定變量自增自減不止一次時(shí),最好分多條語(yǔ)句執(zhí)行,而不要在一條語(yǔ)句中自增自減多次3.2.7運(yùn)算符和表達(dá)式3.算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)與結(jié)合性:用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(也稱操作數(shù))連接起來(lái)的、符合C語(yǔ)法規(guī)則的式子,稱為C算術(shù)表達(dá)式運(yùn)算對(duì)象包括常量、變量、函數(shù)等C語(yǔ)言規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合性3.算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)與結(jié)合性()圓括號(hào)-,++,--單目運(yùn)算符,取負(fù)、自加、自減*、/、%雙目運(yùn)算符,乘、除、取模+、-雙目運(yùn)算符,加、減雙目算術(shù)運(yùn)算符:左結(jié)合單目運(yùn)算符取負(fù)“-”、“++”、“--”:右結(jié)合高低3.2.7運(yùn)算符和表達(dá)式6.C運(yùn)算符(1)算術(shù)運(yùn)算符
(+-*/%++--)(2)關(guān)系運(yùn)算符
(><==>=<=?。剑?3)邏輯運(yùn)算符
(?。Γ|)(4)位運(yùn)算符
(<<>>~|∧&)(5)賦值運(yùn)算符
(=及其擴(kuò)展賦值運(yùn)算符)(6)條件運(yùn)算符
(?:)寫(xiě)出下列式子的C表達(dá)式:
寫(xiě)出下列C表達(dá)式的值:(x=4*5,x*5),x+25(逗號(hào)表達(dá)式)i=6;j=(++i)+(i++);i,j各為多少?!2+1>2&&15%5+2a=12;a-=a*a;3.3C語(yǔ)句3.3.1C語(yǔ)句的作用和分類3.3.2最基本的語(yǔ)句----賦值語(yǔ)句歸納總結(jié):1.賦值運(yùn)算符2.復(fù)合的賦值運(yùn)算符在賦值符“=”之前加上其他運(yùn)算符,可以構(gòu)成復(fù)合的運(yùn)算符+=-=*=/=%=a+=b等價(jià)于a=a+bx*=y+8等價(jià)于x=x*(y+8)X%=y/3等價(jià)于x=x%(y/3)歸納總結(jié):1.賦值運(yùn)算符2.復(fù)合的賦值運(yùn)算符3.賦值表達(dá)式一般形式為:
變量
賦值運(yùn)算符
表達(dá)式對(duì)賦值表達(dá)式求解的過(guò)程:求賦值運(yùn)算符右側(cè)的“表達(dá)式”的值賦給賦值運(yùn)算符左側(cè)的變量歸納總結(jié):
3.賦值表達(dá)式賦值表達(dá)式“a=3*5”的值為15,對(duì)表達(dá)式求解后,變量a的值和表達(dá)式的值都是15“a=(b=5)”和“a=b=5”等價(jià)“a=b”和“b=a”含義不同例:a=5+(c=6)后a=11
a=b=c=5后a=5問(wèn):inta=12;a+=a-=a*aa=?歸納總結(jié):1.賦值運(yùn)算符2.復(fù)合的賦值運(yùn)算符3.賦值表達(dá)式4.賦值過(guò)程中的類型轉(zhuǎn)換兩側(cè)類型一致時(shí),直接賦值兩側(cè)類型不一致,但都是算術(shù)類型時(shí),自動(dòng)將右側(cè)的類型轉(zhuǎn)換為左側(cè)類型后賦值定義變量時(shí)要防止數(shù)據(jù)溢出3.4數(shù)據(jù)的輸入輸出3.4.1輸入輸出舉例3.4.2有關(guān)數(shù)據(jù)輸入輸出的概念3.4.3用printf函數(shù)輸出數(shù)據(jù)3.4.4用scanf函數(shù)輸入數(shù)據(jù)3.4.5字符數(shù)據(jù)的輸入輸出3.4.2有關(guān)數(shù)據(jù)輸入輸出的概念幾乎每一個(gè)C程序都包含輸入輸出輸入輸出是程序中最基本的操作之一3.4.2有關(guān)數(shù)據(jù)輸入輸出的概念(1)所謂輸入輸出是以計(jì)算機(jī)主機(jī)為主體而言的從計(jì)算機(jī)向輸出設(shè)備(如顯示器、打印機(jī)等)輸出數(shù)據(jù)稱為輸出從輸入設(shè)備(如鍵盤、磁盤、光盤、掃描儀等)向計(jì)算機(jī)輸入數(shù)據(jù)稱為輸入3.4.2有關(guān)數(shù)據(jù)輸入輸出的概念(2)C語(yǔ)言本身不提供輸入輸出語(yǔ)句輸入和輸出操作是由C標(biāo)準(zhǔn)函數(shù)庫(kù)中的函數(shù)來(lái)實(shí)現(xiàn)的printf和scanf不是C語(yǔ)言的關(guān)鍵字,而只是庫(kù)函數(shù)的名字putchar、getchar、puts、gets3.4.2有關(guān)數(shù)據(jù)輸入輸出的概念(3)在使用輸入輸出函數(shù)時(shí),要在程序文件的開(kāi)頭用預(yù)編譯指令#include<stdio.h>或#include″stdio.h″3.4.3用printf函數(shù)輸出數(shù)據(jù)在C程序中用來(lái)實(shí)現(xiàn)輸出和輸入的,主要是printf函數(shù)和scanf函數(shù)這兩個(gè)函數(shù)是格式輸入輸出函數(shù)用這兩個(gè)函數(shù)時(shí),必須指定格式3.4.3用printf函數(shù)輸出數(shù)據(jù)1.printf函數(shù)的一般格式printf(格式控制,輸出表列)例如:printf(”i=%d,c=%c\n”,i,c);格式聲明3.4.3用printf函數(shù)輸出數(shù)據(jù)1.printf函數(shù)的一般格式printf(格式控制,輸出表列)例如:printf(”i=%d,c=%c\n”,i,c);普通字符3.4.3用printf函數(shù)輸出數(shù)據(jù)1.printf函數(shù)的一般格式printf(格式控制,輸出表列)例如:printf(”i=%d,c=%c\n”,i,c);可以是常量、變量或表達(dá)式3.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符d格式符。用來(lái)輸出一個(gè)有符號(hào)的十進(jìn)制整數(shù)可以在格式聲明中指定輸出數(shù)據(jù)的域?qū)抪rintf(”%5d%5d\n”,12,-345);%d輸出int型數(shù)據(jù)%ld輸出long型數(shù)據(jù)3.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符c格式符。用來(lái)輸出一個(gè)字符charch=’a’;printf(”%c”,ch);或printf(”%5c”,ch);輸出字符:a3.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符s格式符。用來(lái)輸出一個(gè)字符串printf(”%s”,”CHINA”);輸出字符串:CHINA3.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符f格式符。用來(lái)輸出實(shí)數(shù),以小數(shù)形式輸出①不指定數(shù)據(jù)寬度和小數(shù)位數(shù),用%f
例3.6用%f輸出實(shí)數(shù),只能得到6位小數(shù)。doublea=1.0;printf(”%f\n”,a/3);3.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符f格式符。用來(lái)輸出實(shí)數(shù),以小數(shù)形式輸出②指定數(shù)據(jù)寬度和小數(shù)位數(shù)。用%m.nf
printf("%20.15f\n",1/3);
printf("%.0f\n”,10000/3.0);3.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符f格式符。用來(lái)輸出實(shí)數(shù),以小數(shù)形式輸出②指定數(shù)據(jù)寬度和小數(shù)位數(shù)。用%m.nffloata;a=10000/3.0;printf("%f\n",a);3.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符f格式符。用來(lái)輸出實(shí)數(shù),以小數(shù)形式輸出③輸出的數(shù)據(jù)向左對(duì)齊,用%-m.nf3.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符f格式符。用來(lái)輸出實(shí)數(shù),以小數(shù)形式輸出float型數(shù)據(jù)只能保證6位有效數(shù)字double型數(shù)據(jù)能保證15位有效數(shù)字計(jì)算機(jī)輸出的數(shù)字不都是絕對(duì)精確有效的3.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符e格式符。指定以指數(shù)形式輸出實(shí)數(shù)%e,VC++給出小數(shù)位數(shù)為6位
指數(shù)部分占5列
小數(shù)點(diǎn)前必須有而且只有1位非零數(shù)字printf(”%e”,123.456);
輸出:1.234560
e+0023.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符e格式符。指定以指數(shù)形式輸出實(shí)數(shù)%m.neprintf(”%13.2e”,123.456);
輸出:1.23e+002(前面有4個(gè)空格)3.4.4用scanf函數(shù)輸入數(shù)據(jù)1.scanf函數(shù)的一般形式scanf(格式控制,地址表列)含義同printf函數(shù)3.4.4用scanf函數(shù)輸入數(shù)據(jù)1.scanf函數(shù)的一般形式scanf(格式控制,地址表列)可以是變量的地址,或字符串的首地址3.4.4用scanf函數(shù)輸入數(shù)據(jù)2.scanf函數(shù)中的格式聲明與printf函數(shù)中的格式聲明相似以%開(kāi)始,以一個(gè)格式字符結(jié)束,中間可以插入附加的字符scanf("a=%f,b=%f,c=%f",&a,&b,&c);3.4.4用scanf函數(shù)輸入數(shù)據(jù)3.使用scanf函數(shù)時(shí)應(yīng)注意的問(wèn)題scanf(”%f%f%f”,a,b,c);錯(cuò)scanf(”%f%f%f”,&a,&b,&c);對(duì)對(duì)于scanf("a=%f,b=%f,c=%f",&a,&b,&c);
132↙
錯(cuò)
a=1,b=3,c=2↙
對(duì)
a=1b=3c=2↙
錯(cuò)3.4.4用scanf函數(shù)輸入數(shù)據(jù)3.使用scanf函數(shù)時(shí)應(yīng)注意的問(wèn)題對(duì)于scanf(”%c%c%c”,&c1,&c2,&c3);
abc↙
對(duì)
abc↙
錯(cuò)對(duì)于scanf(”%d%c%f”,&a,&b,&c);若輸入
1234a123o.26↙3.4.4用scanf函數(shù)輸入數(shù)據(jù)3.使用scanf函數(shù)時(shí)應(yīng)注意的問(wèn)題對(duì)于scanf(”%c%c%c”,&c1,&c2,&c3);
abc↙
對(duì)
abc↙
錯(cuò)對(duì)于scanf(”%d%c%f”,&a,&b,&c);若輸入
1234a123o.26↙3.4.4用scanf函數(shù)輸入數(shù)據(jù)3.使用scanf函數(shù)時(shí)應(yīng)注意的問(wèn)題對(duì)于scanf(”%c%c%c”,&c1,&c2,&c3);
abc↙
對(duì)
abc↙
錯(cuò)對(duì)于scanf(”%d%c%f”,&a,&b,&c);若輸入
1234a123o.26↙3.4.5字符數(shù)據(jù)的輸入輸出1.用putchar函數(shù)輸出一個(gè)字符從計(jì)算機(jī)向顯示器輸出一個(gè)字符putchar函數(shù)的一般形式為:putchar(c)3.4.5字符數(shù)據(jù)的輸入輸出2.用getchar函數(shù)輸入一個(gè)字符向計(jì)算機(jī)輸入一個(gè)字符getchar函數(shù)的一般形式為:getchar()第4章選擇結(jié)構(gòu)程序設(shè)計(jì)4.1選擇結(jié)構(gòu)和條件判斷4.2用if語(yǔ)句實(shí)現(xiàn)選擇結(jié)構(gòu)4.3關(guān)系運(yùn)算符和關(guān)系表達(dá)式4.4邏輯運(yùn)算符和邏輯表達(dá)式4.5條件運(yùn)算符和條件表達(dá)式4.6選擇結(jié)構(gòu)的嵌套4.7用switch語(yǔ)句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)4.8選擇結(jié)構(gòu)程序綜合舉例4.1選擇結(jié)構(gòu)和條件判斷C語(yǔ)言有兩種選擇語(yǔ)句:(1)if語(yǔ)句,實(shí)現(xiàn)兩個(gè)分支的選擇結(jié)構(gòu)(2)switch語(yǔ)句,實(shí)現(xiàn)多分支的選擇結(jié)構(gòu)4.2.2if語(yǔ)句的一般形式if(表達(dá)式)語(yǔ)句1[else語(yǔ)句2]關(guān)系表達(dá)式邏輯表達(dá)式數(shù)值表達(dá)式方括號(hào)內(nèi)的部分為可選的4.2.2if語(yǔ)句的一般形式if(表達(dá)式)語(yǔ)句1[else語(yǔ)句2]簡(jiǎn)單的語(yǔ)句復(fù)合語(yǔ)句另一個(gè)if語(yǔ)句等最常用的3種if語(yǔ)句形式:1.if(表達(dá)式)語(yǔ)句1(沒(méi)有else子句)2.if(表達(dá)式)語(yǔ)句1else語(yǔ)句2(有else子句)3.if(表達(dá)式1)
語(yǔ)句1elseif(表達(dá)式2)語(yǔ)句2elseif(表達(dá)式3)語(yǔ)句3
┆elseif(表達(dá)式m)語(yǔ)句melse語(yǔ)句m+1(在else部分又嵌套了多層的if語(yǔ)句)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(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;等價(jià)于分號(hào)不能丟說(shuō)明:(1)整個(gè)if語(yǔ)句可寫(xiě)在多行上,也可寫(xiě)在一行上但都是一個(gè)整體,屬于同一個(gè)語(yǔ)句(2)“語(yǔ)句1”…“語(yǔ)句m”是if中的內(nèi)嵌語(yǔ)句
內(nèi)嵌語(yǔ)句也可以是一個(gè)if語(yǔ)句(3)“語(yǔ)句1”…“語(yǔ)句m”可以是簡(jiǎn)單的語(yǔ)句,也可以是復(fù)合語(yǔ)句4.3關(guān)系運(yùn)算符和關(guān)系表達(dá)式4.3.1關(guān)系運(yùn)算符及其優(yōu)先次序4.3.2關(guān)系表達(dá)式4.3.1關(guān)系運(yùn)算符及其優(yōu)先次序關(guān)系運(yùn)算符:用來(lái)對(duì)兩個(gè)數(shù)值進(jìn)行比較的比較運(yùn)算符C語(yǔ)言提供6種關(guān)系運(yùn)算符:①<(小于)②<=(小于或等于)③>(大于)④>=(大于或等于)
⑤==(等于)⑥!=(不等于)優(yōu)先級(jí)相同(高)優(yōu)先級(jí)相同(低)4.3.1關(guān)系運(yùn)算符及其優(yōu)先次序關(guān)系、算術(shù)、賦值運(yùn)算符的優(yōu)先級(jí)算術(shù)運(yùn)算符(高)賦值運(yùn)算符(低)關(guān)系運(yùn)算符4.3.1關(guān)系運(yùn)算符及其優(yōu)先次序c>a+b等效于c>(a+b)a>b==c等效于(a>b)==ca==b<c等效于a==(b<c)a=b>c等效于a=(b>c)4.3.2關(guān)系表達(dá)式關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個(gè)數(shù)值或數(shù)值表達(dá)式連接起來(lái)的式子關(guān)系表達(dá)式的值是一個(gè)邏輯值,即“真”或“假”在C的邏輯運(yùn)算中,以“1”代表“真”,以“0”代表“假”4.4邏輯運(yùn)算符和邏輯表達(dá)式4.4.1邏輯運(yùn)算符及其優(yōu)先次序4.4.2邏輯表達(dá)式4.4.3邏輯型變量4.4.1邏輯運(yùn)算符及其優(yōu)先次序3種邏輯運(yùn)算符:&&(邏輯與)||(邏輯或)!(邏輯非)&&和||是雙目(元)運(yùn)算符!是一目(元)運(yùn)算符邏輯表達(dá)式用邏輯運(yùn)算符將關(guān)系表達(dá)式或其他邏輯量連接起來(lái)的式子4.4.1邏輯運(yùn)算符及其優(yōu)先次序ab!a!ba&&ba||b真真假假真真真假假真假真假真真假假真假假真真假假邏輯運(yùn)算的真值表4.4.1邏輯運(yùn)算符及其優(yōu)先次序邏輯運(yùn)算符的優(yōu)先次序!→&&→||(!為三者中最高)與其他運(yùn)算符的優(yōu)先次序!(高)算術(shù)運(yùn)算符關(guān)系運(yùn)算符&&和||賦值運(yùn)算符(低)4.4.2邏輯表達(dá)式邏輯表達(dá)式的值應(yīng)該是邏輯量“真”或“假”編譯系統(tǒng)在表示邏輯運(yùn)算結(jié)果時(shí)以數(shù)值1代表“真”,以0代表“假”但在判斷一個(gè)量是否為“真”時(shí)以0代表“假”,以非0代表“真”注意:將一個(gè)非零的數(shù)值認(rèn)作為“真”4.4.2邏輯表達(dá)式(1)若a=4,則!a的值為0(2)若a=4,b=5,則a&&b的值為1(3)a和b值分別為4和5,則a||b的值為1(4)a和b值分別為4和5,則!a||b的值為1(5)4&&0||2的值為14.4.2邏輯表達(dá)式修改后的邏輯運(yùn)算真值表ab!a!ba&&ba||b非0非00011非000101假非01001假011004.5條件運(yùn)算符和條件表達(dá)式有一種if語(yǔ)句,當(dāng)被判別的表達(dá)式的值為“真”或“假”時(shí),都執(zhí)行一個(gè)賦值語(yǔ)句且向同一個(gè)變量賦值如:if(a>b)max=a;elsemax=b;max=(a>b)?a
:b;條件運(yùn)算符4.5條件運(yùn)算符和條件表達(dá)式有一種if語(yǔ)句,當(dāng)被判別的表達(dá)式的值為“真”或“假”時(shí),都執(zhí)行一個(gè)賦值語(yǔ)句且向同一個(gè)變量賦值如:if(a>b)max=a;elsemax=b;max=(a>b)?a
:b;條件表達(dá)式4.5條件運(yùn)算符和條件表達(dá)式條件表達(dá)式的一般形式為表達(dá)式1?表達(dá)式2:
表達(dá)式34.5條件運(yùn)算符和條件表達(dá)式條件運(yùn)算符的執(zhí)行順序:求解表達(dá)式1若為非0(真)則求解表達(dá)式2,此時(shí)表達(dá)式2的值就作為整個(gè)條件表達(dá)式的值若表達(dá)式1的值為0(假),則求解表達(dá)式3,表達(dá)式3的值就是整個(gè)條件表達(dá)式的值4.5條件運(yùn)算符和條件表達(dá)式條件運(yùn)算符優(yōu)先于賦值運(yùn)算符條件運(yùn)算符的結(jié)合方向?yàn)椤白杂抑磷蟆币韵聻楹戏ǖ氖褂梅椒ǎ篴>b?(max=a):(max=b);a>b?printf(“%d”,a):printf(“%d”,b);4.7用switch語(yǔ)句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)switch語(yǔ)句用來(lái)實(shí)現(xiàn)多分支選擇結(jié)構(gòu)學(xué)生成績(jī)分類85分以上為’A’等70~84分為’B’等60~69分為’C’等……人口統(tǒng)計(jì)分類
按年齡分為老、中、青、少、兒童switch語(yǔ)句的作用是根據(jù)表達(dá)式的值,使流程跳轉(zhuǎn)到不同的語(yǔ)句switch語(yǔ)句的一般形式:switch(表達(dá)式){case常量1:語(yǔ)句1case常量2:語(yǔ)句2
┇
┇
┇case常量n:語(yǔ)句ndefault:語(yǔ)句n+1}整數(shù)類型(包括字符型)switch語(yǔ)句的作用是根據(jù)表達(dá)式的值,使流程跳轉(zhuǎn)到不同的語(yǔ)句switch語(yǔ)句的一般形式:switch(表達(dá)式){case常量1:語(yǔ)句1case常量2:語(yǔ)句2
┇
┇
┇case常量n:語(yǔ)句ndefault:語(yǔ)句n+1}不能相同分段函數(shù)例:例:讀程序,給出程序的運(yùn)行結(jié)果第5章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.1為什么需要循環(huán)控制5.2用while語(yǔ)句實(shí)現(xiàn)循環(huán)5.3用do---while語(yǔ)句實(shí)現(xiàn)循環(huán)5.4用for語(yǔ)句實(shí)現(xiàn)循環(huán)5.5循環(huán)的嵌套5.6幾種循環(huán)的比較5.7改變循環(huán)執(zhí)行的狀態(tài)5.8循環(huán)程序舉例重點(diǎn):
三種基本循環(huán)結(jié)構(gòu)的使用,while和do…while的區(qū)別,for結(jié)構(gòu)中三個(gè)表達(dá)式的作用 判斷素?cái)?shù)算法 遞推算法 求n個(gè)數(shù)的和,平均值,最大值,最小值等拆數(shù)算法:如數(shù)值轉(zhuǎn)換(學(xué)會(huì)使用n=n/d和r=n%d)窮舉算法,如水仙花數(shù)實(shí)現(xiàn)循環(huán)的語(yǔ)句(四種)1、用goto語(yǔ)句和if語(yǔ)句構(gòu)成循環(huán);
(不提倡)2、用while語(yǔ)句;
(當(dāng)型循環(huán)—先判斷后執(zhí)行)3、用do-while語(yǔ)句;
(直到型循環(huán)—先執(zhí)行后判斷)4、用for語(yǔ)句。
(多功能)while語(yǔ)句的一般形式如下:while(表達(dá)式)語(yǔ)句;循環(huán)體表達(dá)式語(yǔ)句N-S圖while語(yǔ)句的一般形式如下:while(表達(dá)式)語(yǔ)句“真”時(shí)執(zhí)行循環(huán)體語(yǔ)句“假”時(shí)不執(zhí)行循環(huán)條件表達(dá)式while循環(huán)的特點(diǎn)是:先判斷條件表達(dá)式,后執(zhí)行循環(huán)體語(yǔ)句注意:若循環(huán)體包含一條以上的語(yǔ)句,應(yīng)以復(fù)合語(yǔ)句的形式出現(xiàn);循環(huán)前,必須給循環(huán)控制變量賦初值;循環(huán)體中,必須有改變循環(huán)控制變量值的語(yǔ)句(使循環(huán)趨于結(jié)束的語(yǔ)句);循環(huán)體可以為空。例:while((c=getchar())!=‘A’);等價(jià)于c=getchar();while(c!=‘A’)c=getchar();5.3用do---while語(yǔ)句實(shí)現(xiàn)循環(huán)do---while語(yǔ)句的特點(diǎn):先無(wú)條件地執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立do---while語(yǔ)句的一般形式為:do
語(yǔ)句while(表達(dá)式);表達(dá)式Y(jié)N循環(huán)體語(yǔ)句分號(hào)不能省略,
切記5.4用for語(yǔ)句實(shí)現(xiàn)循環(huán)for語(yǔ)句的一般形式為for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
語(yǔ)句設(shè)置初始條件,只執(zhí)行一次??梢詾榱銈€(gè)、一個(gè)或多個(gè)變量設(shè)置初值執(zhí)行5.4用for語(yǔ)句實(shí)現(xiàn)循環(huán)for語(yǔ)句的一般形式為for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
語(yǔ)句循環(huán)條件表達(dá)式,用來(lái)判定是否繼續(xù)循環(huán)。在每次執(zhí)行循環(huán)體前先執(zhí)行此表達(dá)式,決定是否繼續(xù)執(zhí)行循環(huán)5.4用for語(yǔ)句實(shí)現(xiàn)循環(huán)for語(yǔ)句的一般形式為for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
語(yǔ)句作為循環(huán)的調(diào)整器,例如使循環(huán)變量增值,它是在執(zhí)行完循環(huán)體后才進(jìn)行的5.4用for語(yǔ)句實(shí)現(xiàn)循環(huán)for語(yǔ)句的執(zhí)行過(guò)程:(1)先求解表達(dá)式1(2)求解表達(dá)式2,若其值為真,執(zhí)行循環(huán)體,然后執(zhí)行下面第(3)步。若為假,則結(jié)束循環(huán),轉(zhuǎn)到第(5)步(3)求解表達(dá)式3(4)轉(zhuǎn)回上面步驟(2)繼續(xù)執(zhí)行(5)循環(huán)結(jié)束,執(zhí)行for語(yǔ)句下面的一個(gè)語(yǔ)句求解表達(dá)式1表達(dá)式2語(yǔ)句求解表達(dá)式35.4用for語(yǔ)句實(shí)現(xiàn)循環(huán)for語(yǔ)句不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況,還可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況for語(yǔ)句完全可以代替while語(yǔ)句5.7改變循環(huán)執(zhí)行的狀態(tài)5.7.1用break語(yǔ)句提前終止循環(huán)5.7.2用continue語(yǔ)句提前結(jié)束本次循環(huán)5.7.3break語(yǔ)句和continue語(yǔ)句的區(qū)別5.7.1用break語(yǔ)句提前終止循環(huán)break語(yǔ)句可以用來(lái)從循環(huán)體內(nèi)跳出循環(huán)體,即提前結(jié)束循環(huán),接著執(zhí)行循環(huán)下面的語(yǔ)句[例]判斷m是否為素?cái)?shù)
輸入mk=sqrt(m)i=2i<=km%i為0是否結(jié)束循環(huán)i++i>=k+1是否m是素?cái)?shù)m不是素?cái)?shù)#include”math.h”voidmain(){intm,i,k;scanf(“%d”,&m);k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>k)printf(“%d是素?cái)?shù)”,m)elseprintf(“%d是合數(shù)”,m);}結(jié)束循環(huán),即轉(zhuǎn)到for循環(huán)的下一語(yǔ)句。Break總是作if的內(nèi)嵌語(yǔ)句flag=1{flag=0;break;}flag5.7.2用continue語(yǔ)句提前結(jié)束本次循環(huán)有時(shí)并不希望終止整個(gè)循環(huán)的操作,而只希望提前結(jié)束本次循環(huán),而接著執(zhí)行下次循環(huán)。這時(shí)可以用continue語(yǔ)句5.7.2用continue語(yǔ)句提前結(jié)束本次循環(huán)
例5.5要求輸出100~200之間的不能被3整除的數(shù)。(不能被3也不能被7)編程思路:對(duì)100到200之間的每一個(gè)整數(shù)進(jìn)行檢查如果不能被3整除,輸出,否則不輸出無(wú)論是否輸出此數(shù),都要接著檢查下一個(gè)數(shù)(直到200為止)。Nn=100n≤200Yn能被3整除Nn=n+1輸出nYfor(n=100;n<=200;n++){if(n%3==0)
continue;printf("%d",n);}If(n%3)printf(“%d”,n);5.7.3break語(yǔ)句和continue語(yǔ)句的區(qū)別continue語(yǔ)句只結(jié)束本次循環(huán),而不是終止整個(gè)循環(huán)的執(zhí)行break語(yǔ)句結(jié)束整個(gè)循環(huán)過(guò)程,不再判斷執(zhí)行循環(huán)的條件是否成立N表達(dá)式1Y表達(dá)式2N……Y…………N表達(dá)式1Y表達(dá)式2NY…………break語(yǔ)句continue語(yǔ)句強(qiáng)行退出循環(huán)只結(jié)束本次循環(huán)
例5.9輸入一個(gè)大于3的整數(shù)n,判定它是否素?cái)?shù)(prime,又稱質(zhì)數(shù))。解題思路:讓n被i整除(i的值從2變到n-1)如果n能被2~(n-1)之中任何一個(gè)整數(shù)整除,則表示n肯定不是素?cái)?shù),不必再繼續(xù)被后面的整數(shù)除,因此,可以提前結(jié)束循環(huán)注意:此時(shí)i的值必然小于nNNYn=i+1輸入ni=2i≤n-1Yn被i整除i≤a輸出不是素?cái)?shù)Y輸出是素?cái)?shù)N#include<stdio.h>intmain(){intn,i;printf(“n=?");scanf("%d",&n);for(i=2;i<=n-1;i++)if(n%i==0)break;if(i<n)printf("%disnot\n",n);elseprintf("%dis\n",n);return0;}#include<stdio.h>intmain(){intn,i;printf(“n=?");scanf("%d",&n);for(i=2;i<=n-1;i++)if(n%i==0)break;if(i<n)printf("%disnot\n",n);elseprintf("%dis\n",n);return0;}k=sqrt(n);#include<stdio.h>intmain(){intn,i,k;printf(“n=?");scanf("%d",&n);for(i=2;i<=k;i++)if(n%i==0)break;if(i<n)printf("%disnot\n",n);elseprintf("%dis\n",n);return0;}k=sqrt(n);#include<math.h>#include<stdio.h>intmain(){intn,i,k;printf(“n=?");scanf("%d",&n);for(i=2;i<=k;i++)if(n%i==0)break;if(i<=k)printf("%disnot\n",n);elseprintf("%dis\n",n);return0;}k=sqrt(n);#include<math.h>
例5.10求100~200間的全部素?cái)?shù)。(非素?cái)?shù)之和)解題思路:使用例5.9的算法在例5.9程序中只要增加一個(gè)外循環(huán),先后對(duì)100~200間的全部整數(shù)一一進(jìn)行判定即可
……for(n=101;n<=200;n=n+2){k=sqrt(n);for(i=2;i<=k;i++)if(n%i==0)break;if(i>=k+1) {printf("%d",n); m=m+1; } if(m%10==0)printf(“\n”);}……只對(duì)奇數(shù)進(jìn)行檢查控制每行輸出10個(gè)數(shù)據(jù)例:求100~1000之間的“水仙花”數(shù)。如:153=1^3+5^3+3^3“水仙花”數(shù):水仙花數(shù)是指一個(gè)n位數(shù)(n≥3),它的每個(gè)位上的數(shù)字的n次冪之和等于它本身。水仙花數(shù)只是自冪數(shù)的一種,嚴(yán)格來(lái)說(shuō)三位數(shù)的3次冪數(shù)才成為水仙花數(shù)。例:讀程序,寫(xiě)出程序運(yùn)行結(jié)果7c98例:猴子吃桃。猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不過(guò)癮,又多吃了一個(gè)。第二天早上又將剩下的桃子吃掉一半,又多吃一個(gè)。以后每天早上都吃了前一天剩下的一半零一個(gè)。到第10天早上想再吃時(shí),見(jiàn)只剩下一個(gè)桃子了。求第一天共摘多少桃子。分析:由"到第10天早上想再吃時(shí),見(jiàn)只剩下一個(gè)桃子了"可知,事實(shí)上在第九天吃過(guò)后就只有一個(gè)了.我們用total(day)來(lái)表示每一天的桃子數(shù),這樣由題意,total(10)=1,那么total(9)=(total(10)+1)*2,total(8)=(total(9)+1)*2.....#include<stdio.h>total(intday){intsum;if(day==10)sum=1;elseif(day<10)sum=2*(total(day+1)+1);return(sum);}
voidmain(){intsum;sum=total(1);printf("猴子一共摘桃%d個(gè)。/n",sum);}例:試找出滿足下列條件的所有三位數(shù)其百位數(shù)不大于2將個(gè)位與百位對(duì)換,得到的三位數(shù)是原三位數(shù)的兩倍多分析:用三重循環(huán)的循環(huán)控制變量分別表示百位數(shù)、十位數(shù)和個(gè)位數(shù)百位數(shù)i取值1~2十位數(shù)j取值0~9個(gè)位數(shù)k取值2~9n=100*i+10*j+km=100*k+10*j+i若m>=2*n并m<3*n則n為滿足條件的三位數(shù)voidmain(){intI,j,k,n,m,s=0;for(i=0;i<=2;++i)for(j=0;j<=9;++j)for(k=2;k<=9;++k){n=100*n=100*i+10*j+k;m=100*k+10*j+I;if(m>=2*n&&m<3+n){++s;printf(“%d”,n);if(s%10==0)printf(“\n”);}}}分析:用一重循環(huán)的循環(huán)控制變量i表示原來(lái)的三位數(shù)i=101~299百位數(shù)n1=i/100十位數(shù)n2=(i-n1*100)/10個(gè)位數(shù)n3=i-100*n1-10*n2m=100*n3+10*n2+n1若m>=2*i并m<3*i則i為滿足條件的三位數(shù)For(i=101;i<=299;++i){n1=i/100n2=(i-n1*100)/10n3=i-100*n1-10*n2m=100*n3+10*n2+n1例:1~100中其各位數(shù)字的平方等于其本身的所有整數(shù)。第6章利用數(shù)組處理批量數(shù)據(jù)數(shù)組是一組有序數(shù)據(jù)的集合。數(shù)組中各數(shù)據(jù)的排列是有一定規(guī)律的,下標(biāo)代表數(shù)據(jù)在數(shù)組中的序號(hào)用一個(gè)數(shù)組名和下標(biāo)惟一確定數(shù)組中的元素?cái)?shù)組中的每一個(gè)元素都屬于同一個(gè)數(shù)據(jù)類型6.1怎樣定義和引用一維數(shù)組6.2怎樣定義和引用二維數(shù)組6.3字符數(shù)組6.1怎樣定義和引用一維數(shù)組6.1.1怎樣定義一維數(shù)組6.1.2怎樣引用一維數(shù)組元素6.1.3一維數(shù)組的初始化6.1.4一維數(shù)組程序舉例6.1.1怎樣定義一維數(shù)組定義一維數(shù)組的一般形式為:
類型符
數(shù)組名[常量表達(dá)式];數(shù)組名的命名規(guī)則和變量名相同如inta[10];數(shù)組名6.1.1怎樣定義一維數(shù)組定義一維數(shù)組的一般形式為:
類型符
數(shù)組名[常量表達(dá)式];數(shù)組名的命名規(guī)則和變量名相同如inta[10];數(shù)組長(zhǎng)度6.1.1怎樣定義一維數(shù)組定義一維數(shù)組的一般形式為:
類型符
數(shù)組名[常量表達(dá)式];數(shù)組名的命名規(guī)則和變量名相同如inta[10];10個(gè)元素:a[0],a[1],a[2],…,a[9]每個(gè)元素的數(shù)據(jù)類型a[0]a[1]a[2]a[3]…a[7]a[8]a[9]6.1.1怎樣定義一維數(shù)組定義一維數(shù)組的一般形式為:
類型符
數(shù)組名[常量表達(dá)式];inta[4+6];合法intn=10;inta[n];intA[10],b[5];charc[8];floatX[20],y[4*M+1],w[5];&&(M是符號(hào)常量)不合法6.1.2怎樣引用一維數(shù)組元素引用數(shù)組元素的表示形式為:
數(shù)組名[下標(biāo)]如a[0]=a[5]+a[7]-a[2*3]合法intn=5,a[10];a[n]=20;合法6.1.3一維數(shù)組的初始化在定義數(shù)組的同時(shí),給各數(shù)組元素賦值inta[10]={0,1,2,3,4,5,6,7,8,9};inta[10]={0,1,2,3,4};相當(dāng)于inta[10]={0,1,2,3,4,0,0,0,0,0};inta[10]={0,0,0,0,0,0,0,0,0,0};相當(dāng)于inta[10]={0};inta[5]={1,2,3,4,5};可寫(xiě)為inta[]={1,2,3,4,5};6.3.1怎樣定義字符數(shù)組6.3.2字符數(shù)組的初始化6.3.3怎樣引用字符數(shù)組中的元素6.3.4字符串和字符串結(jié)束標(biāo)志6.3.5字符數(shù)組的輸入輸出6.3.6善于使用字符串處理函數(shù)6.3.7字符數(shù)組應(yīng)用舉例6.3字符數(shù)組一、字符數(shù)組的定義在C語(yǔ)言中,沒(méi)有專門的字符串變量,而是將字符串存入字符數(shù)組來(lái)處理
即用一個(gè)一維數(shù)組來(lái)存放一個(gè)字符串,每個(gè)元素存放一個(gè)字符
字符數(shù)組是數(shù)組的一個(gè)特殊情況,但它的定義方法與上述介紹的類似;引用方法可以與上述介紹類同,也有其獨(dú)特的引用方法
由于字符型與整型是互相通用的,因此上面定義可改為:定義形式:
char數(shù)組名[][[]],……charc[10];c[0]=’I’;c[1]=’’;c[2]=’a’;c[3]=’m’;c[4]=’’;c[5]=’h’;c[6]=’a’;c[7]=’p’;c[8]=’p’;c[9]=’y’;6.3.1怎樣定義字符數(shù)組Iam
happyc[0]c[1]c[2]c[3]c[4]c[5]c[6]c[7]c[8]c[9]charc[10]={’I’,’’,’a’,’m’,’’,’h’,’a’,’p’,’p’,’y’};charc[10]={’c’,’’,’p’,’r’,’o’,’g’,’r’,’a’,’m’};6.3.2字符數(shù)組的初始化Iam
happyc[0]c[1]c[2]c[3]c[4]c[5]c[6]c[7]c[8]c[9]cprogram\0c[0]c[1]c[2]c[3]c[4]c[5]c[6]c[7]c[8]c[9]1、按元素賦注意:
在c語(yǔ)言中,將字符串作為字符數(shù)組來(lái)處理,即用一個(gè)一維數(shù)組來(lái)存放一個(gè)字符串。如:c[10]存放字符串“Iamhappy”。
為了測(cè)定實(shí)際字符串的長(zhǎng)度,C語(yǔ)言規(guī)定了一個(gè)“字符串結(jié)束標(biāo)志”,即遇到字符’\0’時(shí),表示字符串結(jié)束。在C語(yǔ)言中,是將字符串作為字符數(shù)組來(lái)處理的關(guān)心的是字符串的有效長(zhǎng)度而不是字符數(shù)組的長(zhǎng)度為了測(cè)定字符串的實(shí)際長(zhǎng)度,C語(yǔ)言規(guī)定了字符串結(jié)束標(biāo)志’\0’6.3.4字符串和字符串結(jié)束標(biāo)志’\0’代表ASCII碼為0的字符從ASCII碼表可以查到,ASCII碼為0的字符不是一個(gè)可以顯示的字符,而是一個(gè)“空操作符”,即它什么也不做用它作為字符串結(jié)束標(biāo)志不會(huì)產(chǎn)生附加的操作或增加有效字符,只起一個(gè)供辨別的標(biāo)志6.3.4字符串和字符串結(jié)束標(biāo)志charc[]={”Iamhappy”};可寫(xiě)成charc[]=”Iamhappy”;相當(dāng)于charc[11]={”Iamhappy”};6.3.4字符串和字符串結(jié)束標(biāo)志charc[10]={”China”};可寫(xiě)成charc[10]=”China”;從c[5]開(kāi)始,元素值均為\0只顯示printf(”%s”,c);6.3.4字符串和字符串結(jié)束標(biāo)志China\0\0\0\0\0字符數(shù)組的輸入輸出可以有兩種方法:
逐個(gè)字符輸入輸出(%c)
整個(gè)字符串一次輸入輸出(%s)輸出的字符中不包括結(jié)束符’\0’用%s輸出字符串時(shí),printf函數(shù)中的輸出項(xiàng)是字符數(shù)組名,不是數(shù)組元素名6.3.5字符數(shù)組的輸入輸出1、逐個(gè)字符數(shù)組元素輸入輸出:用%c格式符描述
例:scanf(“%c”,&a[i]);printf(“%c%c%c”,a[0],a[2],a[3]);2、整個(gè)字符串(數(shù)組)輸入輸出:用%s格式符描述
例:chara[]=“china”;scanf(”%s”,a);printf(“%s”,a);如果一個(gè)字符數(shù)組中包含多個(gè)’\0’,則遇第一個(gè)’\0’時(shí)輸出就結(jié)束可以用scanf函數(shù)輸入一個(gè)字符串scanf函數(shù)中的輸入項(xiàng)c是已定義的字符數(shù)組名,輸入的字符串應(yīng)短于已定義的字符數(shù)組的長(zhǎng)度6.3.5字符數(shù)組的輸入輸出charc[6];scanf(”%s”,c);China↙系統(tǒng)自動(dòng)在China后面加一個(gè)’\0’注:用%s輸入時(shí),遇空格或回車便認(rèn)為一個(gè)字符串結(jié)束6.3.5字符數(shù)組的輸入輸出在C函數(shù)庫(kù)中提供了一些用來(lái)專門處理字符串的函數(shù),使用方便6.3.6善于使用字符串處理函數(shù)1.puts函數(shù)----輸出字符串的函數(shù)其一般形式為:puts(字符數(shù)組/字符串)作用是將一個(gè)字符串輸出到終端charstr[20]=”China”;puts(str);
輸出China6.3.6善于使用字符串處理函數(shù)2.gets函數(shù)----輸入字符串的函數(shù)(以回車結(jié)束)其一般形式為:gets(字符數(shù)組)作用是輸入一個(gè)字符串到字符數(shù)組charstr[20];gets(str);
Computer↙6.3.6善于使用字符串處理函數(shù)3.strcat函數(shù)----字符串連接函數(shù)其一般形式為:strcat(字符數(shù)組1,字符數(shù)組2)其作用是把兩個(gè)字符串連接起來(lái),把字符串2接到字符串1的后面,結(jié)果放在字符數(shù)組1中6.3.6善于使用字符串處理函數(shù)使用字符串函數(shù)時(shí),在程序開(kāi)頭用#include<string.h>4.strcpy和strncpy函數(shù)-字符串復(fù)制strcpy一般形式為:strcpy(字符數(shù)組1,字符串2/字符數(shù)組2)作用是將字符串2復(fù)制到字符數(shù)組1中去charstr1[10],str2[]=”China”;strcpy(str1,str2);6.3.6善于使用字符串處理函數(shù)China\0\0\0\0\0str14.strcpy和strncpy函數(shù)-字符串復(fù)制strcpy一般形式為:strcpy(字符數(shù)組1,字符串2)作用是將字符串2復(fù)制到字符數(shù)組1中去charstr1[10],str2[]=”China”;strcpy(str1,str2);6.3.6善于使用字符串處理函數(shù)China\0\0\0\0\0str1要足夠大4.strcpy和strncpy函數(shù)-字符串復(fù)制strcpy一般形式為:strcpy(字符數(shù)組1,字符串2)作用是將字符串2復(fù)制到字符數(shù)組1中去charstr1[10],str2[]=”China”;strcpy(str1,str2);6.3.6善于使用字符串處理函數(shù)數(shù)組名形式4.strcpy和strncpy函數(shù)-字符串復(fù)制strcpy一般形式為:strcpy(字符數(shù)組1,字符串2)作用是將字符串2復(fù)制到字符數(shù)組1中去charstr1[10],str2[]=”China”;strcpy(str1,str2);6.3.6善于使用字符串處理函數(shù)數(shù)組名或字符串常量4.strcpy和strncpy函數(shù)-字符串復(fù)制strcpy一般形式為:strcpy(字符數(shù)組1,字符串2)作用是將字符串2復(fù)制到字符數(shù)組1中去charstr1[10],str2[]=”China”;strcpy(str1,str2);相當(dāng)于strcpy(str1,”China”);6.3.6善于使用字符串處理函數(shù)4.strcpy和strncpy函數(shù)-字符串復(fù)制charstr1[10],str2[]=”China”;str1=”China”;錯(cuò)誤str1=str2;錯(cuò)誤6.3.6善于使用字符串處理函數(shù)4.strcpy和strncpy函數(shù)-字符串復(fù)制可以用strncpy函數(shù)將字符串2中前面n個(gè)字符復(fù)制到字符數(shù)組1中去strncpy(str1,str2,2);作用是將str2中最前面2個(gè)字符復(fù)制到str1中,取代str1中原有的最前面2個(gè)字符復(fù)制的字符個(gè)數(shù)n不應(yīng)多于str1中原有的字符6.3.6善于使用字符串處理函數(shù)5.strcmp函數(shù)----字符串比較函數(shù)其一般形式為strcmp(字符串1,字符串2)作用是比較字符串1和字符串2strcmp(str1,str2);strcmp(”China”,”Korea”);strcmp(str1,”Beijing”);6.3.6善于使用字符串處理函數(shù)5.strcmp函數(shù)----字符串比較函數(shù)字符串比較的規(guī)則是:將兩個(gè)字符串自左至右逐個(gè)字符相比,直到出現(xiàn)不同的字符或遇到’\0’為止如全部字符相同,認(rèn)為兩個(gè)字符串相等若出現(xiàn)不相同的字符,則以第一對(duì)不相同的字符的比較結(jié)果為準(zhǔn)6.3.6善于使用字符串處理函數(shù)5.strcmp函數(shù)----字符串比較函數(shù)”A”<”B””a”>”A””computer”>”compare””these”>”that””1A”>”$20””CHINA”>”CANADA””DOG”<”cat””Tsinghua”>”TSINGHUA”6.3.6善于使用字符串處理函數(shù)5.strcmp函數(shù)----字符串比較函數(shù)比較的結(jié)果由函數(shù)值帶回如果字符串1=字符串2,則函數(shù)值為0如果字符串1>字符串2,則函數(shù)值為一個(gè)正整數(shù)如果字符串1<字符串2,則函數(shù)值為一個(gè)負(fù)整數(shù)6.3.6善于使用字符串處理函數(shù)5.strcmp函數(shù)----字符串比較函數(shù)if(str1>str2)printf(”yes”);錯(cuò)誤if(strcmp(str1,str2)>0)printf(”yes”);正確6.3.6善于使用字符串處理函數(shù)6.strlen函數(shù)----測(cè)字符串長(zhǎng)度的函數(shù)其一般形式為:strlen(字符數(shù)組)它是測(cè)試字符串長(zhǎng)度的函數(shù)(不含‘\0’)函數(shù)的值為字符串中的實(shí)際長(zhǎng)度6.3.6善于使用字符串處理函數(shù)6.strlen函數(shù)----測(cè)字符串長(zhǎng)度的函數(shù)charstr[10]=”China”;printf(”%d”,strlen(str));輸出結(jié)果是5也可以直接測(cè)試字符串常量的長(zhǎng)度strlen(”China”);6.3.6善于使用字符串處理函數(shù)7.strlwr函數(shù)----轉(zhuǎn)換為小寫(xiě)的函數(shù)其一般形式為strlwr(字符串)函數(shù)的作用是將字符串中大寫(xiě)字母換成小寫(xiě)字母6.3.6善于使用字符串處理函數(shù)8.strupr函數(shù)----轉(zhuǎn)換為大寫(xiě)的函數(shù)其一般形式為strupr(字符串)函數(shù)的作用是將字符串中小寫(xiě)字母換成大寫(xiě)字母6.3.6善于使用字符串處理函數(shù)第7章用函數(shù)實(shí)現(xiàn)模塊化程序設(shè)計(jì)7.1為什么要用函數(shù)
7.2怎樣定義函數(shù)7.3調(diào)用函數(shù)7.4對(duì)被調(diào)用函數(shù)的聲明和函數(shù)原型7.5函數(shù)的嵌套調(diào)用
7.6函數(shù)的遞歸調(diào)用7.7數(shù)組作為函數(shù)參數(shù)
7.8局部變量和全局變量7.9變量的存儲(chǔ)方式和生存期7.10關(guān)于變量的聲明和定義7.11內(nèi)部函數(shù)和外部函數(shù)7.1為什么要用函數(shù)mainabcfghdeie說(shuō)明:(1)一個(gè)C程序由一個(gè)或多個(gè)程序模塊組成,每一個(gè)程序模塊作為一個(gè)源程序文件。對(duì)較大的程序,一般不希望把所有內(nèi)容全放在一個(gè)文件中,而是將它們分別放在若干個(gè)源文件中,由若干個(gè)源程序文件組成一個(gè)C程序。這樣便于分別編寫(xiě)、分別編譯,提高調(diào)試效率。一個(gè)源程序文件可以為多個(gè)C程序共用。說(shuō)明:(2)一個(gè)源程序文件由一個(gè)或多個(gè)函數(shù)以及其他有關(guān)內(nèi)容(如預(yù)處理指令、數(shù)據(jù)聲明與定義等)組成。一個(gè)源程序文件是一個(gè)編譯單位,在程序編譯時(shí)是以源程序文件為單位進(jìn)行編譯的,而不是以函數(shù)為單位進(jìn)行編譯的。說(shuō)明:(3)C程序的執(zhí)行是從main函數(shù)開(kāi)始的,如果在main函數(shù)中調(diào)用其他函數(shù),在調(diào)用后流程返回到main函數(shù),在main函數(shù)中結(jié)束整個(gè)程序的運(yùn)行。說(shuō)明:(4)所有函數(shù)都是平行的,即在定義函數(shù)時(shí)是分別進(jìn)行的,是互相獨(dú)立的。一個(gè)函數(shù)并不從屬于另一個(gè)函數(shù),即函數(shù)不能嵌套定義。函數(shù)間可以互相調(diào)用,但不能調(diào)用main函數(shù)。main函數(shù)是被操作系統(tǒng)調(diào)用的。說(shuō)明:(5)從用戶使用的角度看,函數(shù)有兩種。庫(kù)函數(shù),它是由系統(tǒng)提供的,用戶不必自己定義而直接使用它們。應(yīng)該說(shuō)明,不同的C語(yǔ)言編譯系統(tǒng)提供的庫(kù)函數(shù)的數(shù)量和功能會(huì)有一些不同,當(dāng)然許多基本的函數(shù)是共同的。用戶自己定義的函數(shù)。它是用以解決用戶專門需要的函數(shù)。說(shuō)明:(6)從函數(shù)的形式看,函數(shù)分兩類。
①無(wú)參函數(shù)。無(wú)參函數(shù)一般用來(lái)執(zhí)行指定的一組操作。無(wú)參函數(shù)可以帶回或不帶回函數(shù)值,但一般以不帶回函數(shù)值的居多。
②有參函數(shù)。在調(diào)用函數(shù)時(shí),主調(diào)函數(shù)在調(diào)用被調(diào)用函數(shù)時(shí),通過(guò)參數(shù)向被調(diào)用函數(shù)傳遞數(shù)據(jù),一般情況下,執(zhí)行被調(diào)用函數(shù)時(shí)會(huì)得到一個(gè)函數(shù)值,供主調(diào)函數(shù)使用。7.3.2函數(shù)調(diào)用時(shí)的數(shù)據(jù)傳遞1.形式參數(shù)和實(shí)際參數(shù)在調(diào)用有參函數(shù)時(shí),主調(diào)函數(shù)和被調(diào)用函數(shù)之間有數(shù)據(jù)傳遞關(guān)系定義函數(shù)時(shí)函數(shù)名后面的變量名稱為“形式參數(shù)”(簡(jiǎn)稱“形參”)主調(diào)函數(shù)中調(diào)用一個(gè)函數(shù)時(shí),函數(shù)名后面參數(shù)稱為“實(shí)際參數(shù)”(簡(jiǎn)稱“實(shí)參”)實(shí)際參數(shù)可以是常量、變量或表達(dá)式,而形參只能是變量或數(shù)組。7.3.2函數(shù)調(diào)用時(shí)的數(shù)據(jù)傳遞2.實(shí)參和形參間的數(shù)據(jù)傳遞在調(diào)用函數(shù)過(guò)程中,系統(tǒng)會(huì)把實(shí)參的值傳遞給被調(diào)用函數(shù)的形參或者說(shuō),形參從實(shí)參得到一個(gè)值該值在函數(shù)調(diào)用期間有效,可以參加被調(diào)函數(shù)中的運(yùn)算實(shí)參和形參的類型必須一致。字符型和整型可以互相匹配C語(yǔ)言中實(shí)參對(duì)形參的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞。它僅由參數(shù)的對(duì)應(yīng)位置確定,與名字無(wú)關(guān)。7.3.2函數(shù)調(diào)用時(shí)的數(shù)據(jù)傳遞
例7.2輸入兩個(gè)整數(shù),要求輸出其中值較大者。要求用函數(shù)來(lái)找到大數(shù)。解題思路:(1)函數(shù)名應(yīng)是見(jiàn)名知意,今定名為max(2)由于給定的兩個(gè)數(shù)是整數(shù),返回主調(diào)函數(shù)的值(即較大數(shù))應(yīng)該是整型(3)max函數(shù)應(yīng)當(dāng)有兩個(gè)參數(shù),以便從主函數(shù)接收兩個(gè)整數(shù),因此參數(shù)的類型應(yīng)當(dāng)是整型7.3.2函數(shù)調(diào)用時(shí)的數(shù)據(jù)傳遞先編寫(xiě)max函數(shù):intmax(intx,inty){intz;z=x>y?x:y;return(z);}7.3.2函數(shù)調(diào)用時(shí)的數(shù)據(jù)傳遞在max函數(shù)上面,再編寫(xiě)主函數(shù)#include<stdio.h>intmain(){intmax(intx,inty);inta,b,c;printf(“twointegernumbers:");scanf(“%d,%d”,&a,&b);c=max(a,b);printf(“maxis%d\n”,c);}實(shí)參可以是常量、變量或表達(dá)式7.3.2函數(shù)調(diào)用時(shí)的數(shù)據(jù)傳遞
c=max(a,b);(main函數(shù))intmax(intx,inty)(max函數(shù)){intz;z=x>y?x:y;return(z);}7.3.3函數(shù)調(diào)用的過(guò)程在定義函數(shù)中指定的形參,在未出現(xiàn)函數(shù)調(diào)用時(shí),它們并不占內(nèi)存中的存儲(chǔ)單元。在發(fā)生函數(shù)調(diào)用時(shí),函數(shù)max的形參被臨時(shí)分配內(nèi)存單元。2a3bxy23實(shí)參形參7.3.3函數(shù)調(diào)用的過(guò)程調(diào)用結(jié)束,形參單元被釋放實(shí)參單元仍保留并維持原值,沒(méi)有改變?nèi)绻趫?zhí)行一個(gè)被調(diào)用函數(shù)時(shí),形參的值發(fā)生改變,不會(huì)改變主調(diào)函數(shù)的實(shí)參的值2a3bxy23實(shí)參形參【例】讀程序,寫(xiě)出運(yùn)行結(jié)果7.5函數(shù)的嵌套調(diào)用C語(yǔ)言的函數(shù)定義是互相平行、獨(dú)立的即函數(shù)不能嵌套定義但可以嵌套調(diào)用函數(shù)即調(diào)用一個(gè)函數(shù)的過(guò)程中,又可以調(diào)用另一個(gè)函數(shù)7.5函數(shù)的嵌套調(diào)用main函數(shù)①調(diào)用a函數(shù)⑨結(jié)束a函數(shù)③調(diào)用b函數(shù)⑦②⑧b函數(shù)⑤④⑥7.5函數(shù)的嵌套調(diào)用
例7.5輸入4個(gè)整數(shù),找出其中最大的數(shù)。用函數(shù)的嵌套調(diào)用來(lái)處理。解題思路:main中調(diào)用max4函數(shù),找4個(gè)數(shù)中最大者max4中再調(diào)用max2,找兩個(gè)數(shù)中的大者max4中多次調(diào)用max2,可找4個(gè)數(shù)中的大者,然后把它作為函數(shù)值返回main函數(shù)main函數(shù)中輸出結(jié)果#include<stdio.h>intmain(){intmax4(inta,intb,intc,intd);inta,b,c,d,max;printf(“4intergernumbers:");scanf("%d%d%d%d",&a,&b,&c,&d);max=max4(a,b,c,d);printf("max=%d\n",max);return0;}主函數(shù)對(duì)max4
函數(shù)聲明#include<stdio.h>intmain(){intmax4(inta,intb,intc,intd);inta,b,c,d,max;printf(“4intergernumbers:");scanf("%d%d%d%d",&a,&b,&c,&d);max=max4(a,b,c,d);printf("max=%d\n",max);return0;}主函數(shù)輸入4個(gè)整數(shù)#include<stdio.h>intmain(){intmax4(inta,intb,intc,intd);inta,b,c,d,max;printf(“4intergernumbers:");scanf("%d%d%d%d",&a,&b,&c,&d);max=max4(a,b,c,d);printf("max=%d\n",max);return0;}主函數(shù)調(diào)用后肯定是4個(gè)數(shù)中最大者輸出最大者intmax4(inta,intb,intc,intd){intmax2(inta,intb);intm;m=max2(a,b);m=max2(m,c);m=max2(m,d);return(m);}max4函數(shù)對(duì)max2
函數(shù)聲明intmax4(inta,intb,intc,intd){intmax2(inta,intb);intm;m=max2(a,b);m=max2(m,c);m=max2(m,d);return(m);}max4函數(shù)a,b中較大者a,b,c中較大者a,b,c,d中最大者intmax4(inta,intb,intc,intd){intmax2(inta,intb);intm;m=max2(a,b);m=max2(m,c);m=max2(m,d);return(m);}max4函數(shù)intmax2(inta,intb){if(a>=b)returna;elsereturnb;}max2函數(shù)找a,b中較大者intmax4(inta,intb,intc,intd){intmax2(inta,intb);intm;m=max2(a,b);m=max2(m,c);m=max2(m,d);return(m);}max4函數(shù)intmax2(inta,intb){if(a>=b)returna;elsereturnb;
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 天津市東麗區(qū)2025年初三聯(lián)測(cè)促改英語(yǔ)試題含答案
- 江蘇省南京信息工程大學(xué)附屬小學(xué)2025年五年級(jí)數(shù)學(xué)第二學(xué)期期末檢測(cè)模擬試題含答案
- 云南省紅河市達(dá)標(biāo)名校2024-2025學(xué)年初三第五次月考化學(xué)試題試卷化學(xué)試題含解析
- 江蘇省蘇州市高新區(qū)達(dá)標(biāo)名校2025年初三下學(xué)期學(xué)習(xí)能力診斷生物試題含解析
- 浙江省寧波鄞州區(qū)重點(diǎn)中學(xué)2025年初三下學(xué)期第二次統(tǒng)測(cè)化學(xué)試題含解析
- 康平縣2025屆四年級(jí)數(shù)學(xué)第二學(xué)期期末經(jīng)典模擬試題含解析
- 智慧農(nóng)業(yè)開(kāi)啟農(nóng)業(yè)生產(chǎn)新紀(jì)元
- 天然氣運(yùn)輸合同2025年
- 住房公積金貸款合同書(shū)
- 鋁墻面板采購(gòu)合同樣本
- 【政治】做中華傳統(tǒng)美德的踐行者課件-+2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)下冊(cè)
- 養(yǎng)老院消防預(yù)案和應(yīng)急預(yù)案
- 2024年大學(xué)生心理健康知識(shí)競(jìng)賽題庫(kù)及答案共180題
- 夫妻忠誠(chéng)協(xié)議書(shū)(完整版)
- 水利基礎(chǔ)理論知識(shí)單選題100道及答案解析
- 2024年面向雙高電力系統(tǒng)發(fā)展需求的柔性直流輸電技術(shù)報(bào)告
- 發(fā)酵類制藥工業(yè)水污染物間接排放標(biāo)準(zhǔn)DB41 758-2012
- 2025年中考?xì)v史復(fù)習(xí)專項(xiàng)訓(xùn)練:中國(guó)近代史材料題40題(原卷版)
- 2024年手工木工職業(yè)技能競(jìng)賽理論考試題庫(kù)-下(多選、判斷題)
- 2024上半年浙江杭州市臨平區(qū)機(jī)關(guān)事業(yè)單位編外用工招聘61人歷年高頻500題難、易錯(cuò)點(diǎn)模擬試題附帶答案詳解
- 有限空間作業(yè)氣體檢測(cè)記錄表
評(píng)論
0/150
提交評(píng)論