北京交通大學C語言課件第2章上_第1頁
北京交通大學C語言課件第2章上_第2頁
北京交通大學C語言課件第2章上_第3頁
北京交通大學C語言課件第2章上_第4頁
北京交通大學C語言課件第2章上_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

“編程能力”不是聽會的、也不是看會的、而是動手動腦練會的!高級語言程序設計主講教師:丁丁計算機與信息技術學院dding@第二章

數據對象與計算(上)2023/2/5高級語言程序設計4主要內容2.1程序的基本結構2.2基本概念2.3數據與類型2.4基本類型與數據表示2.5數據的輸入與輸出2.6運算符、表達式與計算2.7數學函數庫及其使用2.1程序的基本結構2.2基本概念2.3數據與類型2.4基本類型與數據表示2.5數據的輸入與輸出2.6運算符、表達式與計算2.7數學函數庫及其使用2023/2/5高級語言程序設計5例2.1.1:簡單C程序helloworld.c/*程序名:helloworld.c*//*功能:在屏幕上輸出一行文本*/#include<stdio.h> /*文件包含*/voidmain() /*主函數*/{ /*函數體開始*/

printf(“Helloworld!\n”); /*輸出語句*/} /*函數體結束*/2023/2/5高級語言程序設計6簡單C程序的基本結構

注釋

預編譯命令主函數用戶定義的子函數每一個C程序都必須包含一個main函數 intsub(intx,inty){

變量定義

<程序體>} voidmain(){

變量定義

<程序體>}

voidmain(){

變量定義

<程序體>}主函數2023/2/5高級語言程序設計7函數是C語言程序的基本單位。{}是函數開始和結束的標志,不可省。每個C程序必須有一個主函數main,是C程序執(zhí)行的開始點,與main函數的位置無關。函數由語句構成,每個C語句以“;”結束。每條語句都要符合規(guī)定的語法格式,并具有特定的功能。使用標準庫函數時應在程序開頭包含庫函數定義。如:#include<stdio.h>2023/2/5高級語言程序設計8程序注釋增加程序可讀注釋對編譯和運行不起作用。一般在行的最右側或在被注釋行之上單獨成行。/*注釋內容可以多行*/可以在任何位置//在行末,有的編譯器不支持2023/2/5高級語言程序設計9/*程序名:2_1_2.cpp*//*功能:計算兩個整數的和并輸出結果*/#include<stdio.h>intadd(intx,inty){intz;z=x+y;returnz;}voidmain(){inti1,i2,sum;printf("請輸入兩個整數:");scanf("%d,%d",&i1,&i2);sum=add(i1,i2);printf("sum=%d\n",sum);}例2.1.2:計算兩個整數的和2.1程序的基本結構2.2基本概念2.3數據與類型2.4基本類型與數據表示2.5數據的輸入與輸出2.6運算符、表達式與計算2.7數學函數庫及其使用2023/2/5高級語言程序設計10主要內容2.1程序的基本結構

2.2基本概念2.3數據與類型2.4基本類型與數據表示2.5數據的輸入與輸出2.6運算符、表達式與計算2.7數學函數庫及其使用2023/2/5高級語言程序設計111基本字符C語言是基本字符的序列?;咀址ǎ簲底郑?~9)大小寫字母(a~z,A~Z)其他一些可打?。@示)字符:如標點符號、運算符號、括號等特殊字符:空格、換行、制表符(空白字符,起分隔作用,增刪空白一般不影響程序的意義)☆程序中出現非基本序列字符集中的字符(雙引號內除外)為非法字符,編譯過程不能通過;任何語言都有基本字符序列集合(雙引號內的除外)☆應利用空白字符排列程序格式,使程序的形式更好地反映程序結構和它所實現的計算過程.2023/2/5高級語言程序設計122標識符程序中的名字(描述對象)稱為標識符 如變量名(s,a,b,c)、函數名(add,main)等;標識符分用戶定義的標識符和系統(tǒng)預定義的標識符 用戶定義的如s,a,b,c;

系統(tǒng)定義的如標準函數名printf,用戶不得使用;標識符對字母大小寫敏感:a和A是不同字母;ABC、Abc、AbC和abc是4個不同標識符形式:字母或數字組成的連續(xù)序列,字母(下劃線“_”看作字母)開頭(即以字母開頭,后跟字母或數字)。2023/2/5高級語言程序設計13標識符示例:abcdsinBeijingC_Programminga3b06a3b400nwhile_f2048sx211_12aabc______例:x3+5,其中x3是一個標識符例:ab_400+xy__/xareavolume盡量采用能說明程序對象意義的標識符☆通常將以下劃線開始的標識符保留給系統(tǒng)用標識符命名基本原則2023/2/5高級語言程序設計141)標識符一般需要反映其用途,如:intsum;2)如果標識符名由多個單詞構成,通常采用“大小寫”混排的方式(Windows應用程序),每個單詞的首字符可大寫;如:TotalFiles,AddChild。3)變量名通常使用“名詞”或者“形容詞+名詞”函數名通常使用“動詞”或者“動詞+名詞”4)標識符的長度應當適當。ANSIC規(guī)定名字不準超過6個字符,C++/C不再有此限制,但不宜過長。5)通常將以下劃線開始的標識符保留給系統(tǒng)用,用戶不使用。6)Unix(Linux)應用程序的標識符通常采用“小寫加下劃線”的方式,如add_child。2023/2/5高級語言程序設計153關鍵字C語言的合法標識符有一個特殊的小集合—關鍵字預先定義好具有特殊的意義,因此不能用于其它目的ANSI標準C語言中的關鍵字總共有32個:autobreakcasechar constcontinuedefaultdodoubleelse enumextern floatforgotoif intlongregisterreturnshortsignedsizeofstaticstruct switchtypedefunion unsignedvoidvolatilewhile 2023/2/5高級語言程序設計16主要內容2.1程序的基本結構2.2基本概念2.3數據與類型2.4基本類型與數據表示2.5數據的輸入與輸出2.6運算符、表達式與計算2.7數學函數庫及其使用2.1程序的基本結構

2.2基本概念2.3數據與類型

2.4基本類型與數據表示2.5數據的輸入與輸出2.6運算符、表達式與計算2.7數學函數庫及其使用2023/2/5高級語言程序設計17表示郵政編碼“100044”,一串數字(無單位)表示某人的身高”1.75米“,一個數值(有單位)全班30個同學每人的姓名,30個相關的數值能用一種類型的數據表示嗎?2023/2/5高級語言程序設計18數據是程序中可操縱的對象,數據是分類(類型)的;類型是程序里某類數據的一個集合;語言中有幾類數據是由語言的設計者定義的,并定義好名字數據都屬于某種類型;同類型所有數據對象的性質相同,能做同樣操作;數據以什么形式在程序中表示?C有幾種數據類型?☆數據類型確定了該類型數據的可能取值范圍數據與類型C語言數據類型基本類型構造類型指針類型空類型void定義類型typedef數值類型字符類型char枚舉類型enum整型浮點型單精度型float雙精度型double短整型short長整型long整型int數組結構體struct共用體union長雙精度longdouble2023/2/5高級語言程序設計192023/2/5高級語言程序設計20常量與變量在C語言中,數據常有常量和變量之分;程序運行過程中,其值不能被改變的量稱為常量。程序運行過程中,其值可以賦值而改變的量稱為變量。常量和變量都有數據類型;2023/2/5高級語言程序設計21常量程序里直接寫出的數據或通過標識符定義的常量分兩種:直接常量或字面常量:例:程序中直接寫出整數類型的常量(簡稱整數)3.1415926整型常量;實型常量;字符常量;字符串常量符號常量:用一個標識符代表一個常量例:#definePI32/5高級語言程序設計22變量例:inta;

1)int

是整型類型名;int代表整數類型數據的集合;2)a是標識符,代表變量名;3)a中可以存儲任意想存的表達范圍內的整數。C程序中用到的所有變量都必須先定義,再使用變量定義的一般形式為:

數據類型名變量名1,變量名2….;變量名屬于標識符數據類型決定了該變量存儲的數據的含義,即變量可以存放哪種類型的數據2023/2/5高級語言程序設計23對于每個變量,編譯系統(tǒng)會在編譯時為其分配相應的內存空間,變量名實際上是對應計算機內存中的地址。不同類型的變量具有不同大小的存儲空間。2.1程序的基本結構2.2基本概念2.3數據與類型2.4基本類型與數據表示2.5數據的輸入與輸出2.6運算符、表達式與計算2.7數學函數庫及其使用2023/2/5高級語言程序設計24主要內容2.1程序的基本結構

2.2基本概念2.3數據與類型2.4基本類型與數據表示2.5數據的輸入與輸出2.6運算符、表達式與計算2.7數學函數庫及其使用基本類型的類型名由一個或者幾個關鍵字組成.例:

int(整型)

float(單精度浮點型)

double(雙精度浮點型)char(字符型)☆基本類型名系統(tǒng)已經定義好,用戶直接使用.關鍵字2023/2/5高級語言程序設計25基本類型與數據表示1.整數類型和整數的表示2.實數類型和實數的表示3.字符類型和字符的表示2023/2/5高級語言程序設計26基本類型與數據表示1.整數類型和整數的表示整數類型整型常量2.實數類型和實數的表示3.字符類型和字符的表示2023/2/5高級語言程序設計272023/2/5高級語言程序設計28整數類型整型:int短整型:shortint簡寫short長整型:longint,簡寫longC語言里有多個整數類型常用:整數類型(整型、短整型和長整型)☆short和long都是關鍵字☆不同整數類型所用編碼位數可能不同,表示數的范圍也不同。2023/2/5高級語言程序設計29int型數據是有符號整數,在內存中占用4個字節(jié)(32位),取值范圍在-231~231-1;short型的數據是有符號整型數據,short型的數據的長度要小于等于int型數據,在內存中占用2個字節(jié)(16位),取值范圍在-215~215-1;long型的數據是有符號整型數據,long型的數據的長度要大于等于int型數據,在內存中占用4個字節(jié)(32位),取值范圍在-231~231-1;☆編碼長度(表示范圍)由具體C系統(tǒng)確定2023/2/5高級語言程序設計30整型常量(整數)整數寫法:十進制,首字符非0(除非本身是0)的數字序列例:1234 0 -768 2047 1999長整數寫法:加后綴l或L(不能有間隔):123L

304l

25278L1l

0L小寫l易與數字1混淆,建議用大寫整數可以加正負號2023/2/5高級語言程序設計31整數也可以用八進制和十六進制表示:八進制整數:0開始的數字序列,只允許用0~7。如0123十六進制整數:0x或0X開頭的數字序列,用字母a~f或A~F表示其余6個數字。如0x12☆常量的十進制、八進制和十六進制表示形式只是整數的不同書寫形式,是為編程方便。計算機內存儲的只能是二進制。如何轉化為十進制基本類型與數據表示1.整數類型和整數的表示2.實數類型和實數的表示實數類型實型常量3.字符類型和字符的表示2023/2/5高級語言程序設計322023/2/5高級語言程序設計33單精度浮點數類型(浮點類型):float雙精度浮點數類型(雙精度類型):double長雙精度類型:longdouble實數類型浮點數32位表示,約7位有效數字雙精度數用64位表示,大約16位有效數字長雙精度數用64位或80位表示(系統(tǒng)確定),約19位有效數字2023/2/5高級語言程序設計34+.314159264實數在計算機內部是按照指數形式存儲,系統(tǒng)把一個浮點型分成小數部分和指數部分。存在誤差。類型比特(位)數有效數字數值范圍float326--7-3.3*10-38----3.4*1038double6415--16-1.7*10-308----1.7*10308longdouble12818--19-1.2*10-4932----1.2*1049322023/2/5高級語言程序設計35實型常量十進制小數形式:整數部分.小數部分

指數形式:尾數+E(e)+指數例:

123.、-.123、0.0、12.5。例:12.3e2、2.3E-21float加后綴f或F,longdouble加L實數前可以有正負號指數形式適用于表示較大或較小的數。e之前必須有數字,且e后面的指數必須為整數。如:128e2或128E2都代表128×102

。當整數或小數部分為0時可以省略,但小數點不能省略指數表示(科學表示法)十進小數表示法+—數字·數字可省略+—數字·數字E+—數字可省略可省略2023/2/5高級語言程序設計362023/2/5高級語言程序設計37例2.4.1實型數據的舍入誤差示例。#include<stdio.h>intmain(void){ floata,b,c; a=55555.55555; b=123456.789e5; printf("a=%f,b=%f,b+40=%f\n",a,b,b+40); return0;}a,b應是原值輸出,但結果已發(fā)生誤差;從b+40的結果看雖然增加了40,但仍比b的初值小,結果沒有意義。這是因為float的有效位數只有七位。2023/2/5高級語言程序設計38若將程序中的float改為double類型:

#include<stdio.h>intmain(void){ doublea,b,c; a=55555.55555; b=123456.789e5; printf("a=%lf,b=%lf,b+40=%lf\n",a,b,b+40); return0;}基本類型與數據表示1.整數類型和整數的表示2.實數類型和實數的表示3.字符類型和字符的表示字符類型字符常量字符串常量符號常量2023/2/5高級語言程序設計392023/2/5高級語言程序設計40字符類型用于輸入輸出(I/O)或文字處理字符型數據存儲時占用1個字節(jié)(8位),它實際存儲的是字符對應的ASCII碼。如一個char型數據’A’,其ASCII碼為65,故實際存儲的內容是整數65。char型數據為有符號字符,取值范圍為-128~127,unsignedchar型數據為無符號字符,取值范圍為0~255??纱蛴〉淖址偸钦?。字符型數據與整型數據可以通用,字符型數據所有的性質與一字節(jié)整型量相同。

字符類型名

(char)AmericanStandardCodeforInformationInterchange(ASCII)美國標準信息交換碼字符類型2023/2/5高級語言程序設計41字符十進字符十進字符十進字符十進字符十進字符十進048G71W87-45f102v118149H72X88/47g103w119250I73Y89,44h104x120351J74Z90%37i105y121452K75空格32>62j106z122553L76換行10?63k107654M77.46#35l108755N78<60@64m109856O79(40‘39n110957P80+43=61o111A65Q81&48“34p112B66R82!33a97q113C67S83$36b98r114D68T84*42c99s115E69U85)41d100t116F70V86;59e101u117常用ASCII碼對照表2023/2/5高級語言程序設計42字符常量單引號括起來的單個字符。如:‘a’在計算機的存儲器中,字符型常量的值為該字符所對應的ASCII碼值;例:‘A’→65;‘a’→97;‘0’→48整數在計算機存儲器中存放的是其值;例:0→0、5→5、125→125

區(qū)別字符‘0’和數字0:字符‘0’在存儲器中的值為:數字0在存儲器中的值為:4802023/2/5高級語言程序設計43

例:voidmain(){charc1,c2;

c1=‘a’;c2=‘b’;

c1=c1-32;c2=c2-32;

printf(“%c,%c”,c1,c2); printf(%d,%d”,c1,c2);

}程序執(zhí)行開始點定義變量c1,c2c1c2對c1,c2賦值9798對c1,c2計算6566輸出c1,c2A,B字符常量可以象整數一樣參與運算:65,662023/2/5高級語言程序設計44轉義字符C語言中,一些特殊的字符沒有字符常量,例如單引號、換行符等。因此,通常使用轉義字符表示ASCII碼字符集中不可打印的控制字符和特定功能的字符。轉義字符是一組以“\”開頭的特殊字符序列,用來表示任何可以輸出的字母字符、專用字符、控制字符、圖形字符。2023/2/5高級語言程序設計45字符形式含義ASCII碼\n換行10\t水平制表(下一個Tab)9\b退格8\r回車13\f換頁12\\反斜杠\92\‘單引號(撇)39\“雙引號34\ddd1到3位八進制代表的字符\xhh1到2位十六進制代表的字符常用轉義字符及其應用2023/2/5高級語言程序設計46

/*功能:使用轉義字符控制數據的輸出*/#include<stdio.h>voidmain(){charc1=‘A',c2=‘N';

printf("a\tbc\tABC\n");

printf("xyz\t%c%c",c1,c2);

}axyzANbcABC想一想,本程序的結果是什么?2023/2/5高級語言程序設計47雙引號括起來的字符序列。如“goodbye”,“0”等主要用于輸入輸出字符串常量例:printf("Goodmorning!\n");

字符串里的空格是實際內容(“有意義”)規(guī)定:

不能在一個字符串的中間換行很長的字符串可采用連續(xù)寫幾個字符串的形式Printf(“GoodMorning!\n”);GoodMorning!Printf(“Good\nMorning!\n”);Printf(“Good\n“);Printf(“Morning!\n”);錯對對2023/2/5高級語言程序設計482023/2/5高級語言程序設計49字符串以字符數組形式存儲在計算機中。存儲時串尾被自動加上字符‘\0’,以標志字符串的結束。例:GOODBYE\0

字符常量與字符串常量的區(qū)別:字符常量是單個字符,而字符串常量則可以包含零個或多個字符?!瓵’與“A”的區(qū)別:65‘A’“A”65\02023/2/5高級語言程序設計50用一個標識符代表一個常量,叫符號常量;符號常量的定義語句格式為:

#define符號常量名常量——宏定義#include<stdio.h>

#definePI3.14159/*定義PI代表串3.14159*/voidmain(){floatr

溫馨提示

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

評論

0/150

提交評論