C語言程序設(shè)計-第2講-2+作業(yè)_第1頁
C語言程序設(shè)計-第2講-2+作業(yè)_第2頁
C語言程序設(shè)計-第2講-2+作業(yè)_第3頁
C語言程序設(shè)計-第2講-2+作業(yè)_第4頁
C語言程序設(shè)計-第2講-2+作業(yè)_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C程序設(shè)計第二講變量名的命名規(guī)則?數(shù)據(jù)的類型有何作用?如何輸入數(shù)據(jù)?如何輸出數(shù)據(jù)?基礎(chǔ)知識關(guān)鍵字是由C語言規(guī)定的具有特定意義的字符串,通常也稱為保留字。用戶定義的標識符不應(yīng)與關(guān)鍵字相同。C語言的關(guān)鍵字分為以下幾類:

(1)類型說明符用于定義、說明變量、函數(shù)或其它數(shù)據(jù)結(jié)構(gòu)的類型。如int,

double(2)語句定義符用于表示一個語句的功能。如if就是條件語句的語句定義符。C語言的關(guān)鍵字標準ANSIC89一共只有32個關(guān)鍵字p378autobreakcasecharconstcontinuedefaultdodoubleelseenum

externfloatforgoto

ifint

longregisterreturnshortsignedstaticsizeof

struct

switchtypedef

unionunsignedvoidvolatilewhileC99中新增:inlinerestrict_bool_complex_imaginary(1)數(shù)據(jù)類型說明符(14個)

長短雙正負longshortdoubleunsignedsingned

無值整型浮點字符voidintfloatchar聯(lián)合枚舉結(jié)構(gòu)unionenum

struct

(2)變量類型(4個):外部靜態(tài)自動寄存器extern

static

auto

register

(3)常量(1個):const(2)程序結(jié)構(gòu)語句定義符(10個)判斷:if循環(huán):fordowhile轉(zhuǎn)移:goto跳出:breakcontinue返回:return開關(guān):switchcase3、其它關(guān)鍵字sizeof

類型大小typedef類型定義default默認volatile可變的變量數(shù)據(jù)為什么要區(qū)分類型?不同類型的數(shù)據(jù)代表不同的數(shù)據(jù)表示形式合法的取值范圍占用內(nèi)存空間大小可參與的運算種類數(shù)據(jù)類型(DataType)p42C語言的數(shù)據(jù)類型數(shù)據(jù)類型:對數(shù)據(jù)分配存儲單元的安排,包括存儲單元的長度(所占字節(jié)數(shù)),以及數(shù)據(jù)的存儲形式。

不同的類型分配不同的長度和存儲形式。在C語言中,數(shù)據(jù)類型可分為:基本類型,枚舉類型,空類型,派生類型四大類p43。基本類型派生類型枚舉類型(enum)空類型(void)整型浮點類型基本整型(int)長整型(long)短整型(short)*雙長整型(longlongint)字符型(char)*布爾型(bool)數(shù)據(jù)類型單精度浮點型(float)雙精度浮點型(double)復(fù)數(shù)浮點型數(shù)組類型([])結(jié)構(gòu)體類型(union)共用體類型(stuct)數(shù)據(jù)類型(p43)指針類型(*)函數(shù)計算機中的數(shù)據(jù)單位:

bit,Byte,KB,MB,GB,TBbit,位Byte,字節(jié),BKilobyte(KB),KMegabyte(MB),MGigabyte(GB),GTera

byte(TB),T1TB==

1,024GB1GB

==

1,024MB1MB

==

1,024KB1KB

==

1,024B1B==

8b為什么每增加一個量級是1024而不是更容易計算的1000?為什么2M網(wǎng)絡(luò)下載速度只有兩百多K?常量和符號常量(p39)在程序運行過程中,其值不能被改變的量稱為常量常量區(qū)分為不同的類型:整型100,012,3.14浮點型3.14,1.23E2字符型‘a(chǎn)’,‘2’,‘\n’字符串“a”,

“ab”,“1232”符號常量#definePRICE30

變量

(p41)變量的值存放在特定存儲單元中的數(shù)據(jù),在程序運行期間,變量的值是可以改變的。變量名對應(yīng)著內(nèi)存空間中的某個地址,在對程序編譯連接時由編譯系統(tǒng)給每一個變量名分配對應(yīng)的內(nèi)存地址。從變量中取值,實際上是通過變量名找到相應(yīng)的內(nèi)存地址,從該存儲單元中讀取數(shù)據(jù)。圖3-33變量值變量名存儲單元aint

整數(shù),在目前絕大多數(shù)編譯器上占4個字節(jié)。TC3.0中是2個字節(jié)

inta=64;float浮點數(shù)單精度浮點數(shù),一般是4個字節(jié)長

floatb=64.0;char字符字符,一般是1個字節(jié)長用來表示256個ASCII字符,或者0-255的整數(shù)。

char=‘a(chǎn)’;基本數(shù)據(jù)類型變量在內(nèi)存中以補碼的形式存儲。shortint:0000000000001101int

或longint型:00000000000000000000000000001101在VC中,以整數(shù)13為例:其二進制數(shù)為:1101負整數(shù)的補碼為其正整數(shù)的反碼+1負數(shù)13:1000000000001101附符號位外,取反(1變0,0變1)在VC中,以整數(shù)-13為例:其二進制數(shù)為:-11011111111111110010反碼+11111111111110011unsignedint

65523short

int,短整型,2個字節(jié)。簡寫為shortlong

int,長整型,4個字節(jié)。簡寫為longsigned用來修飾char、int、short和long,說明他們是有符號的整數(shù)(正整數(shù)、0和負整數(shù))。一般缺省都是有符號的,所以這個修飾符通常省略unsigned用來修飾char、int、short和long,說明他們是無符號的整數(shù)(正整數(shù)和0)整型數(shù)據(jù)類型修飾符關(guān)鍵字sizeof

計算不同類型數(shù)據(jù)所占字節(jié)數(shù)

用法:sizeof(變量或變量類型)

返回變量類型所占字節(jié)數(shù)#include"stdio.h"voidmain(){

printf("char:%d\n",sizeof(char));

printf("int:%d\n",sizeof(int));

printf("long:%d\n",sizeof(long));

printf("float:%d\n",sizeof(float));

printf("double:%d\n",sizeof(double));

}各類整型量所分配的內(nèi)存字節(jié)數(shù)及數(shù)的表示范圍。p45類型說明符在VC中,變量的范圍字節(jié)數(shù)short-32768~32767即-215~(215-1)2unsignedshort0~65535即0~(216-1)2(long)int-231~(231-1)4unsignedlong0~(232-1)4兩字節(jié)的最大數(shù)為:1111111111111111signed,最高位是符號位,15位有效數(shù)字,最大值為215-1unsigned,16位有效數(shù)字,最大值為216-1浮點數(shù):用來表示具有小數(shù)點的實數(shù)

以指數(shù)的形式存放在存儲單元中float單精度浮點數(shù)4字節(jié)(VC)double

雙精度浮點數(shù)8字節(jié)(VC)longdouble長雙精度8字節(jié)(VC)浮點型數(shù)據(jù)浮點型變量(1)浮點型數(shù)據(jù)在內(nèi)存中的存放形式浮點型數(shù)在內(nèi)存中占4個字節(jié)(32位)。浮點型數(shù)據(jù)是按照指數(shù)形式存儲的。浮點型數(shù)分成小數(shù)部分和指數(shù)部分。指數(shù)部分采用規(guī)范化的指數(shù)形式。浮點型常量的兩種表示方法小數(shù)指數(shù)0.1231.23e-3或1.23E-3

注意:

1.字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù)

2.數(shù)字和e之間不能有空格。1e3,1.8e-3,-123e-6,-.1e-3E3,2.1e3.5,.e3,e

規(guī)范化的指數(shù)形式:

在字母e(或E)之前的小數(shù)部分中,小數(shù)點左邊應(yīng)有一位(且只能有一位)非零的數(shù)字.

例如:123.456可以表示為:

123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e5

“規(guī)范化的指數(shù)形式”為:1.23456e3。浮點數(shù)在內(nèi)存中的存放形式p50浮點數(shù)占4個字節(jié)(32位)內(nèi)存空間。按指數(shù)形式存儲。浮點數(shù)3.14159在內(nèi)存中的存放形式如下:±.3141591符號小數(shù)部分指數(shù)0.314159*101=3.14159用二進制表示浮點數(shù)二進制只有0和1,小數(shù)用下面的方式來表示:

a1×2-1+a2×2-2+a3×2-3+......+an×2-n

其中a1,a2等只可以是0或者1。類型說明符bit(byte)有效數(shù)字位數(shù)數(shù)的范圍float32(4)6~710-37~1038

double64(8)15~1610-307~10308

單精度浮點數(shù)4字節(jié)(32bit),其中小數(shù)部分占23

bit,指數(shù)占8bit,符號位1bit。雙精度浮點數(shù)8字節(jié)(64bit),其中小數(shù)部分占52

bit,指數(shù)占11bit,符號位1bit。小數(shù)部分的位數(shù)(bit)決定浮點數(shù)的精度。思考:為什么float的有效數(shù)字位數(shù)不是7,而是6~7?float型數(shù)據(jù)提供7位有效數(shù)字double型數(shù)據(jù)提供16位有效數(shù)字使用不當導致舍入誤差#include<stdio.h>main(){ floata;

doubleb; a=123456.789e4; b=123456.789e4; printf("%f\n%f\n",a,b);}浮點數(shù)提供的有效數(shù)字位數(shù)程序執(zhí)行結(jié)果:123457888.0000001234567890.000000TC2中int的范圍是-32768~32767如果我們給它一個小于-32768或者大于32767的數(shù)會如何呢?小蛇能吞下大象嗎?超出取值范圍會怎樣?一臺安裝了Windows95/98的機器,如果連續(xù)運行49.7天沒有重新啟動,可能死機原因:Windows自啟動時刻起,有一個計數(shù)器,記錄系統(tǒng)已經(jīng)運行了多少毫秒。這個計數(shù)器是個unsigned

long

類型的變量unsigned

long的最大值是:4294967295(232-1)一天有24*60*60*1000=86400000毫秒4294967295/86400000=49.71026961805……當49.7天的時候,此計數(shù)器會溢出,引起死機溢出(Overflow)造成的危害整型常數(shù)18、-31長整型常量123l、123L、123456l、123456L無符號型常量123u、123U浮點常數(shù)十進制小數(shù)形式123.45、456.78指數(shù)形式1e-2、4.5e3單精度浮點型常量123.45f、456.78F、1e-2f、4.5e3F長雙精度浮點型常量123.45l、456.78L、1e-2l、4.5e3L常數(shù)(Constant)整型常數(shù)缺省被看作int類型,如果超出int的范圍,就自動被看作long??梢栽跀?shù)字后面加上l或者L強制其為long。浮點常數(shù)缺省為double,后綴f或F為float,后綴l或L為longdouble。因為字母l和數(shù)字1容易混淆,所以當用l做后綴時,常使用大寫形式。以數(shù)字“0”開始的整型常數(shù)是八進制數(shù)022、-037010和10大小不一樣以“0x”或者“0X”開始的整型常數(shù)是十六進制A-F和a-f用來表示十進制的10-15十六進制的形式比較常用,尤其在進行位一級的控制的時候0x12、-0x1F,-0x1f八進制與十六進制常數(shù)練習,下列哪些數(shù)是合法的16進制數(shù)0X2A0XA05A0XFFFF0X3H字符常數(shù)的表示方法′a′,′A′,′5′,′%′,′$′……單引號內(nèi)只能有一個字符,除非用〞\〞開頭!單引號內(nèi)不能沒有字符!字符常數(shù)是一個普通整數(shù),可參與各種運算每個字符具有一個0-255之間的數(shù)值,可從ASCII表查出注意:′5′和整數(shù)5的區(qū)別字符(Character)常數(shù)ASCII碼表轉(zhuǎn)義字符(p40)一些特殊字符(無法從鍵盤輸入或者另有它用)用轉(zhuǎn)義字符表示字符常數(shù)用八進制轉(zhuǎn)義字符表示ASCII碼‘\ooo’中的o代表8進制數(shù)(最多三位數(shù))。取值范圍為:\0至\777注意,8進制數(shù)中不包含8.使用規(guī)則:先將八進制數(shù)轉(zhuǎn)換為十進制數(shù),再取十進制對應(yīng)的ASCII碼。用十六進制轉(zhuǎn)義字符表示ASCII碼‘\xhh’中的h代表16進制數(shù)(最多兩位數(shù))。取值范圍為:\0至\FF使用規(guī)則:先將十六進制數(shù)轉(zhuǎn)換為十進制數(shù),再取十進制對應(yīng)的ASCII碼。定義方式:

char變量名;占1個內(nèi)存單元。字符型變量可做為整型變量計算和顯示。取值范圍:unsignedchar0-FF0-255signedchar-128-127字符型變量課堂練習:寫出以下程序的輸出結(jié)果。#include

"stdio.h"voidmain(){

char

cOctal

=

'\101';

char

cHex

=

'\x41';

char

cVariable

=65;

printf(“cOctal:%c,%d\n",cVariable,cVariable);printf(“cHex:%c,%d\n",cHex,cHex);printf(“cVariable:%c,%d\n",cOctal,cOctal);

}小寫字母轉(zhuǎn)換為大寫字母#include<stdio.h>main(){

char

ch='b';

ch='b'-32;

printf("%c,%d\n",ch,ch);}#include<stdio.h>main(){

char

ch=‘a(chǎn)’;/*定義ch

為字符型變量*/

printf(“%c,%d\n”,ch,ch);/*分別以字符形式、整數(shù)形式輸出ch*/}Char型與int

型之間的關(guān)系以字符型和整數(shù)型兩種格式輸出字符變量。用雙引號括住的由0個或多個字符組成的字符序列"Iamastring"""表示空字符串轉(zhuǎn)義字符也可以在字符串中使用引號只作為字符串開始和結(jié)束的標志C語言內(nèi)部用'\0'

表示字符串的結(jié)束除注釋外,是唯一可以出現(xiàn)中文的地方"x"和’x’是不同的<string.h>里定義了一系列專門的字符串處理函數(shù)字符串(String)常數(shù)宏常量也稱符號常量一般采用大寫字母表示

#define標識符字符串不是語句,而是一種編譯預(yù)處理命令宏替換(MacroSubstitulition)

#include<stdio.h>#definePI3.14159#defineR5.3main(){ printf("area=%f\n",PI*R*R);

printf("circumference=%f\n",2*PI*R);}宏常量習慣上符號常量的標識符用大寫字母,變量標識符用小寫字母,以示區(qū)別。用const修飾定義的變量為常量constfloat

pi=3.1425926;

常量只能在定義時賦值,然后不能再改變其值常數(shù)、const常量、宏常量和枚舉常量,都可以用來表示一個永遠不會改變的數(shù)。const常量#include

"stdio.h"voidmain(){

int

iNum

=65;

const

int

iCount

=10;

iNum

=

iCount;

iCount

=

iNum;

printf("%d,%d\n",iNum,iCount);}課堂練習:寫出以下程序的輸出結(jié)果。輸出函數(shù)printf()printf函數(shù)稱為格式輸出函數(shù),用來向標準輸出設(shè)備(屏幕)寫數(shù)據(jù);

printf(“格式控制串”,參數(shù)表);

格式化字符串包括兩部分內(nèi)容:1.正常字符,這些字符將按原樣輸出;2.格式聲明,%格式字符,確定輸出格式。參數(shù)表個數(shù)必須與格式化字聲明的個數(shù)一樣,

各參數(shù)之間用","分開,且順序一一對應(yīng),

參數(shù)可以是變量,常量和表達式。1.格式字符

符號

作用

%d

decimal十進制有符號整數(shù)

%f

float

浮點數(shù)(默認小數(shù)點后6位)

%c

character單字符

%s

string字符串

%u

unsigned

十進制無符號整數(shù)

%p

pointer

指針

%e

exponential指數(shù)形式的浮點數(shù)(1.2e+02)%x,%X

hex無符號以十六進制表示的整數(shù)

%o

octal無符號以八進制表示的整數(shù)說明:除了X,E,G外,其他格式字符必須用小寫??梢栽趐rintf函數(shù)中的“格式控制”字符串中包含轉(zhuǎn)義字符。一個格式說明必須以“%”開頭,以9個格式字符之一為結(jié)束,中間可以插入附加格式字符。想輸出%,則應(yīng)該在格式控制字符串中用連續(xù)兩個%表示(1)在“%”和字母之間插進數(shù)字表示最大場寬。

%3d表示輸出3位整型數(shù),不夠3位右對齊。

%9.2f表示輸出場寬為9的浮點數(shù),其中小數(shù)位為2,整數(shù)位為6,小數(shù)點占一位,不夠9位右對齊。(2)“-“輸出左對齊。%-7d表示輸出7位整數(shù)左對齊格式輸入與輸出(一).格式輸入函數(shù)函數(shù)作用:按照變量在內(nèi)存的地址將變量值存進去。一般格式:scanf(格式控制,地址表列)同printf函數(shù)是由若干個地址組成的表列,可以是變量的地址,或字符串的首地址

使用scanf()函數(shù)時應(yīng)注意的問題

:(1)scanf()函數(shù)中的“格式控制”后面應(yīng)當是變量地址,而不應(yīng)是變量名。

(2)

如果在“格式控制”字符串中除了格式說明以外還有其他字符,則在輸入數(shù)據(jù)時在對應(yīng)位置應(yīng)輸入與這些字符相同的字符。

(3)在用“%c”格式輸入字符時,空格字符和“轉(zhuǎn)義字符”都作為有效字符輸入(4)在輸入數(shù)據(jù)時,遇以下情況時認為該數(shù)據(jù)結(jié)束。①遇空格,或按“回車”或“跳格”(Tab)鍵;②按指定的寬度結(jié)束,如“%3d”,只取3列;③遇非法輸入。寫出下列程序的執(zhí)行結(jié)果:#include"stdio.h"voidmain(){inta=12,b=32;

printf("%d,%x,%d,%x",a,a,b,b);}%x,%X

hex

無符號以十六進制表示的整數(shù)寫出下列程序的執(zhí)行結(jié)果:#include"stdio.h"voidmain(){inta=-12,b=32;

printf("%u,%d",a,b);}%u

unsigned

十進制無符號整數(shù)

寫出下列程序的執(zhí)行結(jié)果:#include"stdio.h"voidmain(){floata=345.234,b=22.1;

printf("%f,%e",a,b);

printf("\n");printf("%6.2f,%6.0e",a,b);}%f

float

浮點數(shù)(默認小數(shù)點后6位)可以在“%”和字母之間插進數(shù)字表示最大場寬。

寫出下列程序的執(zhí)行結(jié)果:#include"stdio.h"voidmain(){inta=97;

printf("%c=",a);

printf("%d,%c",a,a);}%c

character單字符

2.常用轉(zhuǎn)義字符p40

字符作用

\n換行

\f清屏并換頁

\r回車

\t

Tab符

\\輸出\課外知識,IEEE754標準浮點數(shù)

在IEEE754標準中的表示形式V=(-1)S×(M)×2^(E-127)

S符號位、M有效數(shù)字、E指數(shù)S=0表示正數(shù),S=1表示負數(shù)M是規(guī)范指數(shù)表示的二進制小數(shù)

(1.xxxx*2n

)E指數(shù)部分(E=n+127)float是用4字節(jié)即32位二進制位來存儲。其中1位符號位,8位指數(shù)位和23位有效數(shù)字位。有效數(shù)字為標準指數(shù)格式1.xxxx*2n

,存儲時省略1。指數(shù):E-127,指數(shù)位的數(shù)字為E,實際值為E-127,值大于0為正指數(shù),小于0指數(shù)為負值。將一個浮點數(shù)轉(zhuǎn)化為實數(shù)存儲格式的步驟為:(1)先化為二進制數(shù)(2)

將二進制數(shù)寫成標準指數(shù)格式1.

溫馨提示

  • 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

提交評論