![語言教學(xué)PPT課件_第1頁](http://file3.renrendoc.com/fileroot3/2021-11/7/e5cf158d-80a9-4e57-b51c-bfee3a505976/e5cf158d-80a9-4e57-b51c-bfee3a5059761.gif)
![語言教學(xué)PPT課件_第2頁](http://file3.renrendoc.com/fileroot3/2021-11/7/e5cf158d-80a9-4e57-b51c-bfee3a505976/e5cf158d-80a9-4e57-b51c-bfee3a5059762.gif)
![語言教學(xué)PPT課件_第3頁](http://file3.renrendoc.com/fileroot3/2021-11/7/e5cf158d-80a9-4e57-b51c-bfee3a505976/e5cf158d-80a9-4e57-b51c-bfee3a5059763.gif)
![語言教學(xué)PPT課件_第4頁](http://file3.renrendoc.com/fileroot3/2021-11/7/e5cf158d-80a9-4e57-b51c-bfee3a505976/e5cf158d-80a9-4e57-b51c-bfee3a5059764.gif)
![語言教學(xué)PPT課件_第5頁](http://file3.renrendoc.com/fileroot3/2021-11/7/e5cf158d-80a9-4e57-b51c-bfee3a505976/e5cf158d-80a9-4e57-b51c-bfee3a5059765.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1第一章 C語言概述第二章 算法第三章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式第四章 最簡單的C程序設(shè)計(jì)第五章 選擇結(jié)構(gòu)程序設(shè)計(jì)第六章 循環(huán)控制第七章 數(shù)組第八章 函數(shù)第九章 預(yù)處理命令第十章 指針第十一章 結(jié)構(gòu)體第十三章 文件第1頁/共291頁2前 言第2頁/共291頁3前 言第3頁/共291頁4前 言第4頁/共291頁5&本章內(nèi)容1.1 C語言發(fā)展史1.2 C語言特點(diǎn)1.3 簡單C程序分析第一章 C語言概述返回第5頁/共291頁6第一章 C語言概述第一章 C語言概述1.1 C語言發(fā)展史1960 ALGOL60 (Algorithmic Language)1987 87 ANSI C 1990 I
2、SO C1972 C (取BCPL第二個字母)1970 B (取BCPL第一個字母)1978 標(biāo)準(zhǔn)C 1983 ANSI C1967 BCPL (Basic CombinedProgramming Language)跳轉(zhuǎn)第6頁/共291頁7第一章 C語言概述1.2 C語言特點(diǎn)1、簡練、自由、結(jié)構(gòu)化 (32個關(guān)鍵字、9種控制語句)2、運(yùn)算符豐富(附錄)34種3、數(shù)據(jù)結(jié)構(gòu)豐富4、可直接對硬件進(jìn)行操作5、目標(biāo)程序質(zhì)量高6、可移植性好第7頁/共291頁8第一章 C語言概述1.3 簡單C程序分析例1.1 打?。@示)一串字符。運(yùn)行結(jié)果: This is an example./* example1.1
3、*/ main( ) printf(“This is an example. n”); 第8頁/共291頁9第一章 C語言概述例1.2 已知角度值45, 求正弦值的2倍。 /*example 1.2*/ #include “math.h” main( ) float x, y; x=45; y=2*sin(x*3.14/180); printf(“Y=%f n”, y); 運(yùn)行結(jié)果: Y=1.413650第9頁/共291頁10第一章 C語言概述例1.3 已知三角形三邊 a, b, c, 求面積。 /*example 1.3*/ #include “math.h” main( ) float a
4、, b, c, p, s; scanf(“%f, %f, %f ”, &a, &b, &c); p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c); printf(“P=%f n S=%f ”, p, s); 輸入:4,5,6 輸出:P=7.500000S=9.921567第10頁/共291頁11第一章 C語言概述max( int x , int y ) main( ) /*max number*/ int z ; int a , b , c ; if(xy) z=x ; scanf(“%d,%d”,&a,&b); else
5、z=y ; c=max( a , b ) ; return(z) ; printf(“max=%dn ”, c) ; 例1.4 已知整數(shù) a, b, 求其中的最大數(shù)。第11頁/共291頁12第一章 C語言概述C程序結(jié)構(gòu)1、C程序由函數(shù)構(gòu)成C程序=一個主函數(shù)(main函數(shù))一個主函數(shù)+若干其他函數(shù)(子或庫)說明部分2、函數(shù) 函數(shù)體 數(shù)據(jù)定義執(zhí)行部分(語句)Turbo C有300多個跳轉(zhuǎn)3、語句書寫自由,后帶分號“;”4、可用 /*/ 對C程序作注釋前一頁第12頁/共291頁13&本章內(nèi)容2.1 算法的概念2.4 算法的表示2.5 結(jié)構(gòu)化程序設(shè)計(jì)第二章 算法返回第13頁/共291頁14第二
6、章 算法第二章 算法程序 = 數(shù)據(jù)結(jié)構(gòu) + 算法程序=數(shù)據(jù)結(jié)構(gòu)+算法+程序設(shè)計(jì)方法+語言工具和環(huán)境數(shù)據(jù)結(jié)構(gòu):對數(shù)據(jù)的描述算法:對操作的描述#include “math.h” main( ) float x, y; x=45; y=2*sin(x*3.14/180); printf(“Y=%f n”, y); 第14頁/共291頁15例如:1+2+3+100=5050 或100+1+99+2+98+49+51+50=100+49*100+50=5050第二章 算法2.1 算法的概念算法:為解決一個問題而采取的方法和步驟。第15頁/共291頁16第二章 算法2.4 算法的表示(用流程圖表示算法)起
7、止框處理框判斷框輸入/出框流程線連接點(diǎn)注釋框第16頁/共291頁17第二章 算法例2.1 計(jì)算265的平方根順序結(jié)構(gòu)開始開始X=265Y=X輸出輸出Y結(jié)束結(jié)束NS圖X=265Y=XY開始結(jié)束第17頁/共291頁18第二章 算法例2.2 打印X的絕對值分支結(jié)構(gòu)NS圖X=0y n 打印x 打印 -xX=0? x -x結(jié)束開始第18頁/共291頁19第二章 算法例2.3 計(jì)算1到100的和循環(huán)結(jié)構(gòu)i=100nNS圖 i=1,s=0s=s+ii=i+1打印sy i=1,s=0s=s+ii=i+1打印s當(dāng)i = = !=邏輯運(yùn)算符 ! & |賦值運(yùn)算符 =條件運(yùn)算符 ? :逗號運(yùn)算符 , 指針運(yùn)
8、算符 * & 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符 (類型關(guān)鍵字)第45頁/共291頁46第三章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式二、算術(shù)表達(dá)式1、定義:用算術(shù)運(yùn)算符和括號將運(yùn)算對象連接起來且符合C語法規(guī)則的式子2、運(yùn)算順序 a*b/c-1.5+a 優(yōu)優(yōu) 先先 級級 運(yùn)運(yùn) 算算 符符 結(jié)結(jié) 合合 方方 向向 1 ( ) 里里 層層 優(yōu)優(yōu) 先先 2 + + - - 自自 右右 至至 左左 3 * / % 自自 左左 至至 右右 4 + - 自自 左左 至至 右右 第46頁/共291頁473、運(yùn)算類型( 3.7混合運(yùn)算 )(1) 同類型運(yùn)算結(jié)果類型不變(2) 不同類型運(yùn)算先按類型級 別低向高轉(zhuǎn)換成同一類型, 再計(jì)算
9、double floatlongunsignedint char, short 高低 10+a+ i * f - d/ldoubledouble doubleint4、優(yōu)先級和結(jié)合性 double第三章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式第47頁/共291頁48第三章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式(類型關(guān)鍵字)(表達(dá)式)例: (int) a (float)(5%3) (double)(x+y)三、強(qiáng)制類型轉(zhuǎn)換運(yùn)算注意: (int) x+y 只轉(zhuǎn)換 x的類型后與y相加 (int) x 不等同于int (x)第48頁/共291頁49第三章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式舉例3.10main()int i ; floa
10、t x ; x=3.6 ; i=(int)x ; printf(“x=%f , i=%dn” , x , i ) ; 運(yùn)行結(jié)果:x=3.600000 , i=3第49頁/共291頁50第三章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式四、自增、自減運(yùn)算1、運(yùn)算規(guī)則+i -i 使用前使i值加(減) 1i+ i- 使用后使i值加(減) 12、注意(1) 只能用于變量(2) 右結(jié)合方向(3) 使用時謹(jǐn)防出錯j=+i;j=i+;相當(dāng)于i=i+1;j=i;j=i;i=i+1;第50頁/共291頁51第三章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式3、例運(yùn)運(yùn)算算前前 表表達(dá)達(dá)式式 運(yùn)運(yùn)算算后后 i=3 j=(i+)+(i+)+(i+) i
11、=6, j=9 i=3 j=(+i)+(+i)+(+i) i=6, j=18 i=3, j=4 k=i+j i=4, k=7 i=3 j= -i+ i=4, j=-3 i=3 printf(“%d,%d”,i,i+) 結(jié)結(jié)果果:4,3 第51頁/共291頁52第三章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式3.9 賦值運(yùn)算符和賦值表達(dá)式一、賦值運(yùn)算符及其操作= 將一個表達(dá)式的值賦給一個變量二、賦值表達(dá)式 說明:(1) 發(fā)生類型轉(zhuǎn)換(自學(xué)60-61頁) (2) 右結(jié)合例:x= -b/(2*a) a=b=c=5 a= (b=4)+(c=6) 那么a=5=b=c?第52頁/共291頁53第三章 數(shù)據(jù)類型、運(yùn)算符與表
12、達(dá)式三、復(fù)合賦值運(yùn)算復(fù)合賦值運(yùn)算符=運(yùn)算符+賦值號例:a+= 3 a+= 3 a=a+3a*= x+y a*= x+y a=a*(x+y)a%= b a%= b a=a%b 例: 設(shè) a=3 求下列表達(dá)式的值a+=a-=a*aa+=(a-=a*a)a+=(a=a-a*a)a=a+(a=a-a*a) -12第53頁/共291頁54第三章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式3.10 逗號運(yùn)算符和逗號表達(dá)式1、逗號表達(dá)式表達(dá)式1,表達(dá)式2,表達(dá)式n2、運(yùn)算規(guī)則從左到右依次計(jì)算各表達(dá)式的值,以表達(dá)式n的值作為最終值(其優(yōu)先級最低)例:比較 (設(shè)a=3)a= 3*5, a*4a= (3*5, a*4)計(jì)算后: 值
13、60,a=15 a=12 第54頁/共291頁55第三章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式舉例3.11main()int i ; float f=7.2 ; printf(“i=%d n” ,(f+=4 , i=f) ; printf(“f=%f n” , f ) ; 運(yùn)行結(jié)果:i=11f=11.200000 第55頁/共291頁56&本章內(nèi)容4.1 C語句概述4.2 賦值語句4.3 I/O的概念及在C語言中的實(shí)現(xiàn)4.4 字符數(shù)據(jù)的輸入/輸出4.5 格式輸入與輸出第四章 最簡單的C程序設(shè)計(jì)返回第56頁/共291頁57第四章 最簡單的C程序設(shè)計(jì)4.1 C語句概述第四章 最簡單的C程序設(shè)計(jì)C語句控
14、制語句(條件、分支、循環(huán))函數(shù)調(diào)用語句(函數(shù)加分號)表達(dá)式語句(表達(dá)式加分號)空語句(一個單獨(dú)的分號)復(fù)合語句(用 將若干語句括起)第57頁/共291頁58第四章 最簡單的C程序設(shè)計(jì)4.2 賦值語句語句格式:賦值表達(dá)式;例如:if ( ( a=b ) 0 ) t=a ; if ( ( a=b ) ) x=a; if (a=b ) y=a;在 if 后面的小括號內(nèi)必須是表達(dá)式第58頁/共291頁59 C C 程序最基本的成分是語句程序最基本的成分是語句 目前我們已掌握的語句:目前我們已掌握的語句: 變量說明語句變量說明語句: int a,b,c;: int a,b,c; 表達(dá)式語句:表達(dá)式語句:
15、 x+y;x+y; 特別地:特別地: a=5; a=5; 賦值語句賦值語句第59頁/共291頁60 可以編寫簡單程序如:可以編寫簡單程序如: main()main() int x,y; int x,y; x=5; x=5; y=2 y=2* *x x* *x+3x+3* *x-1;x-1; 該程序語法上完整,但還缺少輸出。該程序語法上完整,但還缺少輸出。 第60頁/共291頁61 數(shù)據(jù)的輸出數(shù)據(jù)的輸出 用輸出函數(shù)實(shí)現(xiàn)用輸出函數(shù)實(shí)現(xiàn), ,其中的兩種輸出函數(shù):其中的兩種輸出函數(shù): 1.putchar 1.putchar 函數(shù)函數(shù) (字符輸出函數(shù))(字符輸出函數(shù)) 用于輸出一個字符。用于輸出一個字符
16、。 如如: : putchar (a); putchar (100); char c=b; putchar (c);第61頁/共291頁62 例例:輸出單詞:輸出單詞BoyBoy的完整程序:的完整程序: #include “stdio.h” 注意該語句的作用注意該語句的作用 main() char a, b, c; a=B; b=o; c=y; putchar (a); putchar (b); putchar (c); 第62頁/共291頁63 2. printf2. printf函數(shù)(格式輸出函數(shù))函數(shù)(格式輸出函數(shù)) 任意類型、任意格式、任意個數(shù)。任意類型、任意格式、任意個數(shù)。 例如:例
17、如: int a=100,b=56;int a=100,b=56; printf(printf(“a=%d,b=%da=%d,b=%d”,a,b);,a,b); 普通字符普通字符 格式說明格式說明 格式控制格式控制 輸出表列輸出表列 輸出結(jié)果:輸出結(jié)果:a=100,b=56a=100,b=56“% %” 后的字符稱格式字符,不同格式字符對應(yīng)不同的數(shù)據(jù)類型。后的字符稱格式字符,不同格式字符對應(yīng)不同的數(shù)據(jù)類型。第63頁/共291頁64 d d格式符:按整數(shù)格式輸出格式符:按整數(shù)格式輸出 幾種用法:幾種用法: %d %d 不指定寬度,按實(shí)際寬度輸出不指定寬度,按實(shí)際寬度輸出 %md %md 按指定寬
18、度輸出,按指定寬度輸出,m m為寬度為寬度 %ld %ld 用于輸出長整型數(shù)用于輸出長整型數(shù)第64頁/共291頁65 例:例: int a=125,b=453;int a=125,b=453; long c=65535; long c=65535; printf( printf(“a=%d,b=%5d,c=%lda=%d,b=%5d,c=%ld”,a,b,c);,a,b,c); 輸出結(jié)果:輸出結(jié)果: a=125,b= 453,c=65535a=125,b= 453,c=65535第65頁/共291頁66 c c格式符:用于輸出字符格式符:用于輸出字符 char c=char c=A A; ;
19、printf( printf(“c=%c,%cc=%c,%c”,c,c,B B);); 輸出結(jié)果輸出結(jié)果:c=A,Bc=A,B 輸出對象既可以是字符變量、字符常量,還可以是整型表達(dá)式。輸出對象既可以是字符變量、字符常量,還可以是整型表達(dá)式。 第66頁/共291頁67 如:如: int a=100;int a=100; char b= char b=A A; ; printf( printf(“n%d,%cn%d,%c”,a,a);,a,a); printf( printf(“n%c,%dn%c,%d”,b,b);,b,b); 輸出結(jié)果:輸出結(jié)果: 100,d100,d A,65 A,65第67
20、頁/共291頁68main()main() int x,y; int x,y; x=5; x=5; y=2 y=2* *x x* *x+3x+3* *x-1;x-1; printf( printf(“n y=%dn y=%d”,y);,y); 第68頁/共291頁69例4.1 已知三角形三邊 a, b, c, 求面積 #include “math.h”main( ) float a, b, c, p, s; scanf(“%f, %f, %f ”, &a, &b, &c); p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c); printf(
21、“p=%fns=%f n”, p, s); 第四章 最簡單的C程序設(shè)計(jì)第69頁/共291頁70第四章 最簡單的C程序設(shè)計(jì)例4.2 已知整型變量x,y的值分別是3和5, 試將它們的值互換。int x=3, y=5, z;z=x; x=y; y=z;zy35x353第70頁/共291頁71第四章 最簡單的C程序設(shè)計(jì)4.3字符數(shù)據(jù)的輸入/輸出2、語句功能:從指定設(shè)備讀一個字符輸出c的值(字符)1、語句格式輸入:getchar( );輸出:putchar(c);3、說明使用標(biāo)準(zhǔn)I/O函數(shù)時,應(yīng)在程序前加預(yù)編譯命令: #include “stdio.h”字符變量第71頁/共291頁72第四章 最簡單的C
22、程序設(shè)計(jì)例4.3 輸入一個字符并把它輸出出來 #include “stdio.h” main( ) char c; c=getchar( ); putchar(c); 第72頁/共291頁73第四章 最簡單的C程序設(shè)計(jì)1、語句格式輸入 scanf(格式控制,地址表列);輸出 printf(格式控制,輸出表列);2、語句功能按格式控制描述的格式給地址表列中的量 輸入值或輸出輸出表列中各量的值3、格式控制“”括起來的一串格式字符和其它字符4.4 格式輸入與輸出第73頁/共291頁74第四章 最簡單的C程序設(shè)計(jì)4、格式字符格式字符格式字符 描述對象描述對象 說明說明 %d 整型數(shù)據(jù)整型數(shù)據(jù) 有有 %
23、md ,%ld %f 實(shí)型數(shù)據(jù)實(shí)型數(shù)據(jù) 小數(shù)部分輸出小數(shù)部分輸出6位位 %e 帶帶e實(shí)數(shù)實(shí)數(shù) 指數(shù)指數(shù)4位,位,2位整數(shù)位整數(shù) %c 字符數(shù)據(jù)字符數(shù)據(jù) %s 字符串?dāng)?shù)據(jù)字符串?dāng)?shù)據(jù) 指定輸出寬度在格式符中插入:m.n例: %10d %10.4f %12.5e 第74頁/共291頁75&本章內(nèi)容5.1 關(guān)系運(yùn)算符和關(guān)系表達(dá)式5.2 邏輯運(yùn)算符和邏輯表達(dá)式5.3 if 語句5.4 switch 語句4.5 格式輸入與輸出第五章 選擇結(jié)構(gòu)程序設(shè)計(jì)返回第75頁/共291頁76第五章 邏輯運(yùn)算和判斷選取控制第五章 選擇結(jié)構(gòu)程序設(shè)計(jì)5.1 關(guān)系運(yùn)算符和關(guān)系表達(dá)式一、運(yùn)算符與優(yōu)先級 (左結(jié)合性) =
24、= !=同級同級高低算術(shù)運(yùn)算 關(guān)系運(yùn)算 賦值運(yùn)算高低第76頁/共291頁77第五章 邏輯運(yùn)算和判斷選取控制二、關(guān)系表達(dá)式1、關(guān)系表達(dá)式的形式 2、關(guān)系表達(dá)式的值1 真0 假下列是合法的關(guān)系表達(dá)式:a+b c+d (a=3) b)=(cd)注意:f=abc 表達(dá)式的值。如: 0 x 3 & 2 | 2 b)&(n=cd) 當(dāng)a=1,b=2,c=3,d=4,m=1,n=1時,執(zhí)行結(jié) 果m=0, (n=cd)不被執(zhí)行, n 仍然為13、運(yùn)算中一旦能確定其值,終止計(jì)算如計(jì)算: a&b&c a|b|c2、邏輯運(yùn)算的對象并非僅限于邏輯量C判斷處理的原則非0 真 0 假例 i
25、f (-5) x=10; else x=0;思考題: 上式去掉括號后m=ab & n=cd 結(jié)果如何?第80頁/共291頁81第五章 邏輯運(yùn)算和判斷選取控制5.3 if 語句(條件語句)一、語句格式任意表達(dá)式可以是復(fù)合語句格式1:if (e) 語句格式2:if (e) 語句1 else 語句2格式3:if (e1 ) 語句1 else if (e2 ) 語句2 else if (e3 ) 語句3 . else if (em ) 語句m else 語句n 第81頁/共291頁82第五章 邏輯運(yùn)算和判斷選取控制二、語句功能格式1:if (e) 語句計(jì)算 e 的值并判斷。 e 值非0,則執(zhí)行
26、語句;否則,執(zhí)行下條語句。格式2:if (e) 語句1 else 語句2計(jì)算 e 的值并判斷。 e 值非0,則執(zhí)行語句1;否則,執(zhí)行語句2。下條語句語句1語句2e非00下條語句e語句非00goto第82頁/共291頁83第五章 邏輯運(yùn)算和判斷選取控制格式3:if (e ) 語句1 else if (e ) 語句2 else if (e ) 語句3 . else if (e ) 語句m else 語句n 123m計(jì)算 e1 的值并判斷,其值非0執(zhí)行語句1;否則,判斷 e2 的值,其值非0執(zhí)行語句2; 否則,判斷 e3 的值, 其值非0執(zhí)行語句3;否則,. 判斷em 的值,其值非0執(zhí)行語句m ;否
27、則,執(zhí)行語句n00e1e3eme2語句1語句3語句2語句m語句n 下條語句非0非0非0非000.第83頁/共291頁84第五章 邏輯運(yùn)算和判斷選取控制例5.1 從鍵盤輸入兩個整型數(shù),輸出最大數(shù)。main() int a ,b ; scanf(“%d,%d”,&a,&b); if(a=b)printf(“max=%dn”,a); if(ba)printf(“max=%dn”,b);開始enda , babaa) a=b; printf(“max=%dn”,a);開 始enda , bbaaa=b非00第85頁/共291頁86第五章 邏輯運(yùn)算和判斷選取控制例5.2 輸入兩個整型數(shù),
28、按大小輸出。main() int a ,b ,temp ; scanf(“%d,%d”,&a,&b); if (ba) temp=a;a=b;b=temp; printf(“%d,%dn”,a,b);開始enda , bbaa,ba b非00第86頁/共291頁87第五章 邏輯運(yùn)算和判斷選取控制例5.3 輸入互不相等的三個數(shù),按從小到大 順序輸出它們。分析:設(shè)已知的三個數(shù)為a, b, c。(1)可直接通過邏輯表達(dá)式和條件語句 設(shè)計(jì)程序。(2)可通過條件語句和互換變量值設(shè)計(jì) 程序,即經(jīng)過處理后使:abc第87頁/共291頁88第五章 邏輯運(yùn)算和判斷選取控制方法(1):main(
29、)float a, b, c; scanf(“%f %f %f ”,&a,&b,&c); if(ab&bc) printf(“%f,%f,%f”, a, b, c); if(ac&cb) printf(“%f,%f,%f”, a, c, b); if(ba&ac) printf(“%f,%f,%f”, b, a, c); if(bc&ca) printf(“%f,%f,%f”, b, c, a); if(cb&ba) printf(“%f,%f,%f”, c, b, a); if(ca&ab)t=a;a=b;b=t; if
30、(ac)t=a;a=c;c=t; if(bc)t=b;b=c;c=t; printf(“%5.2f, %5.2f, %5.2f ”, a, b, c);第89頁/共291頁90例5.4 求一元二次方程 ax2+bx+c=0 的解第五章 邏輯運(yùn)算和判斷選取控制求x1、x2x1、x2endd=0無實(shí)根yn開 始d=b2-4aca, b, c開 始求根:x1、x2x1、x2enda, b, cd=b2-4ac第90頁/共291頁91第五章 邏輯運(yùn)算和判斷選取控制#include main( ) float a, b, c, d, x1, x2; scanf(“%f %f %f ”,&a,&a
31、mp;b,&c); d=b*b-4*a*c; if (d=0) x1=(-b+sqrt(d)/(2*a); x2=(-b-sqrt(d)/(2*a); printf(“x1=%f,x2=%fn ”, x1,x2); else printf(“It is no real roots.”); 第91頁/共291頁92第五章 邏輯運(yùn)算和判斷選取控制例5.5某運(yùn)輸公司噸公里基本運(yùn)費(fèi)為p,根 據(jù)距離s的遠(yuǎn)近計(jì)費(fèi)標(biāo)準(zhǔn)如下: s250km沒有折扣 250 s500 2% 折扣500 s1000 5% 折扣 1000 s2000 8% 折扣 2000 s=3000) d=0.15; else if(s
32、=2000) d=0.10; else if(s=1000) d=0.08; else if(s=500) d=0.05; else if(s=250) d=0.02; else d=0.0; f=p*w*s*(1-d); printf(“f=%15.2f ”, f); 第93頁/共291頁94第五章 邏輯運(yùn)算和判斷選取控制三、if 語句的嵌套嵌套 if 的一般形式if ( ) if ( ) 語句1 else 語句2else if ( ) 語句3 else 語句4內(nèi)嵌 if內(nèi)嵌 if注意:else 總是與它上面最近的 if 配對第94頁/共291頁95第五章 邏輯運(yùn)算和判斷選取控制if ( )
33、 if ( ) 語句1else if ( ) 語句2 else 語句3內(nèi)嵌 ifif ( ) if ( ) 語句1 else if ( ) 語句2 else 語句3內(nèi)嵌 ifif ( ) if ( ) 語句1else 語句2if ( ) if ( ) 語句1 else 語句2第95頁/共291頁96第五章 邏輯運(yùn)算和判斷選取控制分析:a=0 不是二次方程。 b2-4ac=0 有兩個相等實(shí)根。 b2-4ac0 有兩不等實(shí)根。 b2-4ac0求xyynnd=b -4ac2yna=0開 始a , b , cend第97頁/共291頁98第五章 邏輯運(yùn)算和判斷選取控制if ( fabs(a)1e-6)
34、 printf(“No!”);else d=b*b-4*a*c; if ( fabs(d)0 ) x1=(-b+sqrt(d)/(2*a); x2=(-b -sqrt(d)/(2*a); printf(“Two real roots:%f,%f ”,x1,x2); else xr= -b/(2*a); xi=sqrt(-d)/(2*a); printf(“Complex roots:%f,%f ”, xr,xi); 第98頁/共291頁99第五章 邏輯運(yùn)算和判斷選取控制四、條件運(yùn)算符與條件表達(dá)式1、條件表達(dá)式的一般形式 ? :2、運(yùn)算規(guī)則先計(jì)算表達(dá)式1,若為非0,則以表達(dá)式2的值作為條件表達(dá)式
35、的值;否則,以表達(dá)式3的值為條件表達(dá)式的值。3、優(yōu)先級算術(shù) 關(guān)系 邏輯運(yùn)算(!除外) 條件運(yùn)算 賦值運(yùn)算高低右結(jié)合第99頁/共291頁100第五章 邏輯運(yùn)算和判斷選取控制(1)輸出x和y當(dāng)中的最大值 z=xy ? x : y ; printf(“max=%d”,z);或 printf(“max=%d”,xy?x:y); 或 xy?printf (“%d”,x) : printf (“%d”,y); 舉例:(2)ab?a:b+1等價于ab?a:(b+1)而不是(ab?a:b)+1(3)ab?a:cd?c:d等價于ab?a:(cd?c:d)(4)xy?1:5.6 表達(dá)式的值的類型取高的(5)ch=
36、(ch=A&ch=Z)?(ch+32):ch;第100頁/共291頁101第五章 邏輯運(yùn)算和判斷選取控制5.4 switch 語句一、語句格式 switch(表達(dá)式) case 常量表達(dá)式1:語句1 case 常量表達(dá)式2:語句2 case 常量表達(dá)式n:語句n default :語句n+1 第101頁/共291頁102第五章 邏輯運(yùn)算和判斷選取控制二、執(zhí)行過程當(dāng)switch后的表達(dá)式的值與某一個case后的常量表達(dá)式的值相等時,執(zhí)行其后的語句;若無匹配,則執(zhí)行default后的語句。三、break 語句使流程跳出switch結(jié)構(gòu),終止switch語句的執(zhí)行。第102頁/共291頁10
37、3第五章 邏輯運(yùn)算和判斷選取控制例5.7 用switch語句設(shè)計(jì)“例5.5運(yùn)費(fèi)程序”跳轉(zhuǎn) s 1 d=0 1 s 2 d=0.2 2 s 4 d=0.05 4 s 8 d=0.08 8 s 12 d=0.112 =3000) c=12; else c=s/250; switch(c) case 0 : d=0; break; case 1 : d=0.02; break; case 2 : case 3 : d=0.05; break; case 4 : case 5 : case 6 : case 7 : d=0.08; break; case 8 : case 9 : case 10: c
38、ase 11: d=0.1; break; case 12: d=.15; break; f=p*w*s*(1-d); printf(“f=%15.2f ”, f); 第104頁/共291頁105第五章作業(yè)第111頁 5.3 、 5.5、 5.7上機(jī)調(diào)試作業(yè)第111-112頁 5.6、 5.7第五章 邏輯運(yùn)算和判斷選取控制第105頁/共291頁106第五章 邏輯運(yùn)算和判斷選取控制習(xí)題5.5 已知x,求分段函數(shù)值ymain() float x, y; scanf(“%f”, &x); if(x=1&x=10) y=3*x-11; printf(“x=%f, y=%fn”, x,
39、y); 程序1:第106頁/共291頁107第五章 邏輯運(yùn)算和判斷選取控制main() float x, y; scanf(“%f”, &x); if(x1) y=x; else if(x10) y=2*x-1; else y=3*x-11; printf(“x=%f, y=%fn”, x, y); 程序2:第107頁/共291頁108第五章 邏輯運(yùn)算和判斷選取控制習(xí)題5.6分析:設(shè)百分制成績?yōu)閤, 成績等級為yA x90B80 x90C70 x80D60 x70Ex60y=第108頁/共291頁109第五章 邏輯運(yùn)算和判斷選取控制習(xí)題5.1010a|b|c|d0其他h=分析:設(shè)坐標(biāo)為
40、(x, y), 高度為h設(shè): a=(x-2) + (y-2) 1b=(x+2) + (y-2) 1c=(x+2) + (y+2) 1d=(x-2) + (y+2) 122222222第109頁/共291頁110&本章內(nèi)容6.1 概述6.2 goto語句6.3 while語句6.4 do-while語句6.5 for語句6.6 循環(huán)的嵌套6.7 幾種循環(huán)的比較6.8 break語句和continue語句第六章 循環(huán)控制返回第110頁/共291頁111第六章 循環(huán)控制第六章 循環(huán)控制C 循環(huán)控制if - goto循環(huán)(6.2) while循環(huán)(6.3)do - while循環(huán) (6.4)f
41、or循環(huán)(6.5)6.1 概述第111頁/共291頁112第六章 循環(huán)控制6.2 goto語句及其構(gòu)成的循環(huán)一、goto語句2、語句功能使控制轉(zhuǎn)到語句標(biāo)號所標(biāo)識的語句 goto L1;L2: 語句 . L1: 語句 goto L2;例:1、語句格式 goto 語句標(biāo)號寫在語句前的標(biāo)識符 (后加:)第112頁/共291頁113第六章 循環(huán)控制二、用法1、與if語句聯(lián)合使用構(gòu)成循環(huán)2、用來實(shí)現(xiàn)從多重循環(huán)體內(nèi)轉(zhuǎn)出L1: if(e) 循環(huán)體 goto L1; (當(dāng)型循環(huán))L2: 循環(huán)體 if(e) goto L2; (直到型循環(huán))第113頁/共291頁114第六章 循環(huán)控制例6.1 求 s=1+2+3
42、+.+n 的值。 main( ) int i=1, sum=0, n; scanf(“%d”,&n);L1:sum=sum+i; i+; if(i=n) goto L1; printf(“s=%d”,sum); main( ) int i=1, sum=0, n; scanf(“%d”,&n); L1:if(i=n) sum=sum+i; i+; goto L1; printf(“s=%d”,sum); 第114頁/共291頁115第六章 循環(huán)控制6.3 while語句“當(dāng)型”循環(huán)一、語句格式while(e)循環(huán)體二、執(zhí)行過程(先判斷后執(zhí)行)當(dāng)表達(dá)式 e 值為非0時,執(zhí)行循環(huán)體
43、,然后重復(fù)執(zhí)行while語句;當(dāng)e 的值為0 時,結(jié)束循環(huán),執(zhí)行后繼語句。非00循環(huán)體e單語句或復(fù)合語句第115頁/共291頁116第六章 循環(huán)控制例6.2 求 s=1+2+3+.+n 的值(用while循環(huán)n=100)。main( ) int i=1, s=0, n; scanf(“%d”,&n); while(i=n) s=s+i; i+; printf(“s=%d”, s);main( ) int i=1, s=0, n; scanf(“%d”,&n); while(i=n) s+=i+; printf(“s=%d”, s);第116頁/共291頁117第六章 循環(huán)控制6
44、.4 do-while語句“直到型”循環(huán)一、語句格式do 循環(huán)體while(e);二、執(zhí)行過程(先執(zhí)行后判斷)先執(zhí)行do后的循環(huán)體,然后判斷表達(dá)式e 的值,若為非0,重復(fù)執(zhí)行循環(huán)體,直到while中的表達(dá)式e 為0,結(jié)束循環(huán)。循環(huán)體e0非0單語句或復(fù)合語句第117頁/共291頁118第六章 循環(huán)控制例6.3 求 s=1+2+.+n 的值(用do-while循環(huán)n=100)。main( ) int i=1, s=0, n; scanf(“%d”,&n); do s=s+i; i+; while(i=n); printf(“s=%d”, s);main( ) int i=1, s=0, n
45、; scanf(“%d”,&n); do s+=i+; while(i=n); printf(“s=%d”, s);第118頁/共291頁119第六章 循環(huán)控制6.5 for語句及其構(gòu)成的循環(huán)一、語句格式for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 循環(huán)體計(jì)算表達(dá)式1計(jì)算表達(dá)式3表達(dá)式2循環(huán)體下一條語句0非0二、執(zhí)行過程1、計(jì)算表達(dá)式1。2、判斷表達(dá)式2。 若非0,執(zhí)行循環(huán)體,轉(zhuǎn)3; 否則,結(jié)束循環(huán),轉(zhuǎn)4。3、計(jì)算表達(dá)式3。轉(zhuǎn)2。4、執(zhí)行for語句的下一條語句。第119頁/共291頁120第六章 循環(huán)控制三、說明1、for語句最簡單、最常用的應(yīng)用形式for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量
46、增值) 循環(huán)體例6.4 求 s=1+2+.+n 的值(用for循環(huán)n=100)。 main( ) int i, s=0, n; scanf(“%d”,&n); for(i=1; i=n; i+) s=s+i; printf(“s=%d”, s); 第120頁/共291頁121第六章 循環(huán)控制2、for語句中的三個表達(dá)式均可省略 注意:(1) 分號不能省略。 (2) 應(yīng)保證循環(huán)正確執(zhí)行。例 main( ) int i, s, n; scanf(“%d”,&n); for(i=1,s=0; i=n;) s+=i+; printf(“s=%d”, s);main( ) int i=1
47、, s=0, n; scanf(“%d”,&n); for(; in)break; printf(“s=%d”, s);第121頁/共291頁122第六章 循環(huán)控制例6.5 給一年級的小學(xué)生出10道100以內(nèi)的加法練習(xí)題。分析:1、出題 2、回答 3、判斷對錯#include “stdlib.h” main( ) int i , x , y , z ; randomize(); for(i=1; i=10; i+) x=random(99); y=random(99); printf(“%d+%d=”, x , y ); scanf(“%d”, &z); if(z=x+y)pr
48、intf(“nright!n”); else printf(“nwrong!n”);思考:1、做對幾題 2、總成績#include “stdlib.h” main( ) int i ,x ,y ,z ; int count=0 ,score=0 ; randomize(); for(i=1; i=3) (注:一行打印3個數(shù)字) main( ) long i=1, j=1, k ; int n ; printf(“%8ld%8ld”, i , j) ; for(n=3; n=30; n+) k=i+j ; printf(“%8ld”, k) ; if(n%3= =0) printf(“n”) ;
49、 i=j ; j=k ; 第123頁/共291頁124第六章 循環(huán)控制例6.7 求分?jǐn)?shù)序列:1/2,2/3,3/5,5/8,8/13, 13/21, .的前20項(xiàng)之和。main() int k ; float i=1 , j=2 , s=0; for(k=1 ; k=20 ; k+) s=s+i/j ; j=i+j ; i=j-i ; printf(“sum=%10.6fn ”, s); 第124頁/共291頁125第六章 循環(huán)控制1、循環(huán)的嵌套概念對各種循環(huán)結(jié)構(gòu)是一樣的, 即某一循環(huán)的循環(huán)體內(nèi)包含另一循環(huán)結(jié)構(gòu)。2、各種循環(huán)結(jié)構(gòu)可以互相嵌套。例for嵌套for( ; ; ) . for( ;
50、; ) . .for-while嵌套for( ; ; ) . while( ) . .6.6 循環(huán)的嵌套多重循環(huán)第125頁/共291頁126第六章 循環(huán)控制1、各種循環(huán)結(jié)構(gòu)可以互相替代,但不提倡使用 用goto構(gòu)成的循環(huán)。2、在while和do-while語句構(gòu)成的循環(huán)體中必須 有使循環(huán)趨于結(jié)束的語句,如i+。6.7 幾種循環(huán)的比較3、在while和do-while語句構(gòu)成的循環(huán)中,循環(huán) 變量的初始化必須在循環(huán)之前完成。 4、在while、do-while和for語句構(gòu)成的循環(huán)中, 可以用break和continue跳出或結(jié)束本次循環(huán) 第126頁/共291頁127第六章 循環(huán)控制6.8 bre
51、ak語句和continue語句一、break語句1、用來跳出switch結(jié)構(gòu)。2、用來跳出當(dāng)前循環(huán)。循 環(huán)break;二、continue語句用來結(jié)束本次循環(huán),即跳過當(dāng)前循環(huán)中后繼尚未執(zhí)行的語句,進(jìn)行下 一次循環(huán)循 環(huán)continue;第127頁/共291頁128第六章 循環(huán)控制例6.8 利用公式 2/6=1-2 +2-2 +3-2 +4-2 +. 求的 近似值,直到最后一項(xiàng)的值小于10-8為止。 #include “math.h” main() long i=1; double pi=0; while(i*i=1e8) pi=pi+1.0/(i*i); i+; pi=sqrt(6.0*pi)
52、; printf(“ pi=%10.6fn ”, pi);6.9程序舉例第128頁/共291頁129第六章 循環(huán)控制例6.8 利用公式 2/6=1-2 +2-2 +3-2 +4-2 +. 求的 近似值,直到最后一項(xiàng)的值小于10-8為止。 #include “math.h” main() long i ; double pi=0; for( i=1 ; i=1e8) break; pi=pi+1.0/(i*i); pi=sqrt(6.0*pi); printf(“ pi=%10.6fn ”, pi) ; 第129頁/共291頁130第六章 循環(huán)控制例6. 9 打印100以內(nèi)個位數(shù)為6,且能被3整
53、除的數(shù)。 main() int i , j ; for(i=0;i=9;i+) j=i*10+6; if(j%3!=0) continue; printf(%d , j ); 可以省略第130頁/共291頁131第六章 循環(huán)控制例6.10 寫出下列程序的運(yùn)行結(jié)果。 main() int i , j , a=0 ; for ( i=0 ; i2 ; i+ ) for ( j=0 ;j4 ;j+ ) if ( j%2 ) break ; a+ ; a+; printf (%dn,a) ; 第131頁/共291頁132第六章 循環(huán)控制例6.11 打印99表。1*1=11*2=2 2*2=41*3=3
54、 2*3=6 3*3=91*4=4 2*4=8 3*4=12 4*4=161*5=5 2*5=10 3*5=15 4*5=20 5*5=251*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=361*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=491*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=641*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81第132頁/共291頁133第六章 循環(huán)控制例6.11
55、打印99表。main() int i , j ; for ( i=1 ; i=9 ; i+ ) for ( j=1 ; j=i ;j+ ) printf ( “%d*%d=%-3d”,j , i, i*j ) ; printf (n) ; 第133頁/共291頁134第六章 循環(huán)控制例6.12 百雞百錢問題。公雞一只5元,母雞一只3元,小雞三只1元,用100元買一百只雞,問公雞、母雞、小雞各多少只?設(shè):公雞x只、母雞y只、小雞z只列等式:x+y+z=10015*x+9*y+z=300第134頁/共291頁135第六章 循環(huán)控制例6.12 百雞百錢問題。main() int x , y , z
56、; for ( x=1 ; x=20 ; x+ ) for ( y=1 ; y=33 ; y+ ) for ( z=1 ; z=100 ; z+ ) if(x+y+z=100&15*x+9*y+z=300) printf ( “%d,%d,%dn”,x , y, z) ;第135頁/共291頁136第六章 循環(huán)控制例6.13 求e x的臺勞級數(shù)展開式的前n項(xiàng)之和。e x=1+x+ + + (-x)x22!x33! xn-1 (n-1)!main() float x, s=1,t=1 , f=1 ; int i, n; scanf(“%f,%d”,&x,&n); for
57、( i=1 ; i1 ; i- ) if (m%i=0) break ; if(i=1)printf( “%d is a prime number.n”,m); else printf( “%d is not a prime number.n”,m);第137頁/共291頁138第六章 循環(huán)控制例6.15 用牛頓迭代法求代數(shù)方程e x-x=0在x=-2附近的一個實(shí)根。直到滿足|xn+1-xn|=10-6為止。牛頓迭代公式:令: f (x)= e -x -x xn+1=xn- f (xn)是f (x)曲線在xn點(diǎn)處的切線斜率 f (xn) f (xn)f(x)x1f(x1)x2f(x2)x2=x
58、1- f (x1) f (x1)f (x1)= f (x1) x1-x2第138頁/共291頁139第六章 循環(huán)控制例6.15 用牛頓迭代法求代數(shù)方程e x-x=0的實(shí)根。#include“math.h”main() float f1 , f0 , x1=-2 , x0 ; do x0=x1; f0=exp(-x0)-x0; f1=-exp(-x0)-1; x1=x0-f0/f1; while(fabs(x1-x0)1e-6); printf ( “%fn”,x1) ;第139頁/共291頁140第六章作業(yè)上機(jī)調(diào)試作業(yè)第129頁 6.2,6.8, 6.14第129頁 6.2, 6.4 , 6.
59、6, 6.8第六章 循環(huán)控制第140頁/共291頁141&本章內(nèi)容7.1 一維數(shù)組7.2 二維數(shù)組7.3 字符數(shù)組第七章 數(shù)組返回第141頁/共291頁142第七章 數(shù)組第七章 數(shù)組7.1 一維數(shù)組一、定義類型關(guān)鍵字 數(shù)組名常數(shù)表達(dá)式;標(biāo)識符數(shù)組體積二、數(shù)組元素?cái)?shù)組名下標(biāo)下界為 0,上界為常數(shù)表達(dá)式-1第142頁/共291頁143第七章 數(shù)組例: int a10; float b5;定義一維整型數(shù)組 a和實(shí)型數(shù)組ba數(shù)組中的元素是:a0, a1, a2, a3, a4, a5, a6, a7, a8, a9;b數(shù)組中的元素是: b0, b1, b2, b3, b4 第143頁/共291
60、頁144第七章 數(shù)組三、數(shù)組的引用以數(shù)組元素作為引用對象例7.1 求 s=a1+a2+a10 main( ) int i; float s=0, a10; for(i=0; i10; i+) scanf(“%f ”, &ai); s=s+ai; printf(“s=%fn”, s); 第144頁/共291頁145第七章 數(shù)組四、一維數(shù)組的初始化1、在定義數(shù)組時,給數(shù)組元素賦初值例: int a6=1,2,3,4,5,6;2、可只給一部分?jǐn)?shù)組元素賦初值。 例: int a6=1,2,3;3、未賦初值的數(shù)組,各元素值不確定。4、數(shù)組的大小由初始化的數(shù)據(jù)個數(shù)決定 。 例: int a =1,2,3;5、數(shù)組中全部元素初始化為0 。 例: int a6=0;第145頁/共291頁146第七章 數(shù)組例7.2 求Fibonacci數(shù)列的前30項(xiàng)。(一行三個) main( ) long f30=1,1; int i; for(i=2; i30; i+) fi=fi-1+fi-2; for(i=0; i30; i+) if(i%3=0) printf(“n”) ; printf(“%8ld”, fi) ; 第146頁/共291頁147第七
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年高中化學(xué)第3章第2節(jié)第1課時自然界中氮的循環(huán)以及氮循環(huán)中的重要物質(zhì)練習(xí)含解析魯科版必修1
- 企劃部年度工作總結(jié)
- 公司市場部主管年終總結(jié)
- 個人年度總工程師工作總結(jié)
- 行政科工作總結(jié)
- 六年級班主任第一學(xué)期工作總結(jié)
- 中班學(xué)期末總結(jié)與反思
- 產(chǎn)權(quán)酒店式公寓委托經(jīng)營管理協(xié)議書范本
- 石材加工合作合同范本
- 出租車買賣合同范本
- 2025年廣西教育出版社有限公司招聘筆試參考題庫含答案解析
- 中醫(yī)膏方臨床應(yīng)用與制備工藝規(guī)范 DB32/T 4870-2024
- JJG(交通) 208-2024 車貨外廓尺寸動態(tài)現(xiàn)場檢測設(shè)備
- TSG07-2019鍋爐安裝工藝+焊接專用工藝卡+施工記錄表
- 2024-2025學(xué)年陜西省西安市浐灞區(qū)數(shù)學(xué)三年級第一學(xué)期期末統(tǒng)考試題含解析
- 護(hù)理人員的職業(yè)安全防護(hù)
- 胸外科講課全套
- 醫(yī)療器械GSP相關(guān)
- 2023年海南省公務(wù)員錄用考試《行測》真題卷及答案解析
- 電力工程施工售后保障方案
- 中國心力衰竭診斷和治療指南2024解讀(完整版)
評論
0/150
提交評論