C語言教學課件探討_第1頁
C語言教學課件探討_第2頁
C語言教學課件探討_第3頁
C語言教學課件探討_第4頁
C語言教學課件探討_第5頁
已閱讀5頁,還剩285頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C語言教學課件探討教學內(nèi)容第一章 C語言概述第三章 數(shù)據(jù)類型、運算符與表達式第四章 最簡單的C第五章 選擇結構程序設計第六章 循環(huán)控制第九章 預處理命令第十一章結構體第十三章文件2前言前言一、計算機語言1、機器語言2、匯編語言3、高級語言4、高級語言向機器語言的過渡高級語言源程序機器語言目標程序計算結果編譯解釋執(zhí)行——機器指令的集合——符號化的機器語言——通用自然的算法語言3前言二、程序與程序設計——完成某一功能的計算機指令的有序集合1、程序2、程序設計——設計、編制、調(diào)試程序的過程43、程序設計的基本步驟(1)分析問題(2)確定解題思路和算法(3)編制流程圖(4)編寫源程序(5)靜態(tài)檢查(6)上機調(diào)試(7)正式運行前言5本章內(nèi)容1.1C語言發(fā)展史1.2C語言特點1.3簡單C程序分析第一章C語言概述返回6第一章C語言概述第一章C語言概述§1.1C語言發(fā)展史1960ALGOL60(AlgorithmicLanguage)198787ANSIC1990ISOC1972C(取BCPL第二個字母)1970B(取BCPL第一個字母)1978標準C1983ANSIC 1967BCPL(BasicCombinedProgrammingLanguage)跳轉(zhuǎn)7第一章C語言概述§1.2C語言特點1、簡練、自由、結構化(32個關鍵字、9種控制語句)2、運算符豐富(附錄Ⅲ)34種3、數(shù)據(jù)結構豐富4、可直接對硬件進行操作5、目標程序質(zhì)量高6、可移植性好8第一章C語言概述§1.3簡單C程序分析例1.1打?。@示)一串字符。運行結果:Thisisanexle./*exle1.1*/main(){printf(“Thisisanexle.\n”);}9第一章C語言概述例1.2已知角度值45°,求正弦值的2倍。

/*exle1.2*/#include“math.h”main(){floatx,y;x=45;y=2*sin(x*3.14/180);printf(“Y=%f\n”,y);}運行結果:Y=1.41365010第一章C語言概述例1.3已知三角形三邊a,b,c,求面積。/*exle1.3*/#include“math.h”main(){floata,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\nS=%f”,p,s);}輸入:4,5,6↙輸出:P=7.500000S=9.92156711第一章C語言概述max(intx,inty)main()/*maxnumber*/{{intz; inta,b,c;if(x>y)z=x; scanf(“%d,%d”,&a,&b);elsez=y; c=max(a,b); return(z); printf(“max=%d\n”,c);} }例1.4已知整數(shù)a,b,求其中的最大數(shù)。12第一章C語言概述C程序結構1、C程序由函數(shù)構成C程序={一個主函數(shù)(main函數(shù))一個主函數(shù)+若干其他函數(shù)(子或庫)說明部分2、函數(shù){{函數(shù)體}數(shù)據(jù)定義執(zhí)行部分(語句){TurboC有300多個跳轉(zhuǎn)3、語句書寫自由,后帶分號“;”4、可用/*……*/對C程序作注釋前一頁13本章內(nèi)容2.1算法的概念2.4算法的表示2.5結構化程序設計第二章算法返回14第二章算法第二章算法程序=數(shù)據(jù)結構+算法程序=數(shù)據(jù)結構+算法+程序設計方法+語言工具和環(huán)境數(shù)據(jù)結構:對數(shù)據(jù)的描述算法:對操作的描述#include“math.h”

main(){floatx,y;

x=45;

y=2*sin(x*3.14/180);printf(“Y=%f\n”,y);}15例如:1+2+3+……+100=5050或100+1+99+2+98+……+49+51+50=100+49*100+50=5050第二章算法§2.1算法的概念算法:為解決一個問題而采取的方法和步驟。16第二章算法§2.4算法的表示(用流程圖表示算法)起止框處理框判斷框輸入/出框流程線連接點注釋框17第二章算法例2.1計算265的平方根順序結構開始X=265Y=√X輸出Y結束N—S圖X=265Y=√XY開始結束18第二章算法例2.2打印X的絕對值分支結構N—S圖X>=0yn

打印x打印

-xX>=0?x-x結束開始19第二章算法例2.3計算 1到100的和循環(huán)結構i<=100nN—S圖i=1,s=0s=s+ii=i+1打印syi=1,s=0s=s+ii=i+1打印s當i<=10020(1)自頂向下(2)逐步細化(3)模塊化設計(4)結構化編碼第二章算法§2.5結構化程序設計方法(了解內(nèi)容)結構化程序便于編寫、閱讀、修改和維護??梢詼p少程序出錯的機會,提高程序的可靠性,保證程序的質(zhì)量。結構化程序設計方法的基本思路是:把一個復雜問題的求解過程分階段進行,每個階段處理的問題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)。21本章內(nèi)容3.1C的數(shù)據(jù)類型3.2

常量與變量3.3整型數(shù)據(jù)3.4實型數(shù)據(jù)3.5字符型數(shù)據(jù)3.6變量賦初值3.8

算術運算符與算術表達式3.9賦值運算符和賦值表達式3.10逗號運算符和逗號表達式第三章數(shù)據(jù)類型、運算符與表達式返回22第三章數(shù)據(jù)類型、運算符與表達式空類型void(無return的函數(shù))C數(shù)據(jù)類型基本類型構造類型指針類型整型實型字符型枚舉型數(shù)組型結構體型共用體型單精度雙精度

第三章數(shù)據(jù)類型、運算符與表達式§3.1C的數(shù)據(jù)類型23第三章數(shù)據(jù)類型、運算符與表達式§3.2常量與變量一、常量1、整型常量——0和正負整數(shù)4、字符串常量——“”括起來的字符串5、符號常量——#define符號名常量2、實型常量小數(shù)形式(12.34、-0.65)指數(shù)形式(0.1234e2)3、字符型常量‘’括起來的一個字符或以\開頭的字符序列跳轉(zhuǎn)24第三章數(shù)據(jù)類型、運算符與表達式#definePI3.1415926例3.1判斷下列是否是C語言的常量

’1’-123’internet’2/4100.0-12e2.5"t"0.4e-4(字符型)(整型)(

)(

)(實型)(

)(字符串)(實型)例3.2定義一個符號常量PI,其值為

25第三章數(shù)據(jù)類型、運算符與表達式二、變量1、變量名——以標識符命名由字母、數(shù)字或下劃線組成首字符為字母或下劃線用來標識變量、符號常量、數(shù)組、函數(shù)、文件等標識符例:sumgood123student_name26第三章數(shù)據(jù)類型、運算符與表達式2、變量的定義用變量定義語句定義變量及其類型(1)變量定義語句的格式類型關鍵字變量名或賦值表達式表;實型字符型(2)類型關鍵字整型基本型int短整型short長整型long無符號型unsigned單精度型float雙精度型doublechar27第三章數(shù)據(jù)類型、運算符與表達式(3)說明①必須在程序執(zhí)行部分之前對程序中的所有變量進行定義②C語言中整型和字符型數(shù)據(jù)通用可在定義變量的同時給其賦初值例:inta=3,b=4,c=5;floatx,y,z=0.5;charw=‘a(chǎn)’;⑤變量名不能用關鍵字④變量區(qū)分大小寫28第三章數(shù)據(jù)類型、運算符與表達式(4)舉例3.3#definePI3.1415926#include“math.h”main(){floatx,y;x=67;y=2*sin(x*PI/180);printf(“y=%f”,y);}{floatx=67,y;注意區(qū)分:返回29第三章數(shù)據(jù)類型、運算符與表達式1、常量:十進制567,-789,0八進制0567,-0753十六進制0x567,-0xa12、變量:inti,j;i=10;j=-10;i100000000000001010j-101111111111110110§3.3整型數(shù)據(jù)30第三章數(shù)據(jù)類型、運算符與表達式3、整型變量數(shù)的表示范圍:(-32768~32767)4、整型變量的分類:有符號基本整型[signed]int無符號基本整型unsignedint有符號短整型[signed]short[int]無符號短整型unsignedshort[int]有符號長整型[signed]long[int]無符號長整型unsignedlong[int]31第三章數(shù)據(jù)類型、運算符與表達式a0111111111111111b5、無符號和有符號數(shù)的比較:inta;(-32768~32767)unsignedintb;(0~65535)符號位數(shù)據(jù)位327676553511111111111111112152142132122112102928272625242322212032768、16384、8192、4096、2048、1024…32第三章數(shù)據(jù)類型、運算符與表達式舉例3.4main(){inta,b,c,d;unsignedintu;a=12;b=-24;u=10;c=a+u;d=b+u;printf(“a+u=%d,b+u=%d\n”,c,d);}運行結果:a+u=22,b+u=-14

33第三章數(shù)據(jù)類型、運算符與表達式a01111111111111116、整型數(shù)據(jù)的溢出:符號位32767a+11000000000000000符號位-327681111111111111111-134第三章數(shù)據(jù)類型、運算符與表達式舉例3.5main(){inta,b;a=32767;b=a+1;printf(“a=%d,b=%d\n”,a,b);}運行結果:a=32767,b=-32768

35第三章數(shù)據(jù)類型、運算符與表達式7、整型常量的類型使用整型常量時應注意以下幾點:在(-32768~32767)范圍內(nèi)的整數(shù)賦給int型或long型變量 如:

inta;longb;a=0xb4;b=12;在(-2147483648~2147483647)范圍內(nèi)的整數(shù)賦給long型變量 如:

longb;b=50000;如果機器中短整型和基本整型所占字節(jié)數(shù)相同,則同等對待

如:

inta;shortb;a=0576;b=a;常量無unsigned型,賦值時注意溢出問題一個整型常量后面加一個l

或L則認為是long型常量(虛實對應) 如:

inta;longb;a=1234;b=12L;36第三章數(shù)據(jù)類型、運算符與表達式1、常量:小數(shù)形式.567,-789.,0.0,5.0指數(shù)形式123e4,-753E-5(輸出時規(guī)范化1.23000e+06)2、變量:floatx;doubley;longdoublez;x=3.14159;y=7.86e12x.314159+1數(shù)符小數(shù)部分指數(shù)+.314159×103.141591+§3.4實型數(shù)據(jù)(浮點數(shù))37第三章數(shù)據(jù)類型、運算符與表達式main(){floata,b;a=123456.789e5;b=a+20;printf(“a=%f,b=%f\n”,a,b);}運行結果:

3、實型數(shù)據(jù)的舍入誤差舉例3.638第三章數(shù)據(jù)類型、運算符與表達式4、實型常量的類型許多編譯系統(tǒng)均將實型常量按照雙精度數(shù)處理,結果存入單精度變量,降低了運算速度,可以在實型常量的后邊加一個f或F以表示單精度數(shù)。如:floatf;f=2.45678f*4523.65f;5、單精度變量有6~

7位有效數(shù)字(10-37~1038)雙精度變量有15~16位有效數(shù)字(10-307

~10308)39第三章數(shù)據(jù)類型、運算符與表達式1、常量:(a)‘a(chǎn)’、‘x’、‘?’、‘$’(b)‘\n’、‘\t’、‘\’’(c)‘\101’、‘\x41’(d)‘\0’或‘\000’ASCII值為0的空操作字符2、變量:charc1,c2;c1=‘a(chǎn)’;c2=‘b’;3、內(nèi)存中的存儲形式c19701100001c29801100010八進制十六進制§3.5字符型數(shù)據(jù)‘A’40第三章數(shù)據(jù)類型、運算符與表達式4、字符型數(shù)據(jù)的使用舉例3.7main(){charc1,c2;c1=97;c2=98;printf(“c1=%c,c2=%c\n”,c1,c2);printf(“c1=%d,c2=%d\n”,c1,c2);}

運行結果:c1=a,c2=bc1=97,c2=98

41第三章數(shù)據(jù)類型、運算符與表達式舉例3.8main(){charc1,c2;c1=‘a(chǎn)’;c2=‘b’;c1=c1-32;c2=c2-32;printf(“c1=%c,c2=%c\n”,c1,c2);printf(“c1=%d,c2=%d\n”,c1,c2);}運行結果:c1=A,c2=Bc1=65,c2=6642第三章數(shù)據(jù)類型、運算符與表達式舉例3.9main(){inti;charc;i=‘a(chǎn)’;c=97;printf(“c=%c,c=%d\n”,c,c);printf(“i=%c,i=%d\n”,i,i);}運行結果:c=a,c=97i=a,i=9743第三章數(shù)據(jù)類型、運算符與表達式5、字符串常量“Howdoyoudo.”、“CHINA”、“a”、“$123.45”注意:(1)沒有字符串變量(可用字符數(shù)組存儲)

(2)字符串常量在內(nèi)存中的存儲形式CHINA\0(3)在輸出語句中的應用

printf(“Howdoyoudo.”);

printf(“c=%c,c=%d\n”,c,c);44第三章數(shù)據(jù)類型、運算符與表達式inta=3;floatf=3.14;charc=‘a(chǎn)’;inta,b=3,c;inta=3,b=3,c=3;

注意:變量的初始化不是在編譯階段完成的,而是在程序運行時執(zhí)行本函數(shù)時賦予初始值的?!?.6變量賦初值45第三章數(shù)據(jù)類型、運算符與表達式§3.8算術運算符與算術表達式一、C運算符簡介(13類)算術運算符+-

*/%++-

-關系運算符><==>=<=!=邏輯運算符!&&||賦值運算符=條件運算符?:逗號運算符,指針運算符*&強制類型轉(zhuǎn)換運算符(類型關鍵字)46第三章數(shù)據(jù)類型、運算符與表達式二、算術表達式1、定義:用算術運算符和括號將運算對象連接起來且符合C語法規(guī)則的式子2、運算順序a*b/c-1.5+‘a(chǎn)’473、運算類型(§3.7混合運算

)(1)同類型運算結果類型不變不同類型運算先按類型級別低向高轉(zhuǎn)換成同一類型,再計算doublefloatlongunsignedintchar,short

高低

10+‘a(chǎn)’+i*f-d/l②double④double⑤double①int4、優(yōu)先級和結合性③double第三章數(shù)據(jù)類型、運算符與表達式48第三章數(shù)據(jù)類型、運算符與表達式(類型關鍵字)(表達式)例:(int)a(float)(5%3)(double)(x+y)三、強制類型轉(zhuǎn)換運算注意:(int)x+y只轉(zhuǎn)換x的類型后與y相加(int)x不等同于int(x)49第三章數(shù)據(jù)類型、運算符與表達式舉例3.10main(){inti;floatx;x=3.6;i=(int)x;printf(“x=%f,i=%d\n”,x,i);}運行結果:x=3.600000,i=350第三章數(shù)據(jù)類型、運算符與表達式四、自增、自減運算1、運算規(guī)則++i--i使用前使i值加(減)1i++i--使用后使i值加(減)12、注意(1)只能用于變量(2)右結合方向(3)使用時謹防出錯{j=++i;j=i++;相當于{i=i+1;j=i;j=i;i=i+1;51第三章數(shù)據(jù)類型、運算符與表達式3、例52第三章數(shù)據(jù)類型、運算符與表達式§3.9賦值運算符和賦值表達式一、賦值運算符及其操作=將一個表達式的值賦給一個變量二、賦值表達式<變量><賦值運算符><表達式>說明:(1)發(fā)生類型轉(zhuǎn)換(自學60-61頁)(2)右結合例:x=-b/(2*a)a=b=c=5a=(b=4)+(c=6)那么a=5=b=c?53第三章數(shù)據(jù)類型、運算符與表達式三、復合賦值運算復合賦值運算符=運算符+賦值號例:a+=3 a+=3 a=a+3a*=x+y a*=x+y a=a*(x+y) a%=b a%=b a=a%b 例:設a=3求下列表達式的值a+=a-=a*aa+=(a-=a*a)a+=(a=a-a*a)a=a+(a=a-a*a)-1254第三章數(shù)據(jù)類型、運算符與表達式§3.10逗號運算符和逗號表達式1、逗號表達式表達式1,表達式2,

,表達式n2、運算規(guī)則從左到右依次計算各表達式的值,以表達式n的值作為最終值(其優(yōu)先級最低)例:比較(設a=3)a=3*5,a*4a=(3*5,a*4)計算后:值60,a=15a=1255第三章數(shù)據(jù)類型、運算符與表達式舉例3.11main(){inti;floatf=7.2;printf(“i=%d\n”,(f+=4,i=f));printf(“f=%f\n”,f);}運行結果:i=11f=11.20000056本章內(nèi)容4.1C語句概述4.2賦值語句4.3I/O的概念及在C語言中的實現(xiàn)4.4字符數(shù)據(jù)的輸入/輸出4.5格式輸入與輸出第四章最簡單的C程序設計返回57第四章最簡單的C程序設計§4.1C語句概述第四章最簡單的C程序設計C語句控制語句(條件、分支、循環(huán))函數(shù)調(diào)用語句(函數(shù)加分號)表達式語句(表達式加分號)空語句(一個單獨的分號)復合語句(用{}將若干語句括起)58第四章最簡單的C程序設計§4.2賦值語句語句格式:賦值表達式;例如:if((a=b)>0)t=a;if((a=b))x=a;if(a==b)y=a;在if后面的小括號內(nèi)必須是表達式59

C程序最基本的成分是語句目前我們已掌握的語句:變量說明語句:inta,b,c;

表達式語句:x+y;

特別地:a=5;賦值語句60可以編寫簡單程序如:

main(){intx,y;x=5;y=2*x*x+3*x-1;}

該程序語法上完整,但還缺少輸出。

61

■數(shù)據(jù)的輸出

用輸出函數(shù)實現(xiàn),其中的兩種輸出函數(shù):

1.putchar函數(shù)(字符輸出函數(shù))用于輸出一個字符。

如:

putchar(‘a(chǎn)’);putchar(100);charc=’b’;putchar(c);62

例:輸出單詞Boy的完整程序:

#include“stdio.h”注意該語句的作用

main(){chara,b,c;a=’B’;b=’o’;c=’y’;putchar(a);putchar(b);putchar(c);}63

2.printf函數(shù)(格式輸出函數(shù))

任意類型、任意格式、任意個數(shù)。例如:

inta=100,b=56;

printf(“a=%d,b=%d”,a,b);

普通字符格式說明格式控制輸出表列

輸出結果:a=100,b=56“%”后的字符稱格式字符,不同格式字符對應不同的數(shù)據(jù)類型。64

d格式符:按整數(shù)格式輸出

幾種用法:

%d不指定寬度,按實際寬度輸出

%md按指定寬度輸出,m為寬度

%ld用于輸出長整型數(shù)65

例:

inta=125,b=453;longc=65535;printf(“a=%d,b=%5d,c=%ld”,a,b,c);

輸出結果:

a=125,b=453,c=6553566

c格式符:用于輸出字符

charc=’A’;printf(“c=%c,%c”,c,’B’);

輸出結果:c=A,B

輸出對象既可以是字符變量、字符常量,還可以是整型表達式。

67

如:

inta=100;charb=’A’;printf(“\n%d,%c”,a,a);printf(“\n%c,%d”,b,b);

輸出結果:

100,dA,6568完整前面的程序:main(){intx,y;x=5;y=2*x*x+3*x-1;printf(“\ny=%d”,y);}69例4.1已知三角形三邊a,b,c,求面積#include“math.h”main(){floata,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\ns=%f\n”,p,s);}第四章最簡單的C程序設計70第四章最簡單的C程序設計例4.2已知整型變量x,y的值分別是3和5,

試將它們的值互換。intx=3,y=5,z;z=x;x=y;y=z;zy35x35371第四章最簡單的C程序設計§4.3字符數(shù)據(jù)的輸入/輸出2、語句功能:從指定設備讀一個字符輸出c的值(字符)1、語句格式輸入:getchar();輸出:putchar(c);3、說明使用標準I/O函數(shù)時,應在程序前加預編譯命令:#include“stdio.h”字符變量72第四章最簡單的C程序設計例4.3輸入一個字符并把它輸出出來#include“stdio.h”main(){charc;c=getchar();putchar(c);}73第四章最簡單的C程序設計1、語句格式輸入scanf(格式控制,地址表列);輸出printf(格式控制,輸出表列);2、語句功能按格式控制描述的格式給地址表列中的量輸入值或輸出輸出表列中各量的值3、格式控制“”括起來的一串格式字符和其它字符§4.4格式輸入與輸出74第四章最簡單的C程序設計4、格式字符指定輸出寬度在格式符中插入:m.n例:%10d%10.4f%12.5e75本章內(nèi)容5.1關系運算符和關系表達式5.2邏輯運算符和邏輯表達式5.3if語句5.4switch語句4.5格式輸入與輸出第五章選擇結構程序設計返回76第五章邏輯運算和判斷選取控制第五章選擇結構程序設計§5.1關系運算符和關系表達式一、運算符與優(yōu)先級(左結合性)<<=>>===!=同級同級高低算術運算關系運算賦值運算高低77第五章邏輯運算和判斷選取控制二、關系表達式1、關系表達式的形式<表達式><關系運算符><表達式>2、關系表達式的值1——真0——假下列是合法的關系表達式:a+b>c+d(a=3)<(b=5)‘a(chǎn)’!=‘A’(a>b)==(c<d)注意:f=a<b<c表達式的值。如:0<x<5當x=10時,表達式成立78第五章邏輯運算和判斷選取控制§5.2邏輯運算符和邏輯表達式一、運算符與優(yōu)先級!算術運算關系運算&&||高低邏輯運算真值表79第五章邏輯運算和判斷選取控制二、邏輯表達式1、邏輯表達式的值1——真0——假例:設a=4,b=5,則!a為0(假)a&&b-1為1(真)5>3&&2||2<4-!0結果為1①②③④⑤⑥逆波蘭表達式計算過程:從左到右,運算符和其后面的比較,級別底的和前面的數(shù)一起進棧,級別高的運算,最后全部出棧同時完成計算。80第五章邏輯運算和判斷選取控制(m=a>b)&&(n=c>d)

當a=1,b=2,c=3,d=4,m=1,n=1時,執(zhí)行結果m=0,(n=c>d)不被執(zhí)行,n仍然為13、運算中一旦能確定其值,終止計算如計算:a&&b&&ca||b||c2、邏輯運算的對象并非僅限于邏輯量C判斷處理的原則非0——真0——假例if(-5)x=10;elsex=0;思考題:上式去掉括號后m=a>b&&n=c>d結果如何?81第五章邏輯運算和判斷選取控制§5.3if語句(條件語句)一、語句格式任意表達式可以是復合語句格式1:if(e)語句格式2:if(e)語句1else語句2格式3:if(e1)語句1

else

if(e2)語句2

else

if(e3)語句3…...

else

if(em)語句melse語句n82第五章邏輯運算和判斷選取控制二、語句功能格式1:if(e)語句計算e的值并判斷。e值非0,則執(zhí)行語句;否則,執(zhí)行下條語句。格式2:if(e)語句1else語句2計算e的值并判斷。e值非0,則執(zhí)行語句1;否則,執(zhí)行語句2。下條語句語句1語句2e非00下條語句e語句非00goto83第五章邏輯運算和判斷選取控制格式3:if(e)語句1

else

if(e)語句2

else

if(e)語句3…...

else

if(e)語句melse語句n123m計算e1

的值并判斷,其值非0執(zhí)行語句1;否則,判斷e2

的值,其值非0執(zhí)行語句2;否則,判斷e3

的值,其值非0執(zhí)行語句3;否則,.…..判斷em

的值,其值非0執(zhí)行語句m;否則,執(zhí)行語句n00e1e3eme2語句1語句3語句2語句m語句n

下條語句非0非0非0非000….84第五章邏輯運算和判斷選取控制例5.1從鍵盤輸入兩個整型數(shù),輸出最大數(shù)。main(){inta,b;scanf(“%d,%d”,&a,&b);if(a>=b)printf(“max=%d\n”,a);if(b>a)printf(“max=%d\n”,b);}開始enda,ba>ba<bab非0非00085第五章邏輯運算和判斷選取控制例5.1從鍵盤輸入兩個整型數(shù),輸出最大數(shù)。main(){inta,b;scanf(“%d,%d”,&a,&b);if(b>a)a=b;printf(“max=%d\n”,a);}開始enda,bb>aaa=b非0086第五章邏輯運算和判斷選取控制例5.2輸入兩個整型數(shù),按大小輸出。main(){inta,b,temp;scanf(“%d,%d”,&a,&b);if(b>a){temp=a;a=b;b=temp;}printf(“%d,%d\n”,a,b);}開始enda,bb>aa,bab非0087第五章邏輯運算和判斷選取控制例5.3輸入互不相等的三個數(shù),按從小到大順序輸出它們。分析:設已知的三個數(shù)為a,b,c。(1)可直接通過邏輯表達式和條件語句設計程序。(2)可通過條件語句和互換變量值設計程序,即經(jīng)過處理后使:a<b<c88第五章邏輯運算和判斷選取控制方法(1):main(){floata,b,c;scanf(“%f%f%f”,&a,&b,&c);if(a<b&&b<c)printf(“%f,%f,%f”,a,b,c);if(a<c&&c<b)printf(“%f,%f,%f”,a,c,b);

if(b<a&&a<c)printf(“%f,%f,%f”,b,a,c);if(b<c&&c<a)printf(“%f,%f,%f”,b,c,a);

if(c<b&&b<a)printf(“%f,%f,%f”,c,b,a);if(c<a&&a<b)printf(“%f,%f,%f”,c,a,b);}89第五章邏輯運算和判斷選取控制方法(2):main(){floata,b,c,t;scanf(“%f%f%f”,&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}printf(“%5.2f,%5.2f,%5.2f”,a,b,c);}90例5.4求一元二次方程ax2+bx+c=0的解第五章邏輯運算和判斷選取控制求x1、x2x1、x2endd>=0無實根yn開始d=b2-4aca,b,c開始求根:x1、x2x1、x2enda,b,cd=b2-4ac91第五章邏輯運算和判斷選取控制#include<math.h>main(){

float

a,b,c,d,x1,x2;scanf(“%f%f%f”,&a,&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=%f\n”,x1,x2);}elseprintf(“Itisnorealroots.”);}92第五章邏輯運算和判斷選取控制例5.5某運輸公司噸公里基本運費為p,根據(jù)距離s的遠近計費標準如下:

s<250km 沒有折扣

250

s<500 2%折扣 500

s<1000 5%折扣 1000

s<2000 8%折扣 2000

s<3000 10%折扣 3000

s 15%折扣根據(jù)貨物重量w和運距s,求運費f。返回93第五章邏輯運算和判斷選取控制main(){floatp,s,w,d,f;scanf(“%f%f%f”,&p,&s,&w);if(s>=3000)d=0.15;elseif(s>=2000)d=0.10;elseif(s>=1000)d=0.08;elseif(s>=500)d=0.05;elseif(s>=250)d=0.02;elsed=0.0;f=p*w*s*(1-d);printf(“f=%15.2f”,f);}94第五章邏輯運算和判斷選取控制三、if

語句的嵌套嵌套if

的一般形式if()if()語句1

else語句2elseif()語句3

else語句4內(nèi)嵌if內(nèi)嵌if注意:else總是與它上面最近的if配對95第五章邏輯運算和判斷選取控制if()if()語句1elseif()語句2

else語句3內(nèi)嵌ifif()if()語句1elseif()語句2

else語句3內(nèi)嵌ifif()if()語句1else語句2if(){if()語句1}else語句296第五章邏輯運算和判斷選取控制分析:a=0不是二次方程。

b2-4ac=0有兩個相等實根。b2-4ac>0有兩不等實根。b2-4ac<0有兩共軛復根。

#include“math.h”main(){floata,b,c,d,x,x1,x2,xr,xi;scanf(“%f%f%f”,&a,&b,&c);編程:例5.6求一元二次方程ax2+bx+c=0的解97第五章邏輯運算和判斷選取控制求x1、x2x求xr、xix1、x2xr、xiNO!d=0d>0求xyynnd=b-4ac2yna=0開始a,b,cend98第五章邏輯運算和判斷選取控制if

(

fabs(a)<1e-6)printf(“No!”);else{d=b*b-4*a*c;if

(

fabs(d)<1e-6

){x=-b/(2*a);printf(“Twoequalroots:%f”,x);}else

if

(

d>0

){x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);printf(“Tworealroots:%f,%f”,x1,x2);}else{xr=-b/(2*a);xi=sqrt(-d)/(2*a);printf(“Complexroots:%f,%f”,xr,xi);}

}}99第五章邏輯運算和判斷選取控制四、條件運算符與條件表達式1、條件表達式的一般形式<表達式1>?<表達式2>:<表達式3>2、運算規(guī)則先計算表達式1,若為非0,則以表達式2的值作為條件表達式的值;否則,以表達式3的值為條件表達式的值。3、優(yōu)先級算術關系邏輯運算(!除外)條件運算賦值運算高低右結合100第五章邏輯運算和判斷選取控制(1)輸出x和y當中的最大值

z=x>y?x:y;printf(“max=%d”,z);或printf(“max=%d”,x>y?x:y);或x>y?printf(“%d”,x):printf(“%d”,y);舉例:(2)a>b?a:b+1等價于a>b?a:(b+1)而不是(a>b?a:b)+1(3)a>b?a:c>d?c:d等價于a>b?a:(c>d?c:d)(4)x>y?1:5.6表達式的值的類型取高的(5)ch=(ch>=‘A’&&ch<=‘Z’)?(ch+32):ch;101第五章邏輯運算和判斷選取控制§5.4switch語句一、語句格式switch(表達式){case常量表達式1:語句1

case常量表達式2:語句2

……

case常量表達式n:語句ndefault:語句n+1}102第五章邏輯運算和判斷選取控制二、執(zhí)行過程當switch后的表達式的值與某一個case后的常量表達式的值相等時,執(zhí)行其后的語句;若無匹配,則執(zhí)行default后的語句。三、break語句使流程跳出switch結構,終止switch語句的執(zhí)行。103第五章邏輯運算和判斷選取控制例5.7用switch語句設計“例5.5運費程序”跳轉(zhuǎn)s<1d=01<s<2d=0.22<s<4d=0.054<s<8d=0.088<s<12d=0.112<s d=0.15104第五章邏輯運算和判斷選取控制main(){floatp,w,s,d,f;intc;scanf(“%f”,&s);scanf(“%f%f”,&p,&w);if(s>=3000)c=12;elsec=s/250;switch(c){case0:d=0;break;case1:d=0.02;break;case2:case3:d=0.05;break;case4:

case5:case6:case7:d=0.08;break;case8:case9:case10:case11:d=0.1;break;case12:d=.15;break;}f=p*w*s*(1-d);printf(“f=%15.2f”,f);}105第五章作業(yè)第111頁5.3、5.5、5.7上機調(diào)試作業(yè)第111-112頁5.6、

5.7第五章邏輯運算和判斷選取控制106第五章邏輯運算和判斷選取控制習題5.5已知x,求分段函數(shù)值y

main() {floatx,y; scanf(“%f”,&x); if(x<1)y=x; if(x>=1&&x<10)y=2*x-1; if(x>=10)y=3*x-11; printf(“x=%f,y=%f\n”,x,y);}程序1:107第五章邏輯運算和判斷選取控制

main() {floatx,y; scanf(“%f”,&x); if(x<1)y=x; elseif(x<10)y=2*x-1; elsey=3*x-11; printf(“x=%f,y=%f\n”,x,y);}程序2:108第五章邏輯運算和判斷選取控制習題5.6分析:設百分制成績?yōu)閤,成績等級為y‘A’ x90‘B’ 80

x<90‘C’ 70

x<80‘D’ 60

x<70‘E’ x<60y=109第五章邏輯運算和判斷選取控制習題5.1010 a||b||c||d0 其他h=分析:設坐標為(x,y),高度為h 設: a=(x-2)+(y-2)1 b=(x+2)+(y-2)1 c=(x+2)+(y+2)1 d=(x-2)+(y+2)122222222110本章內(nèi)容6.1概述6.2goto語句6.3while語句6.4do-while語句6.5for語句6.6循環(huán)的嵌套6.7幾種循環(huán)的比較6.8break語句和continue語句第六章循環(huán)控制返回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)for循環(huán) (§6.5)§6.1概述112第六章循環(huán)控制§6.2goto語句及其構成的循環(huán)一、goto語句2、語句功能使控制轉(zhuǎn)到語句標號所標識的語句

gotoL1; L2:語句…… …...L1:語句 gotoL2;例:1、語句格式goto語句標號寫在語句前的標識符(后加:)113第六章循環(huán)控制二、用法1、與if語句聯(lián)合使用構成循環(huán)2、用來實現(xiàn)從多重循環(huán)體內(nèi)轉(zhuǎn)出L1:if(e) {循環(huán)體

gotoL1;}(當型循環(huán))L2:循環(huán)體

if(e)

gotoL2;(直到型循環(huán))114第六章循環(huán)控制例6.1求s=1+2+3+….+n的值。

main(){inti=1,sum=0,n;scanf(“%d”,&n);L1:sum=sum+i;i++;if(i<=n)gotoL1;printf(“s=%d”,sum);}

main(){inti=1,sum=0,n;scanf(“%d”,&n);L1:if(i<=n){sum=sum+i;i++;gotoL1;}printf(“s=%d”,sum);}115第六章循環(huán)控制§6.3while語句—“當型”循環(huán)一、語句格式while(e)循環(huán)體二、執(zhí)行過程(先判斷后執(zhí)行)當表達式e值為非0時,執(zhí)行循環(huán)體,然后重復執(zhí)行while語句;當e的值為0時,結束循環(huán),執(zhí)行后繼語句。非00循環(huán)體e單語句或復合語句116第六章循環(huán)控制例6.2求s=1+2+3+….+n的值(用while循環(huán)n=100)。main(){inti=1,s=0,n;scanf(“%d”,&n);while(i<=n){s=s+i;i++;}printf(“s=%d”,s);}main(){inti=1,s=0,n;scanf(“%d”,&n);while(i<=n)s+=i++;printf(“s=%d”,s);}117第六章循環(huán)控制§6.4do-while語句—“直到型”循環(huán)一、語句格式do循環(huán)體while(e);二、執(zhí)行過程(先執(zhí)行后判斷)先執(zhí)行do后的循環(huán)體,然后判斷表達式e的值,若為非0,重復執(zhí)行循環(huán)體,直到while中的表達式e為0,結束循環(huán)。循環(huán)體e0非0單語句或復合語句118第六章循環(huán)控制例6.3求s=1+2+….+n的值(用do-while循環(huán)n=100)。main(){inti=1,s=0,n;scanf(“%d”,&n);do{s=s+i;i++;}while(i<=n);printf(“s=%d”,s);}main(){inti=1,s=0,n;scanf(“%d”,&n);dos+=i++;while(i<=n);printf(“s=%d”,s);}119第六章循環(huán)控制§6.5for語句及其構成的循環(huán)一、語句格式for(表達式1;表達式2;表達式3)循環(huán)體計算表達式1計算表達式3表達式2循環(huán)體下一條語句0非0二、執(zhí)行過程1、計算表達式1。2、判斷表達式2。若非0,執(zhí)行循環(huán)體,轉(zhuǎn)3;否則,結束循環(huán),轉(zhuǎn)4。3、計算表達式3。轉(zhuǎn)2。4、執(zhí)行for語句的下一條語句。120第六章循環(huán)控制三、說明1、for語句最簡單、最常用的應用形式for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)循環(huán)體例6.4求s=1+2+….+n的值(用for循環(huán)n=100)。main(){inti,s=0,n;scanf(“%d”,&n);for(i=1;i<=n;i++)s=s+i;printf(“s=%d”,s);}121第六章循環(huán)控制2、for語句中的三個表達式均可省略注意:(1)分號不能省略。(2)應保證循環(huán)正確執(zhí)行。例main(){inti,s,n;scanf(“%d”,&n);for(i=1,s=0;i<=n;)s+=i++;printf(“s=%d”,s);}main(){inti=1,s=0,n;scanf(“%d”,&n);for(;i<=n;)s+=i++;printf(“s=%d”,s);}main(){inti=1,s=0,n;scanf(“%d”,&n);for(;;){s+=i++;if(i>n)break;}

printf(“s=%d”,s);}122第六章循環(huán)控制例6.5給一年級的小學生出10道100以內(nèi)的加法練習題。分析:1、出題2、回答3、判斷對錯#include“stdlib.h”main(){inti,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)printf(“\nright!\n”);elseprintf(“\nwrong!\n”);}}思考:1、做對幾題2、總成績#include“stdlib.h”main(){inti,x,y,z;intcount=0,score=0;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){printf(“\nright!\n”);count++;score+=10;}elseprintf(“\nwrong!\n”);}printf(“%d,%d\n”,count,score);}123第六章循環(huán)控制例6.6求Fibonacci數(shù)列:1,1,2,3,5,8,….的前30項。分析:f1=f2=1,fn=fn-1+fn-2(n>=3)

(注:一行打印3個數(shù)字)main(){longi=1,j=1,k;intn;printf(“%8ld%8ld”,i,j);for(n=3;n<=30;n++){k=i+j;printf(“%8ld”,k);if(n%3==0)printf(“\n”); i=j;j=k;}}124第六章循環(huán)控制例6.7求分數(shù)序列:1/2,2/3,3/5,5/8,8/13,13/21,….的前20項之和。main(){int

k;floati=1,j=2,s=0;for(k=1;k<=20;k++){s=s+i/j;j=i+j;i=j-i;}

printf(“sum=%10.6f\n”,s);}125第六章循環(huán)控制1、循環(huán)的嵌套概念對各種循環(huán)結構是一樣的,即某一循環(huán)的循環(huán)體內(nèi)包含另一循環(huán)結構。2、各種循環(huán)結構可以互相嵌套。例for嵌套for(;;){….for(;;){….}….}for-while嵌套for(;;){….while(){….}….}§6.6循環(huán)的嵌套—多重循環(huán)126第六章循環(huán)控制1、各種循環(huán)結構可以互相替代,但不提倡使用用goto構成的循環(huán)。2、在while和do-while語句構成的循環(huán)體中必須有使循環(huán)趨于結束的語句,如i++?!?.7幾種循環(huán)的比較3、在while和do-while語句構成的循環(huán)中,循環(huán)變量的初始化必須在循環(huán)之前完成。4、在while、do-while和for語句構成的循環(huán)中,可以用break和continue跳出或結束本次循環(huán)

127第六章循環(huán)控制§6.8break語句和continue語句一、break語句1、用來跳出switch結構。2、用來跳出當前循環(huán)。循環(huán)break;二、continue語句用來結束本次循環(huán),即跳過當前循環(huán)中后繼尚未執(zhí)行的語句,進行下一次循環(huán)循環(huán)continue;128第六章循環(huán)控制例6.8利用公式

2/6=1-2+2-2+3-2+4-2+….求的近似值,直到最后一項的值小于10-8為止。#include“math.h”main(){longi=1;doublepi=0;while(i*i<=1e8){pi=pi+1.0/(i*i);i++;}

pi=sqrt(6.0*pi);printf(“pi=%10.6f\n”,pi);}§6.9程序舉例129第六章循環(huán)控制例6.8利用公式

2/6=1-2+2-2+3-2+4-2+….求的近似值,直到最后一項的值小于10-8為止。#include“math.h”main(){longi;doublepi=0;for(i=1;i<10000;i++){if(i*i>=1e8)break;pi=pi+1.0/(i*i);}

pi=sqrt(6.0*pi);printf(“pi=%10.6f\n”,pi);}130第六章循環(huán)控制例6.9打印100以內(nèi)個位數(shù)為6,且能被3整除的數(shù)。main(){inti,j;for(i=0;i<=9;i++){j=i*10+6;if(j%3!=0)continue;

printf("%d",j);}}可以省略131第六章循環(huán)控制例6.10寫出下列程序的運行結果。main(){inti,j,a=0;for(i=0;i<2;i++){for(j=0;j<4;j++){if(j%2)break;a++;}a++;}printf("%d\n",a);}132第六章循環(huán)控制例6.11打印99表。1*1=11*2=22*2=41*3=32*3=63*3=91*4=42*4=83*4=124*4=161*5=52*5=103*5=154*5=205*5=251*6=62*6=123*6=184*6=245*6=306*6=361*7=72*7=143*7=214*7=285*7=356*7=427*7=491*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=641*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81133第六章循環(huán)控制例6.11打印99表。main(){inti,j;for(i=1;i<=9;i++){for(j=1;j<=i;j++)printf(“

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論