秋季學(xué)期期末復(fù)習_第1頁
秋季學(xué)期期末復(fù)習_第2頁
秋季學(xué)期期末復(fù)習_第3頁
秋季學(xué)期期末復(fù)習_第4頁
秋季學(xué)期期末復(fù)習_第5頁
已閱讀5頁,還剩251頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

期末復(fù)習考試形式:2016秋季學(xué)期示例平時:綜合作業(yè)15分考勤:5分期末:筆試+上機考試60+20分考試題型選擇題(共20題,每題2分,共40分);其中結(jié)構(gòu)體部分(第九章一道選擇題);文件部分(第十章一道選擇題)填空題(共7

題(10空),每題2分,共20分)編程題(共5題,每題8分,共40分)第3章數(shù)據(jù)類型、運算符與表達式是語言的基本成分,是組成程序的基本元素,要掌握。熟悉各種基本數(shù)據(jù)類型的常量和變量:常量的表示形式;變量的定義、變量初始化、變量賦值熟悉常用運算符的定義及優(yōu)先級別。會計算各表達式的值重點:

輸入輸出函數(shù)的各種使用方式,如八進制,十進制,十六進制的輸入輸出。自增和自減運算符的使用。賦值和計算時的類型轉(zhuǎn)換(自動和強制)。逗號表達式的使用。3.2.1常量和變量1.常量:在程序運行過程中,其值不能被改變的量整型常量:如1000,12345,0,-345實型常量十進制小數(shù)形式:如0.34-56.790.0指數(shù)形式:如12.34e3(代表12.34103)字符常量:如’?’轉(zhuǎn)義字符:如’\n’字符串常量:如”boy”符號常量:#definePI3.14163.2.1常量和變量2.變量:在程序運行期間,變量的值是可以改變的變量必須先定義,后使用定義變量時指定該變量的名字和類型變量名和變量值是兩個不同的概念變量名實際上是以一個名字代表的一個存儲地址從變量中取值,實際上是通過變量名找到相應(yīng)的內(nèi)存地址,從該存儲單元中讀取數(shù)據(jù)3.2.1常量和變量3.常變量:constinta=3;4.標識符:一個對象的名字C語言規(guī)定標識符只能由字母、數(shù)字和下劃線3種字符組成,且第一個字符必須為字母或下劃線合法的標識符:如sum,average,_total,Class,day,BASIC,li_ling不合法的標識符:M.D.John,¥123,#33,3D64,a>b大小寫字母是不同的字符3.2.7運算符和表達式1.基本的算術(shù)運算符:+:正號運算符(單目運算符)-:負號運算符(單目運算符)*:乘法運算符/:除法運算符%:求余運算符+:加法運算符-:減法運算符3.2.7運算符和表達式說明兩個整數(shù)相除的結(jié)果為整數(shù)如5/3的結(jié)果值為1,舍去小數(shù)部分如果除數(shù)或被除數(shù)中有一個為負值,舍入方向不固定。例如,-5/3,有的系統(tǒng)中得到的結(jié)果為-1,在有的系統(tǒng)中則得到結(jié)果為-2;1/2=?VC++采取“向零取整”的方法

如5/3=1,-5/3=-1,取整后向零靠攏%運算符要求參加運算的運算對象(即操作數(shù))為整數(shù),結(jié)果也是整數(shù)。余數(shù)符號與被除數(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運算符和表達式C沒有乘方運算,冪運算采用庫函數(shù)pow(x,y)2.自增、自減運算符:作用是使變量的值加1或減1++i,--i:在使用i之前,先使i的值加(減)1i++,i--:在使用i之后,使i的值加(減)1++/--運算符注意:++、--只能作用于變量,不能用于表達式和常量,如:22++、++(a+b)錯誤右結(jié)合性-i++-(i++)不建議++、--運算符連用,如果要在一條語句中將特定變量自增自減不止一次時,最好分多條語句執(zhí)行,而不要在一條語句中自增自減多次3.2.7運算符和表達式3.算術(shù)表達式和運算符的優(yōu)先級與結(jié)合性:用算術(shù)運算符和括號將運算對象(也稱操作數(shù))連接起來的、符合C語法規(guī)則的式子,稱為C算術(shù)表達式運算對象包括常量、變量、函數(shù)等C語言規(guī)定了運算符的優(yōu)先級和結(jié)合性3.算術(shù)表達式和運算符的優(yōu)先級與結(jié)合性()圓括號-,++,--單目運算符,取負、自加、自減*、/、%雙目運算符,乘、除、取模+、-雙目運算符,加、減雙目算術(shù)運算符:左結(jié)合單目運算符取負“-”、“++”、“--”:右結(jié)合高低3.2.7運算符和表達式6.C運算符(1)算術(shù)運算符

(+-*/%++--)(2)關(guān)系運算符

(><==>=<=?。剑?3)邏輯運算符

(?。Γ|)(4)位運算符

(<<>>~|∧&)(5)賦值運算符

(=及其擴展賦值運算符)(6)條件運算符

(?:)寫出下列式子的C表達式:

寫出下列C表達式的值:(x=4*5,x*5),x+25(逗號表達式)i=6;j=(++i)+(i++);i,j各為多少?!2+1>2&&15%5+2a=12;a-=a*a;3.3C語句3.3.1C語句的作用和分類3.3.2最基本的語句----賦值語句歸納總結(jié):1.賦值運算符2.復(fù)合的賦值運算符在賦值符“=”之前加上其他運算符,可以構(gòu)成復(fù)合的運算符+=-=*=/=%=a+=b等價于a=a+bx*=y+8等價于x=x*(y+8)X%=y/3等價于x=x%(y/3)歸納總結(jié):1.賦值運算符2.復(fù)合的賦值運算符3.賦值表達式一般形式為:

變量

賦值運算符

表達式對賦值表達式求解的過程:求賦值運算符右側(cè)的“表達式”的值賦給賦值運算符左側(cè)的變量歸納總結(jié):

3.賦值表達式賦值表達式“a=3*5”的值為15,對表達式求解后,變量a的值和表達式的值都是15“a=(b=5)”和“a=b=5”等價“a=b”和“b=a”含義不同例:a=5+(c=6)后a=11

a=b=c=5后a=5問:inta=12;a+=a-=a*aa=?歸納總結(jié):1.賦值運算符2.復(fù)合的賦值運算符3.賦值表達式4.賦值過程中的類型轉(zhuǎn)換兩側(cè)類型一致時,直接賦值兩側(cè)類型不一致,但都是算術(shù)類型時,自動將右側(cè)的類型轉(zhuǎn)換為左側(cè)類型后賦值定義變量時要防止數(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ù)輸入輸出的概念幾乎每一個C程序都包含輸入輸出輸入輸出是程序中最基本的操作之一3.4.2有關(guān)數(shù)據(jù)輸入輸出的概念(1)所謂輸入輸出是以計算機主機為主體而言的從計算機向輸出設(shè)備(如顯示器、打印機等)輸出數(shù)據(jù)稱為輸出從輸入設(shè)備(如鍵盤、磁盤、光盤、掃描儀等)向計算機輸入數(shù)據(jù)稱為輸入3.4.2有關(guān)數(shù)據(jù)輸入輸出的概念(2)C語言本身不提供輸入輸出語句輸入和輸出操作是由C標準函數(shù)庫中的函數(shù)來實現(xiàn)的printf和scanf不是C語言的關(guān)鍵字,而只是庫函數(shù)的名字putchar、getchar、puts、gets3.4.2有關(guān)數(shù)據(jù)輸入輸出的概念(3)在使用輸入輸出函數(shù)時,要在程序文件的開頭用預(yù)編譯指令#include<stdio.h>或#include″stdio.h″3.4.3用printf函數(shù)輸出數(shù)據(jù)在C程序中用來實現(xiàn)輸出和輸入的,主要是printf函數(shù)和scanf函數(shù)這兩個函數(shù)是格式輸入輸出函數(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);可以是常量、變量或表達式3.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符d格式符。用來輸出一個有符號的十進制整數(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格式符。用來輸出一個字符charch=’a’;printf(”%c”,ch);或printf(”%5c”,ch);輸出字符:a3.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符s格式符。用來輸出一個字符串printf(”%s”,”CHINA”);輸出字符串:CHINA3.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符f格式符。用來輸出實數(shù),以小數(shù)形式輸出①不指定數(shù)據(jù)寬度和小數(shù)位數(shù),用%f

例3.6用%f輸出實數(shù),只能得到6位小數(shù)。doublea=1.0;printf(”%f\n”,a/3);3.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符f格式符。用來輸出實數(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格式符。用來輸出實數(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格式符。用來輸出實數(shù),以小數(shù)形式輸出③輸出的數(shù)據(jù)向左對齊,用%-m.nf3.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符f格式符。用來輸出實數(shù),以小數(shù)形式輸出float型數(shù)據(jù)只能保證6位有效數(shù)字double型數(shù)據(jù)能保證15位有效數(shù)字計算機輸出的數(shù)字不都是絕對精確有效的3.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符e格式符。指定以指數(shù)形式輸出實數(shù)%e,VC++給出小數(shù)位數(shù)為6位

指數(shù)部分占5列

小數(shù)點前必須有而且只有1位非零數(shù)字printf(”%e”,123.456);

輸出:1.234560

e+0023.4.3用printf函數(shù)輸出數(shù)據(jù)2.常用格式字符e格式符。指定以指數(shù)形式輸出實數(shù)%m.neprintf(”%13.2e”,123.456);

輸出:1.23e+002(前面有4個空格)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ù)中的格式聲明相似以%開始,以一個格式字符結(jié)束,中間可以插入附加的字符scanf("a=%f,b=%f,c=%f",&a,&b,&c);3.4.4用scanf函數(shù)輸入數(shù)據(jù)3.使用scanf函數(shù)時應(yīng)注意的問題scanf(”%f%f%f”,a,b,c);錯scanf(”%f%f%f”,&a,&b,&c);對對于scanf("a=%f,b=%f,c=%f",&a,&b,&c);

132↙

a=1,b=3,c=2↙

a=1b=3c=2↙

錯3.4.4用scanf函數(shù)輸入數(shù)據(jù)3.使用scanf函數(shù)時應(yīng)注意的問題對于scanf(”%c%c%c”,&c1,&c2,&c3);

abc↙

abc↙

錯對于scanf(”%d%c%f”,&a,&b,&c);若輸入

1234a123o.26↙3.4.4用scanf函數(shù)輸入數(shù)據(jù)3.使用scanf函數(shù)時應(yīng)注意的問題對于scanf(”%c%c%c”,&c1,&c2,&c3);

abc↙

abc↙

錯對于scanf(”%d%c%f”,&a,&b,&c);若輸入

1234a123o.26↙3.4.4用scanf函數(shù)輸入數(shù)據(jù)3.使用scanf函數(shù)時應(yīng)注意的問題對于scanf(”%c%c%c”,&c1,&c2,&c3);

abc↙

abc↙

錯對于scanf(”%d%c%f”,&a,&b,&c);若輸入

1234a123o.26↙3.4.5字符數(shù)據(jù)的輸入輸出1.用putchar函數(shù)輸出一個字符從計算機向顯示器輸出一個字符putchar函數(shù)的一般形式為:putchar(c)3.4.5字符數(shù)據(jù)的輸入輸出2.用getchar函數(shù)輸入一個字符向計算機輸入一個字符getchar函數(shù)的一般形式為:getchar()第4章選擇結(jié)構(gòu)程序設(shè)計4.1選擇結(jié)構(gòu)和條件判斷4.2用if語句實現(xiàn)選擇結(jié)構(gòu)4.3關(guān)系運算符和關(guān)系表達式4.4邏輯運算符和邏輯表達式4.5條件運算符和條件表達式4.6選擇結(jié)構(gòu)的嵌套4.7用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)4.8選擇結(jié)構(gòu)程序綜合舉例4.1選擇結(jié)構(gòu)和條件判斷C語言有兩種選擇語句:(1)if語句,實現(xiàn)兩個分支的選擇結(jié)構(gòu)(2)switch語句,實現(xiàn)多分支的選擇結(jié)構(gòu)4.2.2if語句的一般形式if(表達式)語句1[else語句2]關(guān)系表達式邏輯表達式數(shù)值表達式方括號內(nèi)的部分為可選的4.2.2if語句的一般形式if(表達式)語句1[else語句2]簡單的語句復(fù)合語句另一個if語句等最常用的3種if語句形式:1.if(表達式)語句1(沒有else子句)2.if(表達式)語句1else語句2(有else子句)3.if(表達式1)

語句1elseif(表達式2)語句2elseif(表達式3)語句3

┆elseif(表達式m)語句melse語句m+1(在else部分又嵌套了多層的if語句)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;等價于分號不能丟說明:(1)整個if語句可寫在多行上,也可寫在一行上但都是一個整體,屬于同一個語句(2)“語句1”…“語句m”是if中的內(nèi)嵌語句

內(nèi)嵌語句也可以是一個if語句(3)“語句1”…“語句m”可以是簡單的語句,也可以是復(fù)合語句4.3關(guān)系運算符和關(guān)系表達式4.3.1關(guān)系運算符及其優(yōu)先次序4.3.2關(guān)系表達式4.3.1關(guān)系運算符及其優(yōu)先次序關(guān)系運算符:用來對兩個數(shù)值進行比較的比較運算符C語言提供6種關(guān)系運算符:①<(小于)②<=(小于或等于)③>(大于)④>=(大于或等于)

⑤==(等于)⑥!=(不等于)優(yōu)先級相同(高)優(yōu)先級相同(低)4.3.1關(guān)系運算符及其優(yōu)先次序關(guān)系、算術(shù)、賦值運算符的優(yōu)先級算術(shù)運算符(高)賦值運算符(低)關(guān)系運算符4.3.1關(guā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)系表達式關(guān)系表達式用關(guān)系運算符將兩個數(shù)值或數(shù)值表達式連接起來的式子關(guān)系表達式的值是一個邏輯值,即“真”或“假”在C的邏輯運算中,以“1”代表“真”,以“0”代表“假”4.4邏輯運算符和邏輯表達式4.4.1邏輯運算符及其優(yōu)先次序4.4.2邏輯表達式4.4.3邏輯型變量4.4.1邏輯運算符及其優(yōu)先次序3種邏輯運算符:&&(邏輯與)||(邏輯或)!(邏輯非)&&和||是雙目(元)運算符!是一目(元)運算符邏輯表達式用邏輯運算符將關(guān)系表達式或其他邏輯量連接起來的式子4.4.1邏輯運算符及其優(yōu)先次序ab!a!ba&&ba||b真真假假真真真假假真假真假真真假假真假假真真假假邏輯運算的真值表4.4.1邏輯運算符及其優(yōu)先次序邏輯運算符的優(yōu)先次序!→&&→||(!為三者中最高)與其他運算符的優(yōu)先次序!(高)算術(shù)運算符關(guān)系運算符&&和||賦值運算符(低)4.4.2邏輯表達式邏輯表達式的值應(yīng)該是邏輯量“真”或“假”編譯系統(tǒng)在表示邏輯運算結(jié)果時以數(shù)值1代表“真”,以0代表“假”但在判斷一個量是否為“真”時以0代表“假”,以非0代表“真”注意:將一個非零的數(shù)值認作為“真”4.4.2邏輯表達式(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邏輯表達式修改后的邏輯運算真值表ab!a!ba&&ba||b非0非00011非000101假非01001假011004.5條件運算符和條件表達式有一種if語句,當被判別的表達式的值為“真”或“假”時,都執(zhí)行一個賦值語句且向同一個變量賦值如:if(a>b)max=a;elsemax=b;max=(a>b)?a

:b;條件運算符4.5條件運算符和條件表達式有一種if語句,當被判別的表達式的值為“真”或“假”時,都執(zhí)行一個賦值語句且向同一個變量賦值如:if(a>b)max=a;elsemax=b;max=(a>b)?a

:b;條件表達式4.5條件運算符和條件表達式條件表達式的一般形式為表達式1?表達式2:

表達式34.5條件運算符和條件表達式條件運算符的執(zhí)行順序:求解表達式1若為非0(真)則求解表達式2,此時表達式2的值就作為整個條件表達式的值若表達式1的值為0(假),則求解表達式3,表達式3的值就是整個條件表達式的值4.5條件運算符和條件表達式條件運算符優(yōu)先于賦值運算符條件運算符的結(jié)合方向為“自右至左”以下為合法的使用方法:a>b?(max=a):(max=b);a>b?printf(“%d”,a):printf(“%d”,b);4.7用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)switch語句用來實現(xiàn)多分支選擇結(jié)構(gòu)學(xué)生成績分類85分以上為’A’等70~84分為’B’等60~69分為’C’等……人口統(tǒng)計分類

按年齡分為老、中、青、少、兒童switch語句的作用是根據(jù)表達式的值,使流程跳轉(zhuǎn)到不同的語句switch語句的一般形式:switch(表達式){case常量1:語句1case常量2:語句2

┇case常量n:語句ndefault:語句n+1}整數(shù)類型(包括字符型)switch語句的作用是根據(jù)表達式的值,使流程跳轉(zhuǎn)到不同的語句switch語句的一般形式:switch(表達式){case常量1:語句1case常量2:語句2

┇case常量n:語句ndefault:語句n+1}不能相同分段函數(shù)例:例:讀程序,給出程序的運行結(jié)果第5章循環(huán)結(jié)構(gòu)程序設(shè)計5.1為什么需要循環(huán)控制5.2用while語句實現(xiàn)循環(huán)5.3用do---while語句實現(xiàn)循環(huán)5.4用for語句實現(xiàn)循環(huán)5.5循環(huán)的嵌套5.6幾種循環(huán)的比較5.7改變循環(huán)執(zhí)行的狀態(tài)5.8循環(huán)程序舉例重點:

三種基本循環(huán)結(jié)構(gòu)的使用,while和do…while的區(qū)別,for結(jié)構(gòu)中三個表達式的作用 判斷素數(shù)算法 遞推算法 求n個數(shù)的和,平均值,最大值,最小值等拆數(shù)算法:如數(shù)值轉(zhuǎn)換(學(xué)會使用n=n/d和r=n%d)窮舉算法,如水仙花數(shù)實現(xiàn)循環(huán)的語句(四種)1、用goto語句和if語句構(gòu)成循環(huán);

(不提倡)2、用while語句;

(當型循環(huán)—先判斷后執(zhí)行)3、用do-while語句;

(直到型循環(huán)—先執(zhí)行后判斷)4、用for語句。

(多功能)while語句的一般形式如下:while(表達式)語句;循環(huán)體表達式語句N-S圖while語句的一般形式如下:while(表達式)語句“真”時執(zhí)行循環(huán)體語句“假”時不執(zhí)行循環(huán)條件表達式while循環(huán)的特點是:先判斷條件表達式,后執(zhí)行循環(huán)體語句注意:若循環(huán)體包含一條以上的語句,應(yīng)以復(fù)合語句的形式出現(xiàn);循環(huán)前,必須給循環(huán)控制變量賦初值;循環(huán)體中,必須有改變循環(huán)控制變量值的語句(使循環(huán)趨于結(jié)束的語句);循環(huán)體可以為空。例:while((c=getchar())!=‘A’);等價于c=getchar();while(c!=‘A’)c=getchar();5.3用do---while語句實現(xiàn)循環(huán)do---while語句的特點:先無條件地執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立do---while語句的一般形式為:do

語句while(表達式);表達式Y(jié)N循環(huán)體語句分號不能省略,

切記5.4用for語句實現(xiàn)循環(huán)for語句的一般形式為for(表達式1;表達式2;表達式3)

語句設(shè)置初始條件,只執(zhí)行一次。可以為零個、一個或多個變量設(shè)置初值執(zhí)行5.4用for語句實現(xiàn)循環(huán)for語句的一般形式為for(表達式1;表達式2;表達式3)

語句循環(huán)條件表達式,用來判定是否繼續(xù)循環(huán)。在每次執(zhí)行循環(huán)體前先執(zhí)行此表達式,決定是否繼續(xù)執(zhí)行循環(huán)5.4用for語句實現(xiàn)循環(huán)for語句的一般形式為for(表達式1;表達式2;表達式3)

語句作為循環(huán)的調(diào)整器,例如使循環(huán)變量增值,它是在執(zhí)行完循環(huán)體后才進行的5.4用for語句實現(xiàn)循環(huán)for語句的執(zhí)行過程:(1)先求解表達式1(2)求解表達式2,若其值為真,執(zhí)行循環(huán)體,然后執(zhí)行下面第(3)步。若為假,則結(jié)束循環(huán),轉(zhuǎn)到第(5)步(3)求解表達式3(4)轉(zhuǎn)回上面步驟(2)繼續(xù)執(zhí)行(5)循環(huán)結(jié)束,執(zhí)行for語句下面的一個語句求解表達式1表達式2語句求解表達式35.4用for語句實現(xiàn)循環(huán)for語句不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況,還可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況for語句完全可以代替while語句5.7改變循環(huán)執(zhí)行的狀態(tài)5.7.1用break語句提前終止循環(huán)5.7.2用continue語句提前結(jié)束本次循環(huán)5.7.3break語句和continue語句的區(qū)別5.7.1用break語句提前終止循環(huán)break語句可以用來從循環(huán)體內(nèi)跳出循環(huán)體,即提前結(jié)束循環(huán),接著執(zhí)行循環(huán)下面的語句[例]判斷m是否為素數(shù)

輸入mk=sqrt(m)i=2i<=km%i為0是否結(jié)束循環(huán)i++i>=k+1是否m是素數(shù)m不是素數(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是素數(shù)”,m)elseprintf(“%d是合數(shù)”,m);}結(jié)束循環(huán),即轉(zhuǎn)到for循環(huán)的下一語句。Break總是作if的內(nèi)嵌語句flag=1{flag=0;break;}flag5.7.2用continue語句提前結(jié)束本次循環(huán)有時并不希望終止整個循環(huán)的操作,而只希望提前結(jié)束本次循環(huán),而接著執(zhí)行下次循環(huán)。這時可以用continue語句5.7.2用continue語句提前結(jié)束本次循環(huán)

例5.5要求輸出100~200之間的不能被3整除的數(shù)。(不能被3也不能被7)編程思路:對100到200之間的每一個整數(shù)進行檢查如果不能被3整除,輸出,否則不輸出無論是否輸出此數(shù),都要接著檢查下一個數(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語句和continue語句的區(qū)別continue語句只結(jié)束本次循環(huán),而不是終止整個循環(huán)的執(zhí)行break語句結(jié)束整個循環(huán)過程,不再判斷執(zhí)行循環(huán)的條件是否成立N表達式1Y表達式2N……Y…………N表達式1Y表達式2NY…………break語句continue語句強行退出循環(huán)只結(jié)束本次循環(huán)

例5.9輸入一個大于3的整數(shù)n,判定它是否素數(shù)(prime,又稱質(zhì)數(shù))。解題思路:讓n被i整除(i的值從2變到n-1)如果n能被2~(n-1)之中任何一個整數(shù)整除,則表示n肯定不是素數(shù),不必再繼續(xù)被后面的整數(shù)除,因此,可以提前結(jié)束循環(huán)注意:此時i的值必然小于nNNYn=i+1輸入ni=2i≤n-1Yn被i整除i≤a輸出不是素數(shù)Y輸出是素數(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間的全部素數(shù)。(非素數(shù)之和)解題思路:使用例5.9的算法在例5.9程序中只要增加一個外循環(huán),先后對100~200間的全部整數(shù)一一進行判定即可

……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”);}……只對奇數(shù)進行檢查控制每行輸出10個數(shù)據(jù)例:求100~1000之間的“水仙花”數(shù)。如:153=1^3+5^3+3^3“水仙花”數(shù):水仙花數(shù)是指一個n位數(shù)(n≥3),它的每個位上的數(shù)字的n次冪之和等于它本身。水仙花數(shù)只是自冪數(shù)的一種,嚴格來說三位數(shù)的3次冪數(shù)才成為水仙花數(shù)。例:讀程序,寫出程序運行結(jié)果7c98例:猴子吃桃。猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個。第二天早上又將剩下的桃子吃掉一半,又多吃一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘多少桃子。分析:由"到第10天早上想再吃時,見只剩下一個桃子了"可知,事實上在第九天吃過后就只有一個了.我們用total(day)來表示每一天的桃子數(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個。/n",sum);}例:試找出滿足下列條件的所有三位數(shù)其百位數(shù)不大于2將個位與百位對換,得到的三位數(shù)是原三位數(shù)的兩倍多分析:用三重循環(huán)的循環(huán)控制變量分別表示百位數(shù)、十位數(shù)和個位數(shù)百位數(shù)i取值1~2十位數(shù)j取值0~9個位數(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表示原來的三位數(shù)i=101~299百位數(shù)n1=i/100十位數(shù)n2=(i-n1*100)/10個位數(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ī)律的,下標代表數(shù)據(jù)在數(shù)組中的序號用一個數(shù)組名和下標惟一確定數(shù)組中的元素數(shù)組中的每一個元素都屬于同一個數(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ù)組名[常量表達式];數(shù)組名的命名規(guī)則和變量名相同如inta[10];數(shù)組名6.1.1怎樣定義一維數(shù)組定義一維數(shù)組的一般形式為:

類型符

數(shù)組名[常量表達式];數(shù)組名的命名規(guī)則和變量名相同如inta[10];數(shù)組長度6.1.1怎樣定義一維數(shù)組定義一維數(shù)組的一般形式為:

類型符

數(shù)組名[常量表達式];數(shù)組名的命名規(guī)則和變量名相同如inta[10];10個元素:a[0],a[1],a[2],…,a[9]每個元素的數(shù)據(jù)類型a[0]a[1]a[2]a[3]…a[7]a[8]a[9]6.1.1怎樣定義一維數(shù)組定義一維數(shù)組的一般形式為:

類型符

數(shù)組名[常量表達式];inta[4+6];合法intn=10;inta[n];intA[10],b[5];charc[8];floatX[20],y[4*M+1],w[5];&&(M是符號常量)不合法6.1.2怎樣引用一維數(shù)組元素引用數(shù)組元素的表示形式為:

數(shù)組名[下標]如a[0]=a[5]+a[7]-a[2*3]合法intn=5,a[10];a[n]=20;合法6.1.3一維數(shù)組的初始化在定義數(shù)組的同時,給各數(shù)組元素賦值inta[10]={0,1,2,3,4,5,6,7,8,9};inta[10]={0,1,2,3,4};相當于inta[10]={0,1,2,3,4,0,0,0,0,0};inta[10]={0,0,0,0,0,0,0,0,0,0};相當于inta[10]={0};inta[5]={1,2,3,4,5};可寫為inta[]={1,2,3,4,5};6.3.1怎樣定義字符數(shù)組6.3.2字符數(shù)組的初始化6.3.3怎樣引用字符數(shù)組中的元素6.3.4字符串和字符串結(jié)束標志6.3.5字符數(shù)組的輸入輸出6.3.6善于使用字符串處理函數(shù)6.3.7字符數(shù)組應(yīng)用舉例6.3字符數(shù)組一、字符數(shù)組的定義在C語言中,沒有專門的字符串變量,而是將字符串存入字符數(shù)組來處理

即用一個一維數(shù)組來存放一個字符串,每個元素存放一個字符

字符數(shù)組是數(shù)組的一個特殊情況,但它的定義方法與上述介紹的類似;引用方法可以與上述介紹類同,也有其獨特的引用方法

由于字符型與整型是互相通用的,因此上面定義可改為:定義形式:

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語言中,將字符串作為字符數(shù)組來處理,即用一個一維數(shù)組來存放一個字符串。如:c[10]存放字符串“Iamhappy”。

為了測定實際字符串的長度,C語言規(guī)定了一個“字符串結(jié)束標志”,即遇到字符’\0’時,表示字符串結(jié)束。在C語言中,是將字符串作為字符數(shù)組來處理的關(guān)心的是字符串的有效長度而不是字符數(shù)組的長度為了測定字符串的實際長度,C語言規(guī)定了字符串結(jié)束標志’\0’6.3.4字符串和字符串結(jié)束標志’\0’代表ASCII碼為0的字符從ASCII碼表可以查到,ASCII碼為0的字符不是一個可以顯示的字符,而是一個“空操作符”,即它什么也不做用它作為字符串結(jié)束標志不會產(chǎn)生附加的操作或增加有效字符,只起一個供辨別的標志6.3.4字符串和字符串結(jié)束標志charc[]={”Iamhappy”};可寫成charc[]=”Iamhappy”;相當于charc[11]={”Iamhappy”};6.3.4字符串和字符串結(jié)束標志charc[10]={”China”};可寫成charc[10]=”China”;從c[5]開始,元素值均為\0只顯示printf(”%s”,c);6.3.4字符串和字符串結(jié)束標志China\0\0\0\0\0字符數(shù)組的輸入輸出可以有兩種方法:

逐個字符輸入輸出(%c)

整個字符串一次輸入輸出(%s)輸出的字符中不包括結(jié)束符’\0’用%s輸出字符串時,printf函數(shù)中的輸出項是字符數(shù)組名,不是數(shù)組元素名6.3.5字符數(shù)組的輸入輸出1、逐個字符數(shù)組元素輸入輸出:用%c格式符描述

例:scanf(“%c”,&a[i]);printf(“%c%c%c”,a[0],a[2],a[3]);2、整個字符串(數(shù)組)輸入輸出:用%s格式符描述

例:chara[]=“china”;scanf(”%s”,a);printf(“%s”,a);如果一個字符數(shù)組中包含多個’\0’,則遇第一個’\0’時輸出就結(jié)束可以用scanf函數(shù)輸入一個字符串scanf函數(shù)中的輸入項c是已定義的字符數(shù)組名,輸入的字符串應(yīng)短于已定義的字符數(shù)組的長度6.3.5字符數(shù)組的輸入輸出charc[6];scanf(”%s”,c);China↙系統(tǒng)自動在China后面加一個’\0’注:用%s輸入時,遇空格或回車便認為一個字符串結(jié)束6.3.5字符數(shù)組的輸入輸出在C函數(shù)庫中提供了一些用來專門處理字符串的函數(shù),使用方便6.3.6善于使用字符串處理函數(shù)1.puts函數(shù)----輸出字符串的函數(shù)其一般形式為:puts(字符數(shù)組/字符串)作用是將一個字符串輸出到終端charstr[20]=”China”;puts(str);

輸出China6.3.6善于使用字符串處理函數(shù)2.gets函數(shù)----輸入字符串的函數(shù)(以回車結(jié)束)其一般形式為:gets(字符數(shù)組)作用是輸入一個字符串到字符數(shù)組charstr[20];gets(str);

Computer↙6.3.6善于使用字符串處理函數(shù)3.strcat函數(shù)----字符串連接函數(shù)其一般形式為:strcat(字符數(shù)組1,字符數(shù)組2)其作用是把兩個字符串連接起來,把字符串2接到字符串1的后面,結(jié)果放在字符數(shù)組1中6.3.6善于使用字符串處理函數(shù)使用字符串函數(shù)時,在程序開頭用#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);相當于strcpy(str1,”China”);6.3.6善于使用字符串處理函數(shù)4.strcpy和strncpy函數(shù)-字符串復(fù)制charstr1[10],str2[]=”China”;str1=”China”;錯誤str1=str2;錯誤6.3.6善于使用字符串處理函數(shù)4.strcpy和strncpy函數(shù)-字符串復(fù)制可以用strncpy函數(shù)將字符串2中前面n個字符復(fù)制到字符數(shù)組1中去strncpy(str1,str2,2);作用是將str2中最前面2個字符復(fù)制到str1中,取代str1中原有的最前面2個字符復(fù)制的字符個數(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ī)則是:將兩個字符串自左至右逐個字符相比,直到出現(xiàn)不同的字符或遇到’\0’為止如全部字符相同,認為兩個字符串相等若出現(xiàn)不相同的字符,則以第一對不相同的字符的比較結(jié)果為準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ù)值為一個正整數(shù)如果字符串1<字符串2,則函數(shù)值為一個負整數(shù)6.3.6善于使用字符串處理函數(shù)5.strcmp函數(shù)----字符串比較函數(shù)if(str1>str2)printf(”yes”);錯誤if(strcmp(str1,str2)>0)printf(”yes”);正確6.3.6善于使用字符串處理函數(shù)6.strlen函數(shù)----測字符串長度的函數(shù)其一般形式為:strlen(字符數(shù)組)它是測試字符串長度的函數(shù)(不含‘\0’)函數(shù)的值為字符串中的實際長度6.3.6善于使用字符串處理函數(shù)6.strlen函數(shù)----測字符串長度的函數(shù)charstr[10]=”China”;printf(”%d”,strlen(str));輸出結(jié)果是5也可以直接測試字符串常量的長度strlen(”China”);6.3.6善于使用字符串處理函數(shù)7.strlwr函數(shù)----轉(zhuǎn)換為小寫的函數(shù)其一般形式為strlwr(字符串)函數(shù)的作用是將字符串中大寫字母換成小寫字母6.3.6善于使用字符串處理函數(shù)8.strupr函數(shù)----轉(zhuǎn)換為大寫的函數(shù)其一般形式為strupr(字符串)函數(shù)的作用是將字符串中小寫字母換成大寫字母6.3.6善于使用字符串處理函數(shù)第7章用函數(shù)實現(xiàn)模塊化程序設(shè)計7.1為什么要用函數(shù)

7.2怎樣定義函數(shù)7.3調(diào)用函數(shù)7.4對被調(diào)用函數(shù)的聲明和函數(shù)原型7.5函數(shù)的嵌套調(diào)用

7.6函數(shù)的遞歸調(diào)用7.7數(shù)組作為函數(shù)參數(shù)

7.8局部變量和全局變量7.9變量的存儲方式和生存期7.10關(guān)于變量的聲明和定義7.11內(nèi)部函數(shù)和外部函數(shù)7.1為什么要用函數(shù)mainabcfghdeie說明:(1)一個C程序由一個或多個程序模塊組成,每一個程序模塊作為一個源程序文件。對較大的程序,一般不希望把所有內(nèi)容全放在一個文件中,而是將它們分別放在若干個源文件中,由若干個源程序文件組成一個C程序。這樣便于分別編寫、分別編譯,提高調(diào)試效率。一個源程序文件可以為多個C程序共用。說明:(2)一個源程序文件由一個或多個函數(shù)以及其他有關(guān)內(nèi)容(如預(yù)處理指令、數(shù)據(jù)聲明與定義等)組成。一個源程序文件是一個編譯單位,在程序編譯時是以源程序文件為單位進行編譯的,而不是以函數(shù)為單位進行編譯的。說明:(3)C程序的執(zhí)行是從main函數(shù)開始的,如果在main函數(shù)中調(diào)用其他函數(shù),在調(diào)用后流程返回到main函數(shù),在main函數(shù)中結(jié)束整個程序的運行。說明:(4)所有函數(shù)都是平行的,即在定義函數(shù)時是分別進行的,是互相獨立的。一個函數(shù)并不從屬于另一個函數(shù),即函數(shù)不能嵌套定義。函數(shù)間可以互相調(diào)用,但不能調(diào)用main函數(shù)。main函數(shù)是被操作系統(tǒng)調(diào)用的。說明:(5)從用戶使用的角度看,函數(shù)有兩種。庫函數(shù),它是由系統(tǒng)提供的,用戶不必自己定義而直接使用它們。應(yīng)該說明,不同的C語言編譯系統(tǒng)提供的庫函數(shù)的數(shù)量和功能會有一些不同,當然許多基本的函數(shù)是共同的。用戶自己定義的函數(shù)。它是用以解決用戶專門需要的函數(shù)。說明:(6)從函數(shù)的形式看,函數(shù)分兩類。

①無參函數(shù)。無參函數(shù)一般用來執(zhí)行指定的一組操作。無參函數(shù)可以帶回或不帶回函數(shù)值,但一般以不帶回函數(shù)值的居多。

②有參函數(shù)。在調(diào)用函數(shù)時,主調(diào)函數(shù)在調(diào)用被調(diào)用函數(shù)時,通過參數(shù)向被調(diào)用函數(shù)傳遞數(shù)據(jù),一般情況下,執(zhí)行被調(diào)用函數(shù)時會得到一個函數(shù)值,供主調(diào)函數(shù)使用。7.3.2函數(shù)調(diào)用時的數(shù)據(jù)傳遞1.形式參數(shù)和實際參數(shù)在調(diào)用有參函數(shù)時,主調(diào)函數(shù)和被調(diào)用函數(shù)之間有數(shù)據(jù)傳遞關(guān)系定義函數(shù)時函數(shù)名后面的變量名稱為“形式參數(shù)”(簡稱“形參”)主調(diào)函數(shù)中調(diào)用一個函數(shù)時,函數(shù)名后面參數(shù)稱為“實際參數(shù)”(簡稱“實參”)實際參數(shù)可以是常量、變量或表達式,而形參只能是變量或數(shù)組。7.3.2函數(shù)調(diào)用時的數(shù)據(jù)傳遞2.實參和形參間的數(shù)據(jù)傳遞在調(diào)用函數(shù)過程中,系統(tǒng)會把實參的值傳遞給被調(diào)用函數(shù)的形參或者說,形參從實參得到一個值該值在函數(shù)調(diào)用期間有效,可以參加被調(diào)函數(shù)中的運算實參和形參的類型必須一致。字符型和整型可以互相匹配C語言中實參對形參的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞。它僅由參數(shù)的對應(yīng)位置確定,與名字無關(guān)。7.3.2函數(shù)調(diào)用時的數(shù)據(jù)傳遞

例7.2輸入兩個整數(shù),要求輸出其中值較大者。要求用函數(shù)來找到大數(shù)。解題思路:(1)函數(shù)名應(yīng)是見名知意,今定名為max(2)由于給定的兩個數(shù)是整數(shù),返回主調(diào)函數(shù)的值(即較大數(shù))應(yīng)該是整型(3)max函數(shù)應(yīng)當有兩個參數(shù),以便從主函數(shù)接收兩個整數(shù),因此參數(shù)的類型應(yīng)當是整型7.3.2函數(shù)調(diào)用時的數(shù)據(jù)傳遞先編寫max函數(shù):intmax(intx,inty){intz;z=x>y?x:y;return(z);}7.3.2函數(shù)調(diào)用時的數(shù)據(jù)傳遞在max函數(shù)上面,再編寫主函數(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);}實參可以是常量、變量或表達式7.3.2函數(shù)調(diào)用時的數(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)用的過程在定義函數(shù)中指定的形參,在未出現(xiàn)函數(shù)調(diào)用時,它們并不占內(nèi)存中的存儲單元。在發(fā)生函數(shù)調(diào)用時,函數(shù)max的形參被臨時分配內(nèi)存單元。2a3bxy23實參形參7.3.3函數(shù)調(diào)用的過程調(diào)用結(jié)束,形參單元被釋放實參單元仍保留并維持原值,沒有改變?nèi)绻趫?zhí)行一個被調(diào)用函數(shù)時,形參的值發(fā)生改變,不會改變主調(diào)函數(shù)的實參的值2a3bxy23實參形參【例】讀程序,寫出運行結(jié)果7.5函數(shù)的嵌套調(diào)用C語言的函數(shù)定義是互相平行、獨立的即函數(shù)不能嵌套定義但可以嵌套調(diào)用函數(shù)即調(diào)用一個函數(shù)的過程中,又可以調(diào)用另一個函數(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個整數(shù),找出其中最大的數(shù)。用函數(shù)的嵌套調(diào)用來處理。解題思路:main中調(diào)用max4函數(shù),找4個數(shù)中最大者max4中再調(diào)用max2,找兩個數(shù)中的大者max4中多次調(diào)用max2,可找4個數(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ù)對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個整數(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個數(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ù)對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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論