《C語言程序設(shè)計》講稿_第1頁
《C語言程序設(shè)計》講稿_第2頁
《C語言程序設(shè)計》講稿_第3頁
《C語言程序設(shè)計》講稿_第4頁
《C語言程序設(shè)計》講稿_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、00C語言程序設(shè)計講稿目錄第一講C語言概述 1第二講C語言程序介紹2第三講算法6第四講數(shù)據(jù)類型(1) 17第五講數(shù)據(jù)類型(2) 23第六講運算符和表達式(1) 28第七講運算符和表達式(2) 36第八講輸入輸出函數(shù)及順序結(jié)構(gòu) 38第九講選擇結(jié)構(gòu)程序設(shè)計(1) 46第十講選擇結(jié)構(gòu)程序設(shè)計(2) 56第H一講循環(huán)結(jié)構(gòu)(1) 61第十二講循環(huán)結(jié)構(gòu)(2) 68第十三講習題課72第十四講一維數(shù)組的定義和使用 79第十五講二維數(shù)組87第十六講字符數(shù)組和字符串92第十七講函數(shù)(1) 98第十八講函數(shù)(2) 106第十九講習題課&文彳牛107第二十講結(jié)構(gòu)體和共用體108第二十一講C語言屏幕操作函數(shù) 1

2、09第二十二講C語言實現(xiàn)圖形動畫效果 11000第一講C語言概述學時:2學時授課形式:多媒體講解+實例程序演示教學目標:對C程序有一個初步的認識;了解 C語言的發(fā) 展;掌握C語言的特點。主要內(nèi)容及時間安排(課堂90分鐘,80分鐘講課,10分 鐘總結(jié)):(1) C語言程序設(shè)計課程介紹:包括課程標準、課堂要求、 學習方法等(20分鐘);(2) 實例演示+編譯環(huán)境簡介:4個實例(包括科學計算、 數(shù)據(jù)排序查找、小型應用系統(tǒng)、圖形動畫效果),每個實例使用 一種編譯環(huán)境,在觀看實例效果的同時簡單了解 C語言編譯運 行環(huán)境(20分鐘);(3) C語言發(fā)展簡史(包括計算機語言的進化、 C語言的 發(fā)展等)(10

3、分鐘);(4) C語言特點介紹:包括與其他語言相比的優(yōu)點、簡單 介紹數(shù)據(jù)類型、關(guān)鍵字、流控結(jié)構(gòu)等(30分鐘);(5) 總結(jié)本節(jié)課程的主要內(nèi)容,布置課后練習題。(10分 鐘);重點:C語言特點中的數(shù)據(jù)類型、關(guān)鍵字和流控語句簡介教學內(nèi)容細節(jié):具體內(nèi)容參加幻燈片。第二講C語言程序介紹學時:2學時授課形式:板書+多媒體+實例程序演示教學目標:了解C語言的語法及結(jié)構(gòu);掌握 C語言的編寫 流程;熟悉C語言的編譯環(huán)境VC+6。主要內(nèi)容及時間安排(課堂90分鐘,80分鐘講課,5分鐘 復習,5分鐘總結(jié)):(6) 以提問的方式復習上節(jié)課的內(nèi)容(5分鐘);(7) 通過實例編寫簡單程序(先用多媒體展示第一個實例 程序

4、,要求學生了解一般 C程序的編寫流程,然后在編譯環(huán)境 演示程序執(zhí)行過程,總結(jié) C語言程序的基本結(jié)構(gòu)和語法要求) (15分鐘);(8) 通過實例演示程序的運算功能(先用多媒體展示編寫 程序,一一講解給學生,要求學生具有變量需要先定義的理念, 然后在編譯環(huán)境進行實例程序演示,掌握具有輸入函數(shù)的C語言程序的運行過程)(15分鐘);(1) 通過上述實例,利用板式總結(jié)C語言的編寫和編譯過 程(借助VC+6.0來展示C語言的編寫和執(zhí)行過程)(10分鐘);(5) C語言結(jié)構(gòu)特點總結(jié)(C語言由函數(shù)構(gòu)成、書寫格式 自由、輸入輸出由函數(shù)實現(xiàn)、語句結(jié)束要有分號、main函數(shù)是函數(shù)開始和結(jié)束之處等)(20分鐘);(6

5、) C語言上機編譯環(huán)境介紹(主要介紹TC VC+ Rarnu_CV1.0三個編譯環(huán)境,主推 Rarnu_CV1.0編譯環(huán)境)(20分鐘);(7)總結(jié)本節(jié)課程的主要內(nèi)容并布置課后練習題 (5分鐘);重點:C語言的程序結(jié)構(gòu)、C語言語法細節(jié)、C語言編譯過 程、C語言運行環(huán)境等;難點:C語言語法細節(jié)和程序結(jié)構(gòu)。教學內(nèi)容細節(jié):一、通過提問的方式復習上節(jié)課程的主要內(nèi)容。二、實例演示(1)實例1-1簡單輸出:#include <stdio.h> /*包含文件 */main() /*程序從函數(shù) main開始執(zhí)行*/*在屏幕上輸出引號內(nèi)內(nèi)容*/printf("I am a programm

6、erlike C!");/*函數(shù)main結(jié)束*/程序說明:main函數(shù)表示主函數(shù),每個程序必須有且只能有一個main函數(shù),函數(shù)體(功能語句)放在內(nèi)。printf是C語言的輸出函數(shù),它的作用是將中的內(nèi)容原樣輸出。其中“n”是換行符。以/*和*/括起來的是注釋,程序運行期間是不執(zhí)行的只是增加程序的可讀性。400(2)實例1-2簡單計算:/*求兩個數(shù)的和*/#include<stdio.h> /*main() /*int a,b,sum; /*scanf("%d,%d",&a,&b);/*量中*/sum=a+b; /*printf("

7、;sum=%d",sum); /*程序說明:包含文件*/主函數(shù)*/定義局部變量*/輸入兩個整數(shù)值放到a、b變將ab的和送入sum中*/輸出ab的和sum*/本實例的功能是實現(xiàn)兩個數(shù)相加;scanf函數(shù)的作用是輸入兩個整數(shù);具有變量定義的C語言函數(shù)的書寫順序應該是:先寫預處理命令,然后是函數(shù)名;然后是函數(shù)體,函數(shù)體中應先寫變量定義,在寫功能語句。為了增加程序的可讀性應適當加上注釋,和printf提示三、C語言的編寫流程00四、C語言結(jié)構(gòu)特點總結(jié)(1) 一個C程序可以由多個函數(shù)構(gòu)成,但是只能有一個 main函數(shù),程序從 main函數(shù)開始,然后通過函數(shù)調(diào)用完成部 分功能,最后以main函數(shù)

8、結(jié)束;(2) 主函數(shù)或子函數(shù)的函數(shù)體必須用一對括起來,函數(shù) 體中主要是程序的功能語句,這種功能語句由兩部分組成:聲 明部分和執(zhí)行部分;(3) 每一條語句由分號結(jié)束,程序書寫格式自由,一行可 以寫多句,一句可以寫多行,但分行時注意不能將字符串整體 分開;(4) C語言大小寫敏感,大小寫不能混用;一般程序語句 用小寫字母,符號常量用大寫 ;程序要有適當?shù)淖⑨屨Z句,提高程序的可讀性,注意注釋 語句不能嵌套;(5) C語言中的變量必須先定義后使用;(6) #include 是預處理命令,用于將 <>或” ”中包括的文件中的內(nèi)容讀到命令所在處;每個include的后面只能跟一 個文件,如果想

9、將多個文件包含到指定位置,可以通過多個 include 實現(xiàn)。五、優(yōu)秀的程序員應具備的基本素質(zhì)(7) 具有良好的編程習慣(8) 使用TAB縮進(9) 對齊(10) 足夠的注釋(11) 合適的空行六、上機環(huán)境使用介紹重點介紹上機環(huán)境VC+6.0的使用方法,包括:程序編輯、 程序編譯、程序改錯、程序保存、程序運行等。第三講算法學時:2學時授課形式:板書+多媒體講解教學目標:掌握算法的概念、掌握典型算法的設(shè)計、熟練掌握算法表示方法中程序流程圖和 N-S圖。主要內(nèi)容及時間安排(課堂90分鐘,80分鐘講課,5分鐘復習,5分鐘總結(jié)):(12) 習上節(jié)課的主要知識點(5分鐘);(13) 法和程序的關(guān)系(5分

10、鐘);(3)算法的概念及算法優(yōu)劣比較舉例(什么是算法,連加 算法優(yōu)劣比較、算法的分類)(10分鐘);(4)簡單算法舉例(設(shè)計5個例子,從易到難)(40分鐘);(5)算法的特性(有窮性、確定性、有零個或多個輸入、有一個或多個輸出、有效性)(10分鐘);(6)算法的表示方法(重點介紹流程圖和 N-S圖)(10分 鐘);(7)結(jié)構(gòu)化程序設(shè)計方法(簡單介紹結(jié)構(gòu)化程序設(shè)計方法的基本思路)(5分鐘);(8)總結(jié)和布置課后練習題(課后題 2.4、2.5,下一節(jié) 講解數(shù)據(jù)類型相關(guān)知識)(5分鐘)重點:算法的概念、算法的特性、設(shè)計算法的意義、算法 的表水方法難點:算法的表示方法教學內(nèi)容細節(jié):一、以提問的方式復習

11、上節(jié)課的主要知識點。二、算法和程序的關(guān)系程序=數(shù)據(jù)2構(gòu)+ 算法數(shù)據(jù)結(jié)構(gòu)一一對數(shù)據(jù)的描述;算法一一對操作的描述。簡單舉例進行說明。三、算法概念及算法優(yōu)劣比較算法:解決問題的步驟。不是只有數(shù)值運算問題才有算法, 好多非數(shù)值運算問題也是有算法的。數(shù)值運算問題的算法主要是求數(shù)值的結(jié),比如求連加和,非數(shù)值算法主要應用在事務管理領(lǐng)域(圖書檢索、人事管理等)。在進行數(shù)值運算或解決非數(shù)值算法時有時需要考慮算法的優(yōu)劣,比如連加和,可以從1 一直加到100,也可以采用首尾 相加,在相乘的形式。當然所用的步驟是不同的。對于數(shù)學中的一些常用算法,比如求絕對值,求平方根,等等經(jīng)常用到,人們就把它們寫成程序模塊的形式,用

12、戶什么 時候需要就可以進行調(diào)用了,非常方便,常用的數(shù)值運算函數(shù) 都包含在math.h文件中。例3-1 :計算輸入整數(shù)的平方根,如果輸入的是負數(shù),則 先求它的絕對值,在求平方根:#include <stdio.h>#include <math.h>void main()int a;double s;printf("input the a:");scanf("%d",&a);a=fabs(a);/*如果a是負數(shù),求a的絕對值,再放到a中,fabs是求 絕對值的函數(shù),是將小括號中的數(shù)的絕對值求出來*/s=sqrt(a); /*s

13、qrt為求平方根函數(shù)*/printf("%d the sqrt=%f",a,s);四、算法舉例(將算法的各種表示方法放到算法舉例中,學生接受起來效果會好一些)介紹幾個典型算法:每一個算法都有多種描述方式,下面主要介紹自然語言表 不法、流程圖表不法、N-S圖表不法。流程圖的基本符號及含義:()起止框/輸入輸出框|處理框判斷框;或流程線連接點(1)計算 1*2*3*4*5自然語言表示法繁瑣的算法 將第二個數(shù)與第一個數(shù)相乘,得到的積與第三 個數(shù)相乘,依此方法一直乘到5。當要進行連乘的數(shù)比較多時, 這種方法顯然不適用。改進的算法開辟兩個空間p和i, 一個放計算之后的積, 一個放被乘

14、數(shù),上面的算法進行改造后如下:(S1表示第一步,S2表示第二步,依此類推)S1: 1=>p,2=>iS2:計算p*i的積,結(jié)果仍然放在p中,即p*i=>pS3:i的值增1,即i+1=>iS4:如果i沒有超過5,則繼續(xù)執(zhí)行S2、S3、S5,否則,算法結(jié)束,11N-S圖表本法:p中的數(shù)據(jù)就是連乘積。流程圖表示法:習題:計算1+3+5+7+9的和,用流程圖和N-S圖表本此算 法。(2)有50個學生,輸出80分以上的學生學號和成績?yōu)榱吮硎痉奖悖胣表示學生學號,小表示第i個學生學 號,用g表示學生成績,g表示第i個學生成績,則算法如下:自然語言表不法:S1: 1=>iS2

15、:如果gi>80,則輸出ni和g,否則不輸出;00S3: i+1=>IS4:如果i<=50 ,返回至Q S2,繼續(xù)執(zhí)行S2、S3 S4;否則,ii算法結(jié)束。流程圖表示法:N-S圖表本法:習題:有50個學生,找出50個學生中分數(shù)為90的學生學 號。用流程圖和N-S表示此算法。(3)判斷某一年份是否是閏年判斷某一年份是閏年的條件是:(1)能被4整除,但是不 能被100整除,則這一年份是閏年;(2)能被100整除,又能 被400整除的,則這一年份是閏年;其他的年份都不是閏年, 假設(shè)用一個空間y來存放被校驗的年份,則算法描述如下:自然語言表不法:S1:輸入年份=>y00S2:若

16、y能被4整除,但不能被100整除,則輸出y是閏年,算法結(jié)束;否則,執(zhí)行S3;S3:若y能被100整除,也能被400整除,則輸出y是閏年,算法結(jié)束;否則,執(zhí)行S4;S4:輸出y不是閏年,算法結(jié)束。流程圖表示法:輸入年份=>y開始Jy不能被 、4整除NYy不能被 、100整除輸出y 是閏年輸出y 是閏年y不能被400整除輸出y不是閏年輸出y不是閏年N-S圖表本法:輸入年份=>yy/40Y一 N12輸出 y不 是閏習題:輸出某一年份段內(nèi)(比如1000-3000之間,包括1000 和3000)的所有閏年。(4)求一個數(shù)列的值1-1/2+1/3-1/4+1/5+ +1/99-1/100注意數(shù)

17、列的規(guī)律,分子都是1,分母是從1開始,每次遞增1, 一直到100,第一項符號位正,第二位符號位負,依此規(guī) 律交替正負,首先必須開辟兩個空間,一個為sum放計算結(jié)果, 然后是i ,每次被加數(shù)的分母;其次為了表示符號位交替變化,在開辟一個空間t存放符號,如果是正號則t為1,符號t為-1。算法表示如下:自然語言表不法:S1: 0.0=>sum,1.0=>i;1=>t;S2: t*1/i+sum=>sumS3: -t=>t;i+1=>iS4:如果i<=100,則返回S2,繼續(xù)執(zhí)行S2、S3、S4,否則, 算法結(jié)束,sum中的值就是所求。流程圖表示法:N-S圖表

18、示法:習題:計算1, 1/2 , 2/3 , 3/5 , 5/8 , 8/13這個數(shù)列 前20項的和。(5)判斷一個大于3的數(shù)是不是素數(shù)一個數(shù)是不是素數(shù)主要看它除了 1和它本身之外不能被其 他任何整數(shù)整除,則它是素數(shù),否則就不是素數(shù),首先需要開 辟一個空間n存放待判斷的數(shù),其次開辟一個除數(shù)的空間i (i 從2開始),利用n除以這個i,看能否整除,具體算法如下:自然語言表不法:S1:輸入待判斷的數(shù)=>nS2: 2=>iS4: n除以i ,得余數(shù)rS5:如果r不為0,則i+1=>i ,否則,輸出n不是素數(shù), 算法結(jié)束S6:如果i<n ,則返回S4,否則,輸出n是素數(shù),算法結(jié)

19、 束。考慮是否非要做到i=n-1 ,是不是可以做到i<=sqrt(n)。流程圖表示法:流程圖表示法:(改進)00N-S圖表本法:輸入待判斷數(shù)=>n0=>w,2=>in/i的余數(shù)=>rV"r=0 N1=>wi+1=>i直到i> Un或w=1w=0NN輸出n是素數(shù)輸出n不是素數(shù)18習題:輸出100-200之間的所有素數(shù)。五、總結(jié)三種程序流程結(jié)構(gòu)(順序、選擇和循環(huán),給出圖 形表示)通過上面幾個例子,我們可以看到,算法在執(zhí)行的過程中基本只有三種模式,(1)從上到下依次執(zhí)行下來,中間沒有任 何分叉,(2)在執(zhí)行過程中,根據(jù)條件成立與否產(chǎn)生了不同的

20、 操作;(3)當某一條件成立時,反復做相同的操作。這就是我們結(jié)構(gòu)化程序設(shè)計的三種基本流控結(jié)構(gòu):順序,分支和循環(huán),F面給出這三種基本流控結(jié)構(gòu)的流程圖和N-S圖表不。流程圖順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)六、算法的特性算法共有五個特性:有窮性、確定性、有零個或多個輸入、 有一個或多個輸出、有效性;有窮性:一個算法的步驟必須是有限的;確定性:算法中的每個步驟必須是確定的,不能是含糊不 清的,不能有歧義;輸入:算法運行時有時需要外部輸入的信息;輸出:算法的最終目的是求解和輸出;有效性:算法的每個步驟都能有效的執(zhí)行,并得到確定的 結(jié)果。七、結(jié)構(gòu)化程序設(shè)計思想結(jié)構(gòu)化程序設(shè)計強調(diào)的是程序設(shè)計風格和程序結(jié)構(gòu)的規(guī)范 化

21、,提倡清晰的結(jié)構(gòu),編程的基本要求是“清晰第一、效率第 二”。結(jié)構(gòu)化程序設(shè)計風格需要經(jīng)過以下幾個步驟進行:(1)自頂向下(2)逐步細化(3)模塊化設(shè)計(4)結(jié)構(gòu)化編碼(利用現(xiàn)有的流控語句進行編碼設(shè)計)八、總結(jié)和布置課后練習題(5分鐘)第四講數(shù)據(jù)類型(1)學時:2學時授課形式:板書+多媒體講解+實例程序演示教學目標:掌握各種數(shù)據(jù)類型的關(guān)鍵字,掌握各種數(shù)據(jù)類 型在計算機中所占的存儲空間,常量及變量的定義形式,針對 各種數(shù)據(jù)類型printf的格式控制輸出。00主要內(nèi)容及時間安排(課堂90分鐘,80分鐘講課,5分鐘 復習,5分鐘總結(jié)):(1)以提問的方式復習上節(jié)課的主要知識點(5分鐘);(2) C語言的

22、各種數(shù)據(jù)類型簡介(基本類型和構(gòu)造類型,各種數(shù)據(jù)類型的關(guān)鍵字及所占字節(jié)等)(10分鐘);(3)針對不同格式的printf輸出格式介紹及舉例(printf格式介紹,各種類型格式控制符介紹,以例子說明)(20分鐘);(4)常量(包括整型常量、實型常量、字符型常量、符號常量、舉例)(20分鐘)(5)整型變量的概念及舉例(整型變量的定義及舉例)(20 分鐘)(6)課堂練習(針對所講知識進行相關(guān)習題練習)(10分 鐘)(7)總結(jié)及新一講內(nèi)容提要(下一講實型變量、字符型變量、指針變量的定義和使用)(5分鐘)重點:C語言各種數(shù)據(jù)類型的關(guān)鍵字、各種類型的常量表示法、整型變量的定義和操作等;難點:整型變量的表示范

23、圍。教學內(nèi)容細節(jié):、C語言各種數(shù)據(jù)類型介紹數(shù)據(jù)類型J00各種數(shù)據(jù)類型的關(guān)鍵字,及在計算機內(nèi)存中所占大?。ㄒ愿鞣N不同的編譯環(huán)境為例)類型名關(guān)鍵字所占字節(jié)(B)TCRarnu_cVC+整型int224短整型short int222長整形long int444無符號整型unsigned int224無符號長整形unsigned long444無符號短整型unsigned short222單精度float444雙精度double888字符型char111指針類型*244二、以printf輸出各種數(shù)據(jù)類型printf 基本格式說明printf (格式控制,輸出表列);格式控制:用雙引號括起來的字符串,這

24、個字符串包括兩 部分,格式說明和普通字符,格式說明以%F頭。輸出表列:與格式說明對應的輸出表列。在格式控制符中,除了格式說明去后邊對應輸出表列之外 其他字符原樣原位置輸出,輸出表列為帶輸出的內(nèi)容。比如:printf(“abcd");/* 輸出 abcd 字符串*/int x=8 , y=9;printf("abcd%defg%d ,x,y);/* 輸出 abcd8efg9*/具體格式說明符有:%d/*輸出短整型和整數(shù)*/%o/*以八進制無符號形式輸出整數(shù)*/%誡X/*以十六進制無符號形式輸出整數(shù)*/%u /*以無符號十進制形式輸出整數(shù)*/比如int a=-1;printf(

25、"d,%u,%o,%x6 ,a,a,a,a);輸出內(nèi)容分別是:-1,65535,177777,ffff所以原反補碼的含義大家一定要清楚,對為什么出現(xiàn)這樣 的情況加以分析。對于其他的數(shù)據(jù)類型也要采取不同的輸出格式:%f/*以單精度形式輸出實數(shù)*/%lf /*以雙精度形式輸出實數(shù)*/%c/*以字符形式輸出,只輸出一個字符*/分析:int a=65 ;char c= ' B'printf("d,%d,%c,%cn',a,c,a,c);輸出結(jié)果:65,66,A,B當整數(shù)不超過字符型的表示范圍時,整數(shù)可以以字符型的 形式輸出,輸出的是它對應的 ASCII碼,字

26、符型也可以以整數(shù) 的形式輸出,輸出的是它 ASCII碼對應的值。單精度或雙精度不能利用字符型或整型格式輸出,否則會 產(chǎn)生錯誤結(jié)果(語法不會出錯,但結(jié)果意想不到)。三、各種數(shù)據(jù)類型常量1.整型常量(1)十進制整型常量(2)八進制整型常量(以0開頭)(3)十六進制整型常量(以0x開頭)(4)后綴為u和U則表示無符號整型,后綴為L或l ,表 示長整型。如果將一個帶符號數(shù)后邊加了 u,則將其轉(zhuǎn)化為補 碼按無符號數(shù)賦給相應變量。2 .實型常量(1)十進制小數(shù)形式(2)科學計數(shù)法:XeYe前必須有數(shù)字,e后必須為整3 .字符型常量單引號括起來的為字符常量,轉(zhuǎn)義字符也可以作為一個字4 .字符串型常量雙引號括

27、起來的為字符串常量,字符串常量系統(tǒng)默認會在 最后加一個0 '。比較a'和"a”在內(nèi)存中的狀態(tài)。5 .符號型常量符號型常量往往是利用宏定義實現(xiàn)的,宏定義屬于預處理 范疇,與文件包含命令相同。#define X 12一般放在程序開始,作用是定義一個符號為常量,在程序 運行過程中不允許改變。四、整型變量的概念和舉例(1)標示符的命名規(guī)則:由字母數(shù)字下劃線,開頭不能使數(shù)字。例:以下合法的用戶標識符是()A al B 3er C _a# D if(2)各種類型變量的定義:各種變量的定義方法為:類型名 變量名列表;/*如果變量名多余1個,用,分隔*/整型變量的定義方法:int a

28、,b;int a,b,c=12;int a=12 , b=12, c=12;不能寫成 int a=b=c=12;可以在變量定義時給變量賦初值。第五講數(shù)據(jù)類型(2)學時:2學時授課形式:板書+多媒體講解+實例程序演示主要內(nèi)容及時間安排(課堂90分鐘,80分鐘講課,5分鐘 復習,5分鐘總結(jié)):(1)以提問的方式復習上節(jié)課的主要內(nèi)容(5分鐘);(2)實型變量(定義方法、表示范圍、使用舉例) (15分 鐘);(3)字符型變量(定義方法、表示范圍、使用舉例) (15 分鐘);(4)指針型變量(含義、定義方法、使用舉例)(15分鐘);(5)各種數(shù)據(jù)類型間的混合運算(類型間的轉(zhuǎn)化、強制類型轉(zhuǎn)化方法、舉例)(

29、20分鐘);(6)課堂習題(15分鐘);(7)總結(jié)及下一講知識提要(運算符和表達式)(5分鐘)。重點:實型變量的定義方法、表示范圍;字符型變量的定 義方法、表示范圍;指針和其他類型變量的配合使用;數(shù)據(jù)類 型間混合運算時的轉(zhuǎn)化;難點:指針和其他數(shù)據(jù)類型的配合使用,數(shù)據(jù)間的轉(zhuǎn)化。教學內(nèi)容細節(jié):一、實型(浮點型)變量浮點型數(shù)據(jù)在計算機內(nèi)存中的存儲狀態(tài)分為三部分:數(shù)符、小數(shù)部分、指數(shù)部分。C語言的編譯環(huán)境不同,則給各個部分分配的位數(shù)不同,一般情況下,數(shù)符和小數(shù)部分分配 24位,指數(shù)部分非配8位。24位8位表示 3.14159浮點型變量定義的類型包括:float、double、long double舉例

30、說明浮點型數(shù)據(jù)是有誤差的:#include <stdio.h>void main()float a,b;a=123456.789e5;b=a+20;printf("%fn",b);如果將float改為double則結(jié)果不同。二、字符型變量字符型常量是以單引號括起來的單個字符。字符變量的定義使用的是關(guān)鍵字charchar a,b;a=,a,;b=97;整數(shù)和字符型可以互相賦值。一般編譯系統(tǒng)默認字符型為 signed類型,表示-128 127 之間的數(shù)字對應的字符,如果想表示128-255之間的數(shù)字則字符需定義為unsigned char 。三、指針型變量指針型變量

31、往往是和其他變量的定義配合使用,表示不同 變量在內(nèi)存中的地址。指針變量定義是以*為標識符的。比如:int *a,*b;char *c,*d;這時需要注意,在定義中出現(xiàn)的*與程序中出現(xiàn)的*是不同 的,定義時出現(xiàn)的*表示變量為指針類型,程序中出現(xiàn)*表示取 出地址中的具體數(shù)值。*與&fe址運算互逆。#include <stdio.h>2500void main() int *p;int c;p=&c;scanf("%d",p);printf("%d,%dn",c,*p);四、變量賦初值在前面的變量定義時,有時在定義的同時就給變量賦了

32、初 值,有的是在定義好后,再利用賦值語句給變量賦初值,不管 利用哪種方式,都要注意兩點:不能在定義時進行連續(xù)賦值; 不能將不匹配的數(shù)據(jù)類型互相賦值,否則會產(chǎn)生錯誤。錯誤的:int a=b=c=10;int a=3.56;正確的:int a,b,c;a=b=c=10;五、各類數(shù)據(jù)類型間混合運算各種數(shù)據(jù)類型可以進行混合運算,運算結(jié)果為一種數(shù)據(jù)類 型,具體規(guī)則如下:、doublefloatunsignedlong2600橫向的是必須轉(zhuǎn)化的,比如float型數(shù)據(jù)在進行運算時, 其運算記過統(tǒng)統(tǒng)要轉(zhuǎn)化為double類型,不管參與運算的是否有 double類型;char或short類型的數(shù)據(jù)在進行運算時,結(jié)

33、果都 會轉(zhuǎn)化成int型。縱向箭頭表示對象類型不同時的轉(zhuǎn)換方向,當參與運算的 對象數(shù)據(jù)類型不同時,采用低級向高級轉(zhuǎn)化的規(guī)律。比如int型和long型進行運算時,將int轉(zhuǎn)化為long類型再進行運算。比如:10+' a' +1.5-8765.4321* ' b'結(jié)果為double類型,轉(zhuǎn)化由系統(tǒng)自動完成,無需用戶操作。如果在計算過程中不想按照上述轉(zhuǎn)化規(guī)則進行轉(zhuǎn)化,則可以利用強制類型轉(zhuǎn)換。具體方式為:(強制類型名)變量或常量例如:#include <stdio.h>void main()int a;float b=3.67;a=(int)3.67;prin

34、tf("%d,%fn",a,b);六、總結(jié)及課堂練習課堂習題:3.2 , 3.3作業(yè):3.5, 3.6, 3.8第六講運算符和表達式(1)學時:2學時授課形式:板書+多媒體講解+實例程序演示主要內(nèi)容及時間安排(課堂90分鐘,80分鐘講課,5分鐘復習,5分鐘總結(jié)):(1)以提問的方式復習上節(jié)課的主要內(nèi)容(5分鐘);(2) C語言運算符簡介(各種運算符作用介紹、優(yōu)先級介紹、結(jié)合性介紹)(15分鐘);(3)算術(shù)運算符和表達式(算術(shù)運算符的計算方法、優(yōu)先級等)(10分鐘);(4)自加自減運算及舉例(15分鐘)(5)賦值運算符和賦值表達式(簡單賦值和符合賦值)(10分鐘)(6)逗號運

35、算符和逗號表達式(與自加自減配合運算)(10分鐘)(7)指針運算符(10)(8)課堂習題(所講運算符的使用和運算方法)(10分鐘)(9)總結(jié)及下一節(jié)內(nèi)容提要(關(guān)系運算符、邏輯運算符、位運算符、條件運算符等)(5分鐘)重點:C語言算術(shù)表達式的求值、算術(shù)運算符的優(yōu)先級及 運算方法、逗號運算符的運算方法、指針運算符的運算方法、 自減自加的運算方法;難點:自加自減運算,各種運算符的結(jié)合性。教學內(nèi)容細節(jié):一、C語言中各種運算符1 .算術(shù)運算符算術(shù)運算符包括:+,-,*,/,%它們都屬于雙目運算, 結(jié)合性自左至右。前三種運算都很簡單,對于/,如果操作數(shù)為整數(shù),則結(jié)果 也為整數(shù),運算的操作數(shù)必須為整數(shù),其含

36、義是去兩個整數(shù)相 除的余數(shù)。2 .自加自減運算符自加自減運算符包括+和-,它屬于單目運算,結(jié)合性自 右至左,操作數(shù)必須為整型的變量。3 .賦值運算符賦值運算符包括簡單賦值運算符=和復合的賦值運算,復合 的賦值運算符是其他運算符和簡單賦值運算符組合在一起構(gòu)成 的,一般式位運算符和算術(shù)運算符,比如 +=, %= <<= >>=等。 它屬于雙目運算,結(jié)合性自右至左。4 .逗號運算符逗號運算符,順序求值運算,結(jié)合性自左至右。5 .位運算符位運算符包括 <<, >>,八,小彎彎,&, | ,按位運算,雙目 運算符,其中按位取反為單目運算符(結(jié)合性自

37、右至左),雙目 位運算結(jié)合性自左至右。6 .指針運算符指針運算符*,取地址運算符&,單目運算符,結(jié)合性自右 至左。7 .邏輯運算符邏輯運算符包括:!,&& | ,其中!為單目運算符結(jié)合性 自右至左,&窗口 |為雙目運算符結(jié)合性自左至右。8 .關(guān)系運算符關(guān)系運算符包括:>,<,>=,<=,=,!=, <>。結(jié)合性自 左至右,雙目運算符。9 .條件運算符條件運算符;表達式?值1:值211 .分量運算符分量運算符:,和.,結(jié)合性為自左至右。12 .下標運算符下標運算符口,結(jié)合性自左至右。13 .求字節(jié)運算符求字節(jié)運算符sizeof

38、(操作數(shù)),結(jié)合性自右至左14 .強制類型轉(zhuǎn)換運算符強制類型轉(zhuǎn)換:(類型)操作數(shù),結(jié)合性自右至左。二、各種運算符的優(yōu)先級(1)初等運算符()、.(2)單目運算符!、+、-、-、(類型)、*、&、sizeof(3)算術(shù)運算符(先乘除后加減)(4)位運算符、(5)關(guān)系運算符 、=、=、其中=手口!=級別低一級(6)位運算符&、八、|、分先后(7)邏輯運算符&& |、分先后(8)條件運算符?:(9)賦值運算符(10)逗號運算符注意:在利用邏輯運算符時:|和&照具特殊性,如果前 表達式已經(jīng)可以確定整個表達式的值,則后表達式不再做。自 加+自減-運算符,只能對整形

39、變量進行。三、算術(shù)運算符和算術(shù)表達式最終運算為算術(shù)運算的式子稱為算術(shù)式。例:3/5,3%5,-3%5四、自加自減運算注意:運算對象只能是整型變量。main()int a=5;a+;printf( "d ,a);為學生描述內(nèi)存存儲狀態(tài)。計算:(a+)+(-a)-a+(+a) 表達式的值,a的初始值為4c五、賦值運算1 .簡單賦值運算符二,運算方法是將二號后的值賦給二號前的變量,二號前必須 為變量,不能給常量賦值。如:int a=5;2 .復合的賦值運算比如:a+=5;等彳于a=a+5;前提是復合賦值運算前的變量 必須有初值,否則無法運算。3 .賦值運算的規(guī)則賦值運算符的賦值規(guī)則:(也就

40、是當賦值運算符前后類型不 一致時如何賦值)(1)將浮點型賦給整型:舍棄小數(shù)部分。如:int i=3.56 則i的值為3。(2)將整型賦給浮點型:數(shù)值不變,但要以浮點型進行存 儲。如:float a=23 ,則a為23.00000,補足有效位。(3)將double型賦給float型,截取其前面7位有效數(shù) 字,但要注意數(shù)值范圍不能溢出。如:float a ;double b=123.456789e100;a=b ;如果輸出a則會產(chǎn)生溢出錯誤,因為b超過了浮點型表示 范圍。如果將b改為123.456789e2,則a的值會有7個有效位是 和b完全相同的,其他位會產(chǎn)生誤差。(4)字符型賦給整型,如果將字

41、符型處理為無符號型,則 將字符型放到整型的低8位,高八位為0;如果將字符型處理 為有符號型,則字符型放到整型的低 8位,高位所補的是0還 是1,要看低八位的最高位,所補的為最高位的值。TC和維普C是把字符型當做有符號數(shù)來處理的。比如main()int a;unsigned char c='376'a=c;printf("%d",a);輸出為254,如果去掉unsigned則輸出為為。(5)將帶符號int賦給long ,進行符號為擴展放到高十 六位,低十六位為int數(shù)據(jù);long型賦給int型時,只將long 的低十六位放在int型中。(6)int、short

42、、long賦給char型只是將低八位賦給 char空間。(7)將unsigned int送到long int中,不存在符號擴展,高位都補0。將unsigned類型數(shù)據(jù)賦給一個占字節(jié)相同的數(shù)據(jù) 則直接將unsigned數(shù)據(jù)放到相應類型中即可,只不過超過表示 范圍會出現(xiàn)數(shù)據(jù)錯誤。例如:main()unsigned int a=65535;int b;b=a;printf("%d",b);這時b=-1。(8)將signed數(shù)據(jù)賦給長度相同的unsigned數(shù)據(jù)也是原 樣賦過去,只不過如果是負數(shù),是將其補碼作為一個無符號數(shù) 來處理。main()unsigned int a;int

43、b=-1;a=b;printf("%u",a);這時 a=65535。各種賦值形式雖然看起來復雜,但是都是它們都是:按存儲單元中的存儲形式直接傳送。要求學生必須對補碼只是熟練 掌握。六、逗號運算符和逗號表達式逗號運算符的運算規(guī)則是自左至右。整個表達式的值是逗號表達式最后一個表達式的值。例如:int a , b, c;a=b=5;c=(a+3,b+a,a=a+b,b+a)c輸出的值應該為15。例如:a=3*4, a+5;要注意賦值運算符的優(yōu)先級高于逗號運算符,所以先算a=3*4,在算a+5。所以整個表達式為逗號表達式,值為60。注意:printf和scanf中出現(xiàn)的逗號是作為

44、分隔參數(shù)用的, 并不是逗號表達式。七、指針運算指針運算符的作用是取指針地址中對應的具體數(shù)值,它與取地址符為互逆運算。例:int *p,a;a=5;p=&a;則*p的值為5。這個思想我們在前面的練習中也給大家說八、強制類型轉(zhuǎn)換和測字節(jié)函數(shù)這兩個運算我們在前面講過,這里就不再說了九、總結(jié)及課堂練習教材 3.9 , 3.10作業(yè):3.11 , 3.12。第七講運算符和表達式(2)學時:2學時授課形式:板書+多媒體講解+實例程序演示主要內(nèi)容及時間安排(課堂90分鐘,80分鐘講課,5分鐘 復習,5分鐘總結(jié)):(1)復習上節(jié)課的主要知識點(5分鐘);(2)關(guān)系運算符和關(guān)系表達式(15分鐘);(3)

45、邏輯運算符和邏輯表達式(20分鐘);(4)位運算符(20分鐘);(5)課堂練習(30分鐘)。重點:關(guān)系運算符,邏輯運算符,位運算符的操作方法。難點:各種運算符的混合運算,需要考慮算符的優(yōu)先級和結(jié)合性等因素。教學內(nèi)容細節(jié):一、關(guān)系運算符和關(guān)系表達式關(guān)系運算符表示的是前后兩個表達式的關(guān)系,表達式的值 為邏輯值“真”或“假”,如果關(guān)系正確則表達式的值為“真”, 否則為"假"由于C語言不提供邏輯類型值,所以如果表達式的值為“真”,則用1表示,表達式的值為“假”則用 0表示。例:int a=3,b=4,c=5;則c!=a>b的值為1。二、邏輯運算符和邏輯表達式邏輯運算符表示兩個

46、操作數(shù)的邏輯關(guān)系,邏輯運算的結(jié)果!a&&b|x>y&& (c+),運算級別!最高,然后是算術(shù),然后是關(guān)系、然后是邏輯、然后是賦值;a=1,b=0,c=3,x=7,y=10;則表達式的值為0, c的值為3。注意:&解叩 的運算規(guī)則。三、位運算符和表達式位運算符的前提示首先將數(shù)據(jù)轉(zhuǎn)化為二進制在進行相應的 操作。運算符含義運算符含義&按位與取反|按位或<<左移八按位異或>>右移例如:64<<1;左移1位相當于乘以2,所以一些C語言系統(tǒng)將2n 處理為左移n位。如果a的值為八進制113755,則a:10010111

47、1101101a>>1: 010010111110110 (邏輯右移)a>>1: 110010111110110 (算術(shù)右移)四、條件運算符例如:int a=5,b=3;a>b?a:b;五、總結(jié)及課堂練習1、教材:1、2、3、4、52、自設(shè)題目:a=45;求2©>>2©<<2;a&0000000011111111;a|0000000011111111第八講輸入輸由函數(shù)及順序結(jié)構(gòu)學時:2學時授課形式:板書+多媒體講解+實例程序演示3800主要內(nèi)容及時間安排(課堂90分鐘,80分鐘講課,5分鐘 復習,5分鐘總結(jié)):(

48、1) C語言的基本語句(分為五類:表達式語句、函數(shù)調(diào) 用語句、控制語句、復合語句、空語句,各種語句舉例,賦值 語句的使用)(10分鐘)(2) 常用輸入函數(shù)介紹(5分鐘);(3) scanf函數(shù)的使用方法(包括各種格式的輸入、顯性 分隔符和隱形分隔符的使用、舉例)(20分鐘);(4) getchar函數(shù)的使用方法(getchar的使用、字符輸 入與scanf的區(qū)別)(10分鐘)(5) printf 使用方法復習(10分鐘)(6) putchar輸入函數(shù)的使用(5分鐘)(7) 程序舉例(10分鐘)(8) 課堂練習(15分鐘)(9)總結(jié)及下一節(jié)內(nèi)容提要(5分鐘)重點:C語言各種輸入輸出函數(shù)的使用難點

49、:scanf函數(shù)隱形分隔符和顯性分隔符的使用教學內(nèi)容細節(jié):一、C語言的基本語句1、語句的概念C語言中的語句是以分號結(jié)束的,以分號結(jié)束的就可以稱 為語句,它用來想計算機發(fā)出指令。003、各種基本語句(1)流控語句if ()- else條件語句for () 循環(huán)語句while() 循環(huán)語句dowhile()循環(huán)語句continue結(jié)束本次循環(huán)進入下一次循環(huán)break終止所在循環(huán)或switch結(jié)構(gòu)switch() case 多分支選擇語句goto轉(zhuǎn)向語句return從函數(shù)返回語句(2)函數(shù)調(diào)用語句printf("d,%d ,a,b);c=max(a,b);(3)表達式語句a=3;a=c+b

50、;(4)空語句5(5)復合語句大括號括起來的語句組:z=x+y ;t=z/100;printf( "d,%d ,z,t);二、常用輸入函數(shù)介紹(1) scanf函數(shù)的使用方法(包括各種格式的輸入、顯性分隔符和隱形分隔符的使用、舉例)scanf( “格式說明”,輸入表列);注意:格式說明由格式說明符和分隔符兩部分組成,輸入表列是由逗號分開的變量地址列表。如:scanf ("a=%d,b=%d ,&a,&b);在運行時,為了讓ab得到正確的值,則應輸入a=12,b=15回車;這里a=,b=均為顯性分隔符,在輸入時除了格式控制符對應變量類型外,其他的顯性分隔符原樣

51、輸入。又如:scanf( "d%d ,&a,&b);在運行時,為了讓ab得到正確的賦值,則應輸入12空格/tab/回車13回車;這里空格、tab和回車都屬于隱形分隔符,當兩個格式控 制符連在一起沒有任何分隔符時,在輸入變量值時應該用隱形分隔符格式控制符表如下:格式控制符含義%d %i帶符號十進制整數(shù)%u無符號十進制整數(shù)%o八進制無符號整數(shù)%x %X十六進制無符號整數(shù)%c字符型%s字符串型%f, %lf單精度、雙精度小數(shù)%e %e指數(shù)形式浮點型數(shù)據(jù)%g %G選用f或6中寬度較小的一種進行輸出,不輸出無意義的0,用G時以指數(shù)形式輸出的E大寫(2) getchar函數(shù)的使用

52、方法(getchar的使用、字符輸入與scanf的區(qū)別)(10分鐘)getchar ()函數(shù)的使用僅限于輸入字符型數(shù)據(jù),它與scanf利用碗入字符型時應注意:%何以接收隱形分隔符,所以在使用時應注意;getchar ()也可以接收所有字符型,包括隱形分隔符;例:#include <stdio.h>main()int a,b;char c,d;scanf("%d%d%c",&a,&b,&c);d=getchar();printf("%d,%d,%c,%cabc",a,b,c,d);如果想給a賦12, b賦13, c符字符

53、a, d賦字符b,在輸 入時,如果輸入12回車13回車a,則編譯系統(tǒng)不會再讓你輸 入,因為這是它會將回車賦給c,將a賦給d。如果想得到正確 的賦值則在輸入時應輸入12隱形分隔符13ab即可,系統(tǒng)會根 據(jù)數(shù)據(jù)類型自動將13和字符型分開,同時將a賦給c, b賦給 do三、輸出函數(shù)回顧及拓展(1) printf 使用方法復習printf我們在前面應經(jīng)講過,在此我們做一下功能拓展。如果想輸出指定寬度的數(shù)據(jù)如何在格式控制符中加以控 制,比如,想輸出小數(shù),小數(shù)點后只保留兩位,怎么設(shè)計?解決:利用 %m.nf、%m.nlf,%-m.nf,%-m.nlf ,其中 m表示 具體的小數(shù)寬度小數(shù)點也算一位,n表示小數(shù)點后位數(shù);如果 小數(shù)的位數(shù)超過m則m失效,以正常的寬度輸出浮點數(shù),n在 進行舍入時采取四舍五入;如果小數(shù)位數(shù)小于m則左補空格(右 對齊),如果m前有負號則右補空格(左對齊)。m,n的設(shè)計在d和%s中也使用,在整數(shù)中只使用 m在5 中使用m和n, m表示為字符串開辟的輸出區(qū)寬度, 這個寬度也 要大于字符串長度,否則 m失效,n表示截取的字符串字符個

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論