程序設(shè)計基礎(chǔ)——C語言2ppt課件(完整版)_第1頁
程序設(shè)計基礎(chǔ)——C語言2ppt課件(完整版)_第2頁
程序設(shè)計基礎(chǔ)——C語言2ppt課件(完整版)_第3頁
程序設(shè)計基礎(chǔ)——C語言2ppt課件(完整版)_第4頁
程序設(shè)計基礎(chǔ)——C語言2ppt課件(完整版)_第5頁
已閱讀5頁,還剩301頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、程序設(shè)計基礎(chǔ) - C語言授課教師:E-mail:授課班級:第1章 語言概述本章主要介紹C語言程序的結(jié)構(gòu)和書寫規(guī)則,以及Turbo C V2.0的基本操作。1.1 C語言出現(xiàn)的歷史背景1.2 C語言的特點1.3 簡單的C程序的介紹1.4 C程序的上機步驟1.1 C語言出現(xiàn)的歷史背景 1語言的誕生與發(fā)展(1)在C語言誕生以前,系統(tǒng)軟件主要是用匯編語言編寫的。由于匯編語言程序依賴于計算機硬件,其可讀性和可移植性都很差;但一般的高級語言又難以實現(xiàn)對計算機硬件的直接操作(這正是匯編語言的優(yōu)勢),于是人們盼望有一種兼有匯編語言和高級語言特性的新語言。(2)語言是貝爾實驗室于70年代初研制出來的,后來又被多

2、次改進,并出現(xiàn)了多種版本。80年代初,美國國家標準化協(xié)會(ANSI),根據(jù)語言問世以來各種版本對語言的發(fā)展和擴充,制定了ANSI C標準(1989年再次做了修訂)。(本書選定的上機環(huán)境是TC V2.0(DOS操作系統(tǒng))。1.2 C語言的特點C語言同時具有匯編語言和高級語言的優(yōu)勢。(1)語言簡潔、緊湊,使用方便、靈活。(2)運算符極其豐富。(3)生成的目標代碼質(zhì)量高,程序執(zhí)行效率高。(4)可移植性好(較之匯編語言)。(5)可以直接操縱硬件。 (6) 在C語言中,除實現(xiàn)順序、選擇和循環(huán)三種基本結(jié)構(gòu)等的9條控制語句外,輸入輸出操作均由標準庫函數(shù)來實現(xiàn)。所以學習C語言,不僅要學習這9條控制語句和各種運

3、算符,而且要學習并掌握常用標準庫函數(shù)的使用。例1: main() ; 1.3 簡單的C程序介紹1.main代表主函數(shù).每個c程序有且只有一個主函數(shù).2.函數(shù)體是由 括起來的.3.C語言規(guī)定分號為語句的結(jié)束符,每條語句都用分號結(jié)束.4.對于單獨一個分號來說也是一條語句,只不過語句部分為空,即空語句,所以例1是包括空語句的C程序.1. printf是C語言中的輸出函數(shù),功能:將雙引號內(nèi)的字符串原樣輸出.我們注意這條語句結(jié)束后有一個分號.2. n在C語言中表示換行符,是一個控制字符,表示在輸出這條語句后回車換行./* */間的內(nèi)容作為注釋部分,只起到說明的作用,不影響程序的運行.它只是給人看的,可以

4、提高程序的可讀性,對編譯和運行不起作用, 因此注釋可以加在程序中的任何位置.運行結(jié)果: Its a book! (在用戶屏上輸出該語句,并且因為有n這個換行符,光標會移到下一行開頭處.)例2: main() printf (“Its a book! n”) ; /*輸出語句*/ 1. int表示整型,這一行是聲明部分,定義變量a,b,sum為整型變量,這條語句相當于int a; int b; int sum;2. 兩個賦值語句(把123賦值給a,把456賦值給b)這樣a就等于123,b就等于456.例3: main() int a,b,sum; a=123; b=456; sum=a+b; p

5、rintf(“sum is %d n”,sum);3. 賦值計算(把a和b的和賦值給sum)這樣sum就等于a,b之和了.(sum=123+456=579).4. %d是輸入輸出“格式字符串”,用來指定數(shù)據(jù)的類型.%d表示以十進制整數(shù)類型輸出,在執(zhí)行輸出時,此位置上代以一個十進制整數(shù)數(shù)值.(其他的格式字符串:%c,%s,%f).5. 第一個sum原樣輸出.第二個sum表示要輸出的變量,它的值就是a+b的值(579),而且這個值就會替代%d的位置.6.執(zhí)行結(jié)果: sum is 579C程序?qū)嵗阎切稳呴La、b、c的大小,求三解形的面積?請編程實現(xiàn)。#include ”math.h”main

6、( ) int a,b,c; float s,ss; a=3;b=4;c=5; s=(a+b+c)/2.0; ss=sqrt(s*(s-a)*(s-b)*(s-c); printf(”ss=%f ”,ss);若要通過鍵盤輸入三邊怎么辦?scanf(”%d%d%d”,&a,&b,&c);自定義功能函數(shù)來解決三角形面積問題。 #include “math.h” main( ) int a , b, c; float s; scanf(%d%d%d, &a, &b,&c); s=area(a, b,c); /* 調(diào)用函數(shù) */ printf(s=%fn, s); float area(float x

7、, float y,float z) float s,ss; s=(a+b+c)/2.0; ss=sqrt(s*(s-x)*(s-b)*(s-c); return(ss); return是將z的值返回給主函數(shù)main.返回值通過函數(shù)名area帶回到函數(shù)的調(diào)用處.經(jīng)過執(zhí)行area函數(shù)得到一個返回值(即area函數(shù)中變量ss的值)把這個值賦給s,然后輸出s的值.說明:程序如右邊的編制方法,實際上是不能正確運行行的。 #include “math.h” main( ) int a , b, c; float s; scanf(%d%d%d, &a, &b,&c); s=area(a, b,c); /

8、* 調(diào)用函數(shù) */ printf(s=%fn, s); float area(float x, float y,float z) float s,ss; s=(a+b+c)/2.0; ss=sqrt(s*(s-x)*(s-b)*(s-c); return(ss); 程序如何才能運行正常呢?應(yīng)該加上函數(shù)聲明說明:被調(diào)函數(shù)在主函數(shù)后面,且函數(shù)類型為非整數(shù)類型時,一定要使用函數(shù)聲明;函數(shù)聲明位置與主函數(shù)變量定義位置一樣.聲明格式:函數(shù)類型 函數(shù)名(形參類型,開參類型) 或函數(shù)類型 函數(shù)名(形參類型 形參,形參類型 形參) #include “math.h” main( ) int a , b, c;

9、 float s; scanf(%d%d%d, &a, &b,&c); s=area(a, b,c); /* 調(diào)用函數(shù) */ printf(s=%fn, s); float area(float x, float y,float z) float s,ss; s=(a+b+c)/2.0; ss=sqrt(s*(s-x)*(s-b)*(s-c); return(ss); float area(float ,float,float); 功能函數(shù)在前,主調(diào)函數(shù)在后,不需函數(shù)聲明#include “math.h”float area(float x, float y,float z) float s,

10、ss; s=(a+b+c)/2.0; ss=sqrt(s*(s-x)*(s-b)*(s-c); return(ss); main( ) int a , b, c; float s; scanf(%d%d%d, &a, &b,&c); s=area(a, b,c); /* 調(diào)用函數(shù) */ printf(s=%fn, s); 總結(jié):一.一個c程序的組成: 編譯預(yù)處理部分(可選) main() 說明部分 /*變量定義等*/ 執(zhí)行部分 /*輸入輸出計算等*/ 其他函數(shù) (可選,位置任意)二.C語言程序的基本特點C語言是一種函數(shù)式語言,其程序基本組成(單位)是函數(shù)每個C程序必須有一個、也只能有一個主函數(shù)

11、main不管主函數(shù)在程序中的位置如何,程序執(zhí)行總是從主函數(shù)開始所有變量必須先定義(規(guī)定數(shù)據(jù)類型)后使用每個語句必須用分號“;”結(jié)束(注意是“每個語句”而不“每行語句”)編譯預(yù)處理命令不是語句(行末不能用分號結(jié)束)C語言本身沒有輸入/輸出語句,其輸入/輸出功能須通過調(diào)用標準函數(shù)來實現(xiàn)使用系統(tǒng)提供的標準庫函數(shù)或其他文件提供的現(xiàn)成函數(shù)時,必須使用“文件包含”(除了printf和scanf語句)主函數(shù)可以調(diào)用其他各種函數(shù),但其他函數(shù)不能調(diào)用主函數(shù).1.4 C語言程序上機步驟 P5C語言是一種通過編譯程序處理的高級程序設(shè)計語言。所以其上機的處理流程可用以下示意圖表示:在微機上,通常用來編寫、編譯、連接、

12、調(diào)試和執(zhí)行C語言程序的是Borland公司開發(fā)的集成化軟件Turbo C。 源程序(.c)目標程序(.obj)可執(zhí)行程序(.exe)編譯 連接二.TC的菜單(通過F10鍵和Esc鍵切換):File Edit Run Compile Project Options Debug Break/Watch文件操作編輯編譯運行項目文件選項調(diào)試中斷觀察1.File: Load(打開已有的C程序文件) New(新建C程序文件) Save(保存,文件名以 .c為擴展名,如abc.c) Quit(退出TC)2.編輯源文件:在Edit(編輯)狀態(tài)下輸入.3.編譯源文件:選擇并執(zhí)行Compile / Make EX

13、E File項(快捷鍵:F9),則TC將自動完成對當前正在編輯的源程序文件的編譯、連接,并生成可執(zhí)行文件。4.運行與查看結(jié)果 (1)運行當前正在編輯的源程序文件 選擇并執(zhí)行Run / Run項(快捷鍵:Ctrl+F9),程序運行結(jié)束后, 仍返回到編輯窗口。(2)查看運行結(jié)果 選擇并執(zhí)行Run / User Screen項(快捷鍵:Alt+F5)。查看完畢后,按任一鍵返回編輯窗口。5.編輯下一個新的源程序 選擇并執(zhí)行File / New項即可。 如果屏幕提示如下確認信息: NONAME.C not saved. Save?(Y/N) 如果不需要保存當前正在編輯的源程序,則鍵入“N” 如果需要保存

14、當前正在編輯的源程序,則鍵入“Y” 進入下一步操作。系統(tǒng)提示換名: NONAME.C直接輸入你給源程序文件起的名字再按回車即可。6.退出TC返回DOS:File/Quit(快捷鍵:Alt+X鍵)Turbo C編程常用操作(按F1鍵可獲得幫助) Turbo C基本操作 Alt+F 建立新文件 Load/Pick 調(diào)入現(xiàn)有文件 Save 存盤(F2) Write to 換名存盤 Ctrl+F9 運行程序(自動完成編譯/連接) Alt+F5 觀看運行結(jié)果程序調(diào)試常用操作 F5 顯示/關(guān)閉觀察、出錯提示等窗口 F6 編輯窗口(Edit)和信息窗口(Message)窗口切換 Alt+B 設(shè)置斷點/變量觀

15、察(Break/Watch ) 常用: 增加觀察的變量名(Add watch ) F8 單步執(zhí)行 Ctrl+F2 程序重置(重新開始)程序編輯常用操作 Ctrl+KB 設(shè)置塊頭 Ctrl+KK 設(shè)置塊尾 Ctrl+KC 塊復(fù)制 Ctrl+KV 塊移動 Ctrl+Y 刪除一行BACKC語言的數(shù)據(jù)類型2.2.1 標識符、常量和變量1.標識符:是給程序中的實體(變量、函數(shù)名、數(shù)組名等)命名的一個規(guī)則。說明:標識符必須以字母或下劃線開頭,由字母、數(shù)字或下劃線組成的字符序列;用戶不能采用C語言已有的32個關(guān)鍵字作為同名的用戶標識符;標識符長度沒限制;標識符區(qū)分大小寫。關(guān)鍵字:見課本第190頁附錄!標識符

16、示例:sum, PI , aa , bb43 , ch , a_53ff ,_lab ,average,aver都是合法的標識符。 4mm , ma , tt$a , _ch#a 均是不合法的標識符。 思考:count、Count和COUNT是否為相同的標識符?main、float能否作為用戶標識符?2. 常量定義:在程序中,其值不能改變的量叫常量。例:12 , 3 ,12.3 , -2.4 , 3.14159 , a 說明:常量可用宏定義命令#define來定義一個常量的標識,且一旦定義后,該標識將永久性代表此常量,常量標識符一般用大寫字母表示。符號常量的定義定義格式:#define 常量名

17、標識符 數(shù)值例:已知圓半徑為2,求圓面積和周長。main()int r =2; float s,l; s=3.14*r*r ; l=2*r*3.14; printf(“”,);用符號常量解決#define PI 3.14 main( ) int r ; float s ,l; r = 2 ; s = PI * r * r ; l=2*r*PI; printf( s=%f l=%f , s,l ) ; 變量定義:在程序的運行過程中其值可以改變的量。變量的定義格式:類型符變量名,變量名;例:int I,j,k; float a,b,c;變量的初始化:給變量賦初值。變量的初始化(賦值)格式變量名數(shù)值

18、表達式;變量賦值示例#define MAX 20main( ) int a; a=3; MAX=8; 9=a; printf(這樣賦值行嗎?);說明與思考說明:允許變量在定義的同時,進行初始化。例:int a=3,b=4,c=5; float x=2.3;思考:請問如下初始化語句行嗎? int a=b=c=7; 結(jié)束!課下好好復(fù)習,課本至少要看三遍!關(guān)系和邏輯運算及幾種特殊的運算符授課班級:授課時間:主講: 把y=y%(4+x)轉(zhuǎn)變?yōu)閺?fù)合賦值表達式;把表達式a/=b-3轉(zhuǎn)換為一般賦值形式;程序段:int a; float s=9; a=s%4;是否合法,若有錯,將如何將其改正? 程序:#def

19、ine PI 3 main() int a; PI+; a=PI;printf(“a=%d”,a); 是否有錯,若有錯,錯在哪里?若:int a=4;char t=0; float d=9; 則表達式:19*a-t/d的值類型是什么? 考查上次內(nèi)容關(guān)系運算和邏輯運算關(guān)系運算關(guān)系運算是指數(shù)據(jù)之間的關(guān)系(比如數(shù)間的大小等) 關(guān)系運算的結(jié)果要么為真,要么為假,若為真,就用1表示,為假,就用0表示。邏輯運算邏輯是指事物之間的內(nèi)在聯(lián)系,它常用來組合若干個關(guān)系運算,來描述一定的條件。關(guān)系運算關(guān)系運算符 、 =、 =、 != 相同優(yōu)先級相同優(yōu)先級高低關(guān)系表達式 若a = 3 , b = 2 , c = 1,

20、則下列表達式的值 分別為多少? (a b )= = c b + c a f = a c (ab)= =c= =11 b+ c a3 30 f= a c0 101邏輯表達式邏輯運算符&(邏輯與) |(邏輯或) ?。ㄟ壿嫹牵┮姇鳳29表2.6邏輯運算符的優(yōu)先級邏輯運算的優(yōu)先級| & ! 優(yōu)先級低高說明 &和|的優(yōu)先級低于關(guān)系運算符,但!高于算術(shù)運算符;邏輯表達式中的邏輯量,若不是0,則認為該量為真; 見書29說明部分邏輯表達式邏輯表達式說明:邏輯表達式的值是一個具有真假屬性的邏輯量,若一個量為非0值,則認為是真,用1表示。應(yīng)用示例判斷某年year是否為閏年;(提示:某年若是閏年,則必須符合下列條件

21、之一:.該年可以被4整除,但不能被100整除;.該年可以被400整除) y%4=0y%100!=0&()y%400=0()|活 動用C語言描述下列邏輯關(guān)系1. x和y中有一個大于z; 2. x不能被y整除; xz | yz 或 (xz)|(yz) x % y ! = 0 關(guān)于邏輯運算的特殊說明說明在邏輯表達式的求解過程中,并不是所有的邏輯量、運算符都被執(zhí)行,只是必須執(zhí)行該邏輯量才能求出整個表達式的解時,才執(zhí)行該運算量或運算符。 見書P29(2)示例表達式1&表達式2中,若表達式1為0,則計算機不再考慮表達式2的值的情況,也就是說表達式不再執(zhí)行 ?;?動1.若有程序段int a=5,b=9,s;

22、 s=(a-=5)&+b;則計算機執(zhí)行該程序段后,s、a和b分別是多少? 2.若a=9,b=10,c=1,d=7,x=8,y=15 ,則計算機執(zhí)行了語句:m=(x=ab) & (y=cb? a:b 條件運算符的應(yīng)用說明條件運算符的結(jié)合方向為從右往左 。如:a b ? a : b c ? b : c 等價于ab ? a : (b c ? b:c) 示例用條件運算符求三個數(shù)中的大者,編程實現(xiàn) main( )int a,b,c,max; scanf(%d,%d,%d,&a,&b,&c);max=a(bc?b:c)? a :(bc?b:c);printf(a=%d,b=%d,c=%d,max=%dn,

23、a,b,c,max);作 業(yè)書本作業(yè)P35-P37:一、二題剩余部分編程作業(yè)P37:3、4類型修飾符及輸入輸出的實現(xiàn)授課班級:授課時間:任課教師:DATE yyyy/M/d|2021/10/2846復(fù)習上次內(nèi)容1.找出哪些是合法的整型常量:045、0 x89g、90、078、0 x11f2.找出哪些是非法的實型常量:0.45、0 x6.7、e9、0.7e0.23.找出哪些是合法的字符常量:9、 056 、 x11 、 &4.說出float與double及字符型數(shù)據(jù)各占幾個字節(jié)內(nèi)存單元?5.說出相關(guān)ASCII碼值6.說出字符串常量”how”占幾個字節(jié)的內(nèi)存單元?DATE yyyy/M/d|202

24、1/10/284748.基本類型修飾符回顧(課本P15)基本的類型修飾符signed(有符號)unsigned(無符號)long(長型)short(短型)類型修飾符修飾整型的情況(P19)說明1:基本類型修飾符主要用于修飾int型數(shù)據(jù)DATE yyyy/M/d|2021/10/2849說明2當類型修飾符獨自使用時,則認為是修飾int型的。因此,下面幾種類型修飾符是等效的:(見書P21)修 飾 符 等 效 于signed signed int或intunsigned unsigned intlong long int short short int 說明3當要表示某個整型常數(shù)為常整型時,可直接在

25、該數(shù)后面加“L”。DATE yyyy/M/d|2021/10/2850活動:分析下面程序運行結(jié)果main( ) int x1,y1; long x2,y2; x1=32767;y1=32769; x2=32767L;y2=32769L; printf(x1=%d,x2=%ldny1=%d,y2=%ld,x1,x2,y1,y2);DATE yyyy/M/d|2021/10/2851運行結(jié)果x1=32767,x2=32767y1=-32767,y2=32769 DATE yyyy/M/d|2021/10/28522.輸入輸出實現(xiàn)及其函數(shù)應(yīng)用說明:C語言中,輸入輸出是由函數(shù)庫提供的,這些輸入、輸出函

26、數(shù)包含在頭文件stdio.h中;在使用輸入輸出函數(shù)時,一般要在程序最前面加上#include ,或#include ”stdio.h”格式輸出函數(shù):printf()格式輸入函數(shù):scanf()不過,scanf()與printf()函數(shù)可不要!DATE yyyy/M/d|2021/10/2853printf函數(shù):格式輸出函數(shù)格式printf(格式控制,輸出表列)格式控制格式說明:由“%”和格式字符組成普通字符:需要原樣輸出的字符用雙撇號括起的字符組合輸出表列:由若干個待輸出的數(shù)據(jù)變量組成如:程序段int a=6;printf(“a=%d”,a); 例:如程序段:int x=9,y=7,z=6;

27、printf(“x=%d ,y=%d,z=%d”,x,y,z);DATE yyyy/M/d|2021/10/2854scanf函數(shù):格式輸入函數(shù)格式scanf(格式控制,地址表列)與printf函數(shù)的用法相同地址項由&開頭,與格式符呈一一對應(yīng)說明:在scanf函數(shù)的“格式控制”中,除格式控制符之外,其它字符在輸入數(shù)據(jù)時,照輸入;若格式控制符之間沒有其它字符間隔,則輸入數(shù)據(jù)時,可用“空格”或“回車”鍵作為間隔符。例主要格式控制符(見P21):%d %c %s %f DATE yyyy/M/d|2021/10/2855活 動如下程序在執(zhí)行過程中,若這樣輸入:12,7 4.1 6.3,試分析可能的結(jié)

28、果?main ( ) int a , b ;float c ,d ; printf (請輸入變量的值: ) ; scanf ( %d%d , &a , &b ) ; scanf (%f , %f , &c ,&d ) ; printf ( %d %d %f %f , a , b , c , d ) ;DATE yyyy/M/d|2021/10/28563.字符輸入輸出函數(shù)putchar函數(shù):字符輸出函數(shù)格式:putchar(字符變量/字符常量)getchar函數(shù):字符輸入函數(shù)格式:getchar( )getchar和putchar函數(shù)每次只能處理一個字符,而且getchar函數(shù)沒有參數(shù)。 說明

29、:DATE yyyy/M/d|2021/10/2857活 動編一個小程序,應(yīng)用字符輸入輸出函數(shù)實現(xiàn)一個字符的輸入和輸出#include “stdio.h”main( ) char c; c=getchar( ); putchar( c );putchar(getchar( ) );DATE yyyy/M/d|2021/10/2858作業(yè)P35:P37:DATE yyyy/M/d|2021/10/28592.3基本數(shù)據(jù)類型授課班級:授課時間:任課教師:復(fù)習上次內(nèi)容Free Template from 61學習效果測評找出下面哪些不是合法用戶標識符按要求寫出符號常量的定義將9.78定義成符號常量r

30、觀察下面的變量賦值是否正確?int a=b=c=7;#ab、-aa、INT、_7aFree Template from 62基本數(shù)據(jù)類型整型數(shù)據(jù)(int:integer) 單精度:(float )雙精度:(double)字符型數(shù)據(jù)(char:character) 字符串常量實型數(shù)據(jù)Free Template from 631.整型數(shù)據(jù)整型常量整型變量整型變量所占的空間整型變量在內(nèi)存中占2個字節(jié)單元16位的內(nèi)存空間整型變量的定義格式類型符:int定義格式:int 變量名表;例:int a,b;整型數(shù)據(jù)的輸入輸出格式格式符:%d示例:scanf(“%d”,&a);printf(“%d”,a);Fr

31、ee Template from 642.實型數(shù)據(jù)實型常量實型變量實型變量所占的空間雙精度8個字節(jié)單精度4個字節(jié)32位內(nèi)存空間實型變量的定義類型符:float double定義格式float a,b;double c ,d;實型數(shù)據(jù)的輸入輸出格式格式符:%f示例:scanf(“%f”,&a);scanf(“%f”,&c);printf(“%f”,c);Free Template from 65討論分析下面程序中是否有錯誤,若有,在哪里?main( ) double x,y; float z; scanf(“%d%d”,&x,&y); z=x+y; printf(“%f”,z);格式控制符有錯!

32、應(yīng)該是:%f類型不一致!Free Template from 663.字符型數(shù)據(jù)字符常量字符變量字符型數(shù)據(jù)所占的空間占1個字節(jié)的單元8位的內(nèi)存空間字符變量的定義類型符:char定義格式char a,b;字符變量的輸入輸出scanf(“%c”,&a);printf(“%c”,a);字符型數(shù)據(jù)的存儲格式:以ASCII碼值的形式ASCII碼見P189附錄Free Template from 67轉(zhuǎn)義字符表Free Template from 68討論 main( ) char c1 , c2 ; int a ; c1= a , c2 = 98 ; a = a; printf( c1=%c c2=%c

33、 a=%d , c1 ,c2 , a) ;分析該程序是否有問題Free Template from 694.字符串常量字符串常量:用雙撇號括起的若干字符序列例:”china”、”am$”等字符串的存儲例: ”china”的存儲情況:china099104105110970C語言沒有專門的字符串變量Free Template from 705.作業(yè)課本P35一、選擇題:2-6是該做點事了!Free Template from 71基本運算主講:授課班級:授課時間:活動:復(fù)習上次內(nèi)容1. 說出signed int類型數(shù)據(jù)的表示范圍2. 說出unsigned int類型數(shù)據(jù)的表示范圍3. 說出lon

34、g int類型數(shù)據(jù)在內(nèi)存中占幾個字節(jié)?4. 若有“scanf(”a=%d,%d”,&a,&b); ” ,試問如何輸入正確數(shù)據(jù)?5.若有字符型變量C,請用字符輸入輸出函數(shù)實現(xiàn)其輸入和輸出。1. 基本運算算術(shù)運算符操作符 作 用 + 加法運算 - 減法運算 * 乘法運算 / 除法運算 % 求模(求余)運算見書P24,表2-4說明運算符“/”參加運算時,若其左右兩邊的運算數(shù)中有一個為實數(shù)類型,則結(jié)果為實數(shù),否則,結(jié)果取整;當兩運算數(shù)同時為整數(shù)時,其運算結(jié)果自動取整運算符“%”要求其運算數(shù)必須為整數(shù);算術(shù)表達式:用算術(shù)運算符及括號將數(shù)據(jù)對象連接起來的式子 例:a*d/c-2.7+2討論: 表達式:19

35、+2-4中,計算機是先計算19 + 2,還是 先計算2 - 4 ?而19+ 2 / 4 呢?這牽涉到“結(jié)合性”與“優(yōu)先級”結(jié)合性:一般是左結(jié)合(自左向右運算)優(yōu)先級:運算的優(yōu)先順序(見P191)() 負號 *、/ 、% +、- 低高見書P242.賦值運算符及賦值表達式賦值運算賦值運算符:=賦值表達式:格式:變量名=表達式;如:int a=3,b=2,c;則:c=a+b;b=b+a;等復(fù)合賦值int a=0 ;a=a+20 ;int a=0 ;a+=20 ;活 動1.將下面賦值表達式轉(zhuǎn)換為復(fù)合賦值表達式a=a- 10/x;y=y*(a+8);a - = 10/x;y*=a+8;2.將下面復(fù)合賦值

36、形式轉(zhuǎn)變?yōu)橐话阗x值形式 x/=y-3; z+=m%2; x=x/(y-3); z=z+m%2;自增和自減運算兩個運算符均為單目運算符,且優(yōu)先級在算術(shù)運算中最高 增量運算符:+ + 減量運算符:- -應(yīng)用情況見書P26表2.5說明:見書P26,表2.5下部分活 動分析下面語句執(zhí)行后x與y的值? x=10; y=+x; x=10; y=x+; x=10; y=-x; x=10; y=x-;x=11 y=11x=11 y=10 x=9 y=9x=9 y=10 分析:9+是什么意思?3. 表達式中的類型轉(zhuǎn)換自動類型轉(zhuǎn)換說明:不同類型數(shù)據(jù)參加運算時,表示范圍小的數(shù)據(jù)類型自動向表示范圍寬的類型轉(zhuǎn)換。轉(zhuǎn)換情

37、況如下:見書P31強制類型轉(zhuǎn)換一般形式:(類型) 表達式活動:分析下面程序 main( ) int a=2 ,b=7,c; float x=15.5 ,y , z; y=a/b ; z=(float)a/b ; c=(int)x % a ; printf(y=%f z=%f c=%d x=%f,y,z,c,x);作 業(yè)書中P37,二題的相關(guān)內(nèi)容書面作業(yè):實踐作業(yè):P34實訓(xùn)第3章 程序設(shè)計初步授課班級:授課時間:主講:1)設(shè)有語句int a=3;則執(zhí)行語句a+=a-=a*a后,變量a的值是( )(A) 3 (B) 0 (C) 9 (D) 122)判斷char型變量c1是否為小寫字母的正確表達式

38、是( )A、a=c1=a)&(c1=z) C、 98=c1 D、c1=a&c1b ? 97:65;后s的值是多少? 5)以下程序的輸出結(jié)果是 ( )main( ) int a=3; printf(%dn,(a + = a - = a * a);A、-6 B、12 C、0 D、-12技能考核順序結(jié)構(gòu)ABab選擇結(jié)構(gòu)PABab循環(huán)結(jié)構(gòu)PAab3.1 三種基本結(jié)構(gòu)討論三種結(jié)構(gòu)的特點三種基本程序結(jié)構(gòu)的特點(1)程序只有一個入口;(2)程序只有一個出口;(3)程序結(jié)構(gòu)內(nèi)的每一部分都有機會被執(zhí)行;(4)程序結(jié)構(gòu)內(nèi)不存在死循環(huán)。 見書P40復(fù)合語句復(fù)合語句:用 括起來的若干條語句舉例說明:一個國家是聯(lián)合國常

39、任理事國,則他將盡許多義務(wù):參與國際維和行動、參與聯(lián)合國會務(wù)、向聯(lián)合國安理會繳年費等。轉(zhuǎn)變成類C格式main( ) . if (一個國家是聯(lián)合國常任理事國) 參與國際維和行動; 參與聯(lián)合國會務(wù); 向聯(lián)合國安理會繳年費等; .main ( ) int a,b,t; printf(“Input a,b:”); scanf(“%d%d”,&a,&b); printf(“a=%d,b=%dn”,a,b); t=a;a=b;b=t;/*復(fù)合語句*/ printf(“a=%d,b=%d”,a,b);分析下面程序3.2 if語句if語句格式:if (表達式) 語句 if(xy) printf(”%d” ,x

40、);例:輸入三個數(shù),要求按由小到大的順序輸出。分析:若輸入的三個數(shù)分別存儲在變量a、b、c中,我們設(shè)想經(jīng)過一定的處理后,a中存最小的,c中存最大的,b存中間數(shù)。如果 ab 為真a b交換如果 ac 為真a c交換如果 bc 為真b c交換 if應(yīng)用舉例main ( ) float a , 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

41、 = t ; printf ( “ % f , %f , %f “ , a ,b ,c ) ;if-else結(jié)構(gòu)語句if-else結(jié)構(gòu)語句格式: if (條件)S1elseS2是一條語句是一條語句說明:如果表達式的值為真,則執(zhí)行語句1,否則執(zhí)行語句2 。 見書P47活 動用if-else完成如下問題:輸入兩個整數(shù),輸出其中的大數(shù)(用if-else語句判別a,b的大小,若a大,則輸出a,否則輸出b)。main()int a,b,max; scanf (”%d%d ” ,&a ,&b); if (ab) max=a; else max=b; printf(”max=%d” ,max); 考慮用條件

42、表達式如何實現(xiàn)?max= a b ? a : b ;if 語句的嵌套 格式:if (條件1)if (條件2)語句1else語句2elseif(條件3)語句3else語句4內(nèi)嵌if-else語句內(nèi)嵌if-else語句示 例y=-1 (x0) main ( ) int x ,y ; scanf ( “ %d “ ,&x ) ; if ( x = 0 ) if ( x 0 ) y = 1 ; else y = 0 ; else y = -1 ; printf(”x=%dty=%d”,x,y);作 業(yè)書上作業(yè)P54:一;二:1、2本上作業(yè)P56 1-3switch多路開關(guān)選擇語句 C語言格式:swit

43、ch ( 表達式 )case 常量表達式1 : 語句1 case 常量表達式2 : 語句2 case 常量表達式n : 語句n default : 語句n+1; break; break; break;示例1輸入一成績等級,輸出其所在相應(yīng)的百分制成績段,其中:A:85100;B:7084;C:6069;D:60#include stdio.hmain()char grade; grade=getchar(); switch(grade) case A:printf(85100n); case B:printf(7084n); case C:printf(6069n); case D:print

44、f(60n); default:printf(errorn); break;break;break;break;活動:思考如何實現(xiàn)下題運輸公司有如下約定:運費的折扣按路程(S)而定,具體如下:S250沒有折扣;250S500 2%折扣;500 S1000折扣為5%;1000 S2000折扣為8%,2000 S折扣為10%,試輸入一路程,求其相應(yīng)的折扣數(shù)分析開關(guān)結(jié)構(gòu):其中S為整型,d為實型.switch(s/250) case 0: d=0;break; case 1: d=2.0/100;break; case 2: case 3:d=5.0/100;break; case 4: case 5

45、: case 6: case 7:d=8.0/100;break; default:d=10.0/100;break;作業(yè)書上作業(yè)P55 二:3本上作業(yè)P56 :4(用switch實現(xiàn))break與continue語句授課班級:授課時間:主講:活動:技能考核分析運行結(jié)果main( ) int x=3; doprintf(”%3d”,x-=2); while(!(-x);main()int I=0,k=0,s=0; while(k=1,I+)printf(”%dn”,I);break與continue的功能分析:while ( ) break ; while ( ) continue ; 見書P

46、65下面!活動:分析程序段的功能for ( r = 1 ; r 100 ) break ;最初程序功能分析輸出半徑分別為110的圓的面積添加break后分析輸出半徑分別為15的圓的面積應(yīng)用示例1把100 200之間不能被3整除的數(shù)輸出。 main ( )for(n=100;n=200;n+)int n ;if (n%3!=0)printf(”%dt” ,n);main ( )for(n=100 ; n=200 ; n+)int n ;if (n%3= =0)continue ;else printf(”%dt” ,n);應(yīng)用示例2求100 200之間的全部素數(shù)。 分析:判斷一個數(shù)是否為素數(shù)的程

47、序應(yīng)該是這樣的:main ( ) int n , m , sign = 1 ; printf (“請輸入一個大于3的正整數(shù)n:”) ; scanf ( “ % d “ , &n) ; for ( m = 2 ; m = n/2 ; m + + ) if ( n % m = = 0) sign = 0 ; if ( sign = = 0 ) printf ( “%d不是素數(shù)!” , n) ; else printf( “ %d是素數(shù)!” , n) ;for(I=100;I 200;I+)求100 200之間的全部素數(shù)。main( )for(m=101 ; m200 ; m+)k=m / 2;fo

48、r(I=2;I=k+1)j+;if(j%10 =0)printf(” n” );別忘掉變量定義!int m,k,I,j=0;一個窮舉法的應(yīng)用示例編程完成用一元人民幣換成一分、兩分、五分的所有兌換方案,即輸出所有滿足搭配要求的1分幣個數(shù)、2分幣個數(shù)、5分幣個數(shù)。 示例編程for(one=0;one101;one+)main( )for(two=0;two51;two+)for(five=0;five 21;five+)if (1*one +2*two+5*five=100)printf(”one:%dttwo:%dtfive:%d”,one,two,five);int one,two,five

49、;作業(yè)書上作業(yè)P73一、二本上作業(yè)P75:5、6授課班級:授課時間:主講:4循環(huán)結(jié)構(gòu)程序設(shè)計Free photoshow template from 110說出或?qū)懗鰏witch多分支結(jié)構(gòu)的框架技能考核下面程序段是為了實現(xiàn):若ab為真,就使m=8、a=9;否則,m=5、b=7,看能否實現(xiàn)?if ( a b ) m=8; a=9;else m=5; b=7;判斷下面語句是否有錯?if (8) ;switch結(jié)構(gòu)中必須有break嗎?一定有default嗎?Free photoshow template from 111循環(huán)程序結(jié)構(gòu)C語言構(gòu)成循環(huán)的語句 1)用goto語句和if語句構(gòu)成循環(huán); 2)

50、用while語句構(gòu)成循環(huán); 3)用do - while 語句構(gòu)成循環(huán); 4)用for語句構(gòu)成循環(huán); Free photoshow template from 112goto語句構(gòu)成循環(huán)格式:goto 語句標號; 標號指出程序流程轉(zhuǎn)向的入口處 說明:語句標號用標識符表示 示例求1 + 2 + 3 + + 100 的和main( ) int I,sum=0;I=1; sum = sum + I ; I+ ; goto loop;loop: if ( I = 100) sum=sum + I; I +; goto loop; printf(”%d” ,sum ); loop是標號,不是變量,不需要定

51、義,隨時可用!Free photoshow template from 113while語句構(gòu)成循環(huán)格式:while(表達式) 循環(huán)體語句流程圖若循環(huán)體語句有兩條及其以上,必須用復(fù)合語句表達式循環(huán)體語句0非0Free photoshow template from 114while應(yīng)用舉例例 顯示110的平方#include main() int i=1; while(i=10) printf(%d*%d=%dn,i,i,i*i); i+; 運行結(jié)果:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100循環(huán)變量賦初值循環(huán)條件循

52、環(huán)體語句Free photoshow template from 115活 動當n的值為3的時候,分析程序運行結(jié)果main( ) int a=0,n; scanf(%d,&n); while (n-) printf(“%d ”,a+*2); 分析如下程序段運行多少次?main( )int a,n=0; while(a=5) a-=5; printf(%d ,n+); Free photoshow template from 116do-while格式 do 循環(huán)體語句 while ( 表達式 ) ; 多條語句時,要用括起流程圖思考while和do-while循環(huán)的區(qū)別?有分號!循環(huán)體語句0非0

53、表達式Free photoshow template from 117do-while應(yīng)用示例求:1 +2+3+100 main() int I,sum=0; I=1; do sum=sum+I; I+; while(I3)是否為素數(shù)。 分 析: 8的因子有:2、4 15的因子有:3、5 16的因子有:2、4、8 20的因子有:2、4、5、10 結(jié) 論:任何數(shù)的因子不可能超過其自身的一半循環(huán)控制分析:循環(huán)變量初值:m = 2 循環(huán)條件:m = n/2 循環(huán)變量增值:m + + Free photoshow template from 120編碼main ( ) int n , m , sign

54、 = 1 ; printf (“請輸入一個大于3的正整數(shù)n:”) ; scanf ( “ % d “ , &n) ; for ( m = 2 ; m y?x:y; return(z); 例 有參函數(shù) int max(int x, y) int z; z=xy?x:y; return(z); 例 空函數(shù) dummy( ) 函數(shù)體為空例 無參函數(shù) void printstar( ) printf(“*n”); 或void printstar(void ) printf(“*n”); 函數(shù)的定義格式函數(shù)的定義及應(yīng)用示例1編制一個求n!的函數(shù),并用它來求1!+2!+3!+10!long fac(int

55、 n)int I;long j =1;for(I=1;I=n;I+)j * I; j=return(j);main( )int I;long sum=0;for(I=1;Ib) return a; else return b; 函數(shù)的調(diào)用形式1、直接函數(shù)語句:例 printstar();printf(“Hello,World!n”);2、表達式調(diào)用函數(shù):例 m=max(a,b)*2;3、函數(shù)作為函數(shù)的參數(shù):例 printf(“%d”,max(a,b);m=max(a,max(b,c);函數(shù)應(yīng)用示例2求100300之間所有的素數(shù),要求用功能函數(shù)實現(xiàn)判斷一個數(shù)是否為素數(shù)的問題,主調(diào)函數(shù)具體求解?;?/p>

56、動:由學生先試寫判斷素數(shù)的功能函數(shù)int prime(int n)int I; int sign=1; for(I=2;I=n/2;I+) if(n%I=0) sign=0; break; return(sign); main( ) int I; for(I=100;I=0 ? x : -x ; return( f ) ;main( ) float value,m; float abs_value( float );printf(”Input a data:” );scanf(”%f”,&value );abs_value(value);m=printf(”%f ” ,m );作業(yè)書上練習P1

57、00:一:1-8;本上練習P102:二:1-2函數(shù)的參數(shù)傳遞和嵌套、遞歸調(diào)用授課班級:授課時間:主講:形參與實參1、形式參數(shù):定義函數(shù)時函數(shù)名后面括號中的變量名;2、實際參數(shù):調(diào)用函數(shù)時函數(shù)名后面括號中的表達式或變量名。c=max(a,b);(main 函數(shù))(max 函數(shù))max(int x, int y) int z; z=xy?x:y; return(z); 例 比較兩個數(shù)并輸出大者main() int a,b,c; scanf(%d,%d,&a,&b); c=max(a,b); printf(Max is %d,c);max(int x, int y) int z; z=xy?x:y;

58、 return(z);形參實參函數(shù)的參數(shù)及傳遞方式值傳遞方式 函數(shù)調(diào)用時,為形參分配單元,并將實參的值復(fù)制到形參中;調(diào)用結(jié)束,形參單元被釋放,實參單元仍保留并維持原值。特點:1、形參與實參占用不同的內(nèi)存單元2、單向值傳遞:只能由實參傳向形參,而形參的值不會影響到實參的值。函數(shù)的參數(shù)值傳遞方式/*值傳遞舉例*/#include main() int x=7,y=11; printf(x=%d,y=%dn,x,y); swap(x,y); printf(x=%d, y=%dn,x,y);swap(int a,int b) int temp; temp=a; a=b; b=temp;值傳遞方式舉例例

59、子圖解711x:y:調(diào)用前:調(diào)用:711a:b:711x:y:swap:711x:y:117a:b:temp調(diào)用結(jié)束:711x:y:嵌套調(diào)用C規(guī)定:函數(shù)定義不可嵌套,但可以嵌套調(diào)用函數(shù)函數(shù)的嵌套調(diào)用main( )調(diào)用函數(shù)a結(jié)束a函數(shù)b函數(shù)調(diào)用函數(shù)b#include void main() int a,b,c,d; scanf(%d%d%d,&a,&b,&c); d=dif(a,b,c); printf(Max-Min=%dn,d); /*求最大與最小之差*/int dif(int x,int y,int z) return max(x,y,z)-min(x,y,z); /*求最大數(shù)*/int

60、max(int x,int y,int z) int r; r=xy?x:y; return(rz?r:z); /*求最小數(shù)*/int min(int x,int y,int z) int r; r=xy?x:y; return(rz?r:z); 函數(shù)的嵌套調(diào)用舉例求三個數(shù)中最大數(shù)和最小數(shù)的差額main( )調(diào)用函數(shù)dif輸出結(jié)束dif函數(shù)max函數(shù)調(diào)用函數(shù)max調(diào)用函數(shù)minmin函數(shù)定義:函數(shù)直接或間接的調(diào)用自身叫函數(shù)的遞歸調(diào)用調(diào)f2調(diào)f1f1( )f2( )f( )調(diào)fint f(int x) int y,z; z=f(y); . return(2*z);int f1(int x) in

溫馨提示

  • 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

提交評論