快速學(xué)會(huì)C語(yǔ)言_第1頁(yè)
快速學(xué)會(huì)C語(yǔ)言_第2頁(yè)
快速學(xué)會(huì)C語(yǔ)言_第3頁(yè)
快速學(xué)會(huì)C語(yǔ)言_第4頁(yè)
快速學(xué)會(huì)C語(yǔ)言_第5頁(yè)
已閱讀5頁(yè),還剩71頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C語(yǔ)言速成教程

一教你如何10小時(shí)學(xué)會(huì)C語(yǔ)言

令第一章C語(yǔ)言簡(jiǎn)介與TurboC的使用

令第二章C程序的結(jié)構(gòu)

令第三章常數(shù)與變數(shù)

令第四章基本輸出入函式

令第五章流程圖與抉擇指令

令第六章循環(huán)與自動(dòng)重復(fù)

<第七章數(shù)組與指針

令第八章函數(shù)與呼叫

令第九章檔案存取

■第一章C語(yǔ)言簡(jiǎn)介與TurboC的使用

◎c語(yǔ)言的優(yōu)點(diǎn):

O效率高:C語(yǔ)言的編譯器會(huì)產(chǎn)生最小的程序代碼。

O可移植性/移植性高:經(jīng)過(guò)些許的修改,可以在不同的平臺(tái)使用。

O功能強(qiáng)而有彈性。

O需要記憶的東西很少,易于寫(xiě)作。

◎TurboC的安裝:已安裝在學(xué)校主機(jī)。

TurboC的環(huán)境設(shè)定:TurboC安裝的目錄必須設(shè)定在PATH的系統(tǒng)變量。

如:PATH=C:\TC;C:\DOS;……如此TC才能正常工作。

◎TurboC的使用

只要設(shè)定好PATH變量,在DOS提示號(hào)輸入TC,就可以執(zhí)行TurboC的

整合環(huán)境了。TC將編輯(Edit)、編譯(Compile)、連結(jié)(Link)、除錯(cuò)(Debug)、

檔案管理(File)、…等等的功能整合在一起,所以我們稱(chēng)之為整合環(huán)境。

最好先用CD的指令,變更工作目錄到你要寫(xiě)C的目錄,再執(zhí)行TC,這樣

所產(chǎn)生的檔案,就會(huì)里這個(gè)目錄里面,便于備份與管理。

◎移動(dòng)光標(biāo)

方向鍵一tI-可以用來(lái)移動(dòng)光標(biāo)。

◎刪除文字

將光標(biāo)移到你要?jiǎng)h除的文字上,再按下Del鍵即可。

將光標(biāo)移到要?jiǎng)h除文字的右邊,再按下BS退位鍵也可以。

◎加載文字文件(C語(yǔ)言原始碼文件)

按下功能鍵F3或按F10選File-Load就會(huì)出現(xiàn)一個(gè)詢(xún)問(wèn)窗口要求輸入文件

名:

I------------------LoadFileName------------------1

I*CI

其中的文件名可以使用萬(wàn)用字符*或?,或直接指定你要的槽名。

若是使用萬(wàn)用字符,TC會(huì)再秀出一個(gè)窗口讓你選擇所要的檔案,

你可以用方向鍵移動(dòng)反白光棒,按Enter鍵則是選擇反白的檔案。

◎儲(chǔ)存編輯的文字文件

按下功能鍵F2或按F10選File-Save就會(huì)儲(chǔ)存目前編輯檔案。

若你想另外取一個(gè)檔名,并加以存盤(pán),就必須按F10選File-Writeto

就會(huì)出現(xiàn)一個(gè)詢(xún)問(wèn)窗U要求輸入文件名:

NewName

輸入新的檔名,按下Enter即可。

◎編譯并執(zhí)行目前的所編輯的程序

TurboC是一種編譯語(yǔ)言系統(tǒng),你所寫(xiě)的程序,經(jīng)過(guò)TC的編譯(pass1)及

連結(jié)(pass2)后,產(chǎn)生可執(zhí)行檔(.exe),才能在PC上執(zhí)行。

按下Ctrl+F9或按F10選RunfRun,TC會(huì)編譯目前所編輯的程序,

如果沒(méi)有錯(cuò)誤發(fā)生,TC會(huì)立即執(zhí)行所編輯的程序。

TC在執(zhí)行完程序后,會(huì)立刻切換回到TC的整合環(huán)境,如果你還想看剛才程序

執(zhí)行的結(jié)果,可以按下Alt+F5或按F10選Run-Userscreen,就會(huì)

切換到執(zhí)行畫(huà)面,再按下任何一鍵,就會(huì)回到TC的整合環(huán)境。

?結(jié)束TurboC

按下Alt+X或按F10選File-*Quit便可結(jié)束TurboC?

若你還有已編修尚未儲(chǔ)存的檔案,TC會(huì)問(wèn)你要不要存。

'Verify=n

|NONAME.Cnotsaved.Save?(Y/N)||

要存就按丫,不想存就按N。

■第二章C程序的結(jié)構(gòu)

◎C程序的結(jié)構(gòu):

hello.c|范例文件名

#include<stdio.h>|----范例原始碼

2main()1

3{I

4printfC'Hello!");|

5

Hello!|范例執(zhí)行結(jié)果

第一列:#include<stdio.h>

是用來(lái)定義一些函式的原型(prototype)>數(shù)據(jù)結(jié)構(gòu)(struct)或是常數(shù)(constant)。

C在使用變量之前,該變量都要先行宣告(declear)才可使用,而使用函式也是一樣,必須先

宣告它的原型才可以。宣告函式的原型是為了讓C能在編輯時(shí)作數(shù)據(jù)的型別檢查,以減少

錯(cuò)誤的發(fā)生。內(nèi)建的函式原型定義都放在INCLUDE\*.H中,用#include<stdio.h>就會(huì)

將INCLUDE\stdio.h這個(gè)檔引含。stdio.h由檔名可知道是跟標(biāo)準(zhǔn)輸出入(standardI/O)有

關(guān),檔內(nèi)定義了檔案輸出入、屏幕輸出、鍵盤(pán)輸入等相關(guān)函式的原型、數(shù)據(jù)結(jié)構(gòu)及常數(shù)。本

例中的printf()就屬于標(biāo)準(zhǔn)輸出的函式。引含.h檔并不會(huì)讓你的執(zhí)行檔變大或是變慢,

而且還能讓編輯器作正確的型別檢查,所以要養(yǎng)成寫(xiě)include的習(xí)慣?!铍m然在某些狀

況下,不加includeo所產(chǎn)生的執(zhí)行檔,一樣可以正常的執(zhí)行。

第二列:main()

main()就是主程序。程序在執(zhí)行時(shí),就是由這個(gè)函式開(kāi)始執(zhí)行。在C語(yǔ)言中,內(nèi)定的型

別是int,所以原來(lái)的main()相當(dāng)于是intmain(int)

★在這里正確的寫(xiě)法應(yīng)該是voidmain(void),因?yàn)樵谶@個(gè)簡(jiǎn)單的程序中,沒(méi)有回傳值,

也沒(méi)有輸入?yún)?shù)。

☆回傳值,是指一個(gè)函式在執(zhí)行后傳回的數(shù)值。

☆輸入?yún)?shù),是指一個(gè)函式可由參數(shù)決定執(zhí)行的結(jié)果,這個(gè)部分在第八章中有詳細(xì)的說(shuō)明。

第三列:{

第五列:}

在第三列及第五列之間,屬于main()函式的程序代碼。

{表示程序由此開(kāi)始,}表示程序到此結(jié)束。

第四列:printf("Hello!");

是本程序要求系統(tǒng)做動(dòng)作的指令,稱(chēng)之為「敘述」。在C語(yǔ)言中,每一敘述都以分號(hào)(;)做

為結(jié)束。在這個(gè)程序中,利用縮排的方式,使程序的層次分明,增加可讀性。

在C語(yǔ)言中,調(diào)位字符(如:空白(space)、定位(tab)及換列字符)在編譯時(shí)都會(huì)被忽略,

所以可適時(shí)加入調(diào)位字符,使程序好看一點(diǎn)。要注意的是,別把一個(gè)完整的個(gè)體拆開(kāi),如:

main,printf等,這些字本身是一個(gè)完整的個(gè)體,不可予以拆開(kāi)。而在各個(gè)個(gè)體之間,可以

任意加入調(diào)位字符。

☆C語(yǔ)言中的英文字母是有分大小寫(xiě)的,printfO與PrintFO不同,內(nèi)建的函式大多是小

寫(xiě)的,你自己寫(xiě)的函式,則可以用大寫(xiě)來(lái)做區(qū)隔。

◎printf的功用

printfO的功用是在屏幕上輸出數(shù)據(jù)。在TC中,在編輯區(qū)內(nèi)輸入printf,再將光標(biāo)移到

printf這個(gè)字上,按下Ctrl+Fl就會(huì)看到以下Help畫(huà)面:

I---------------------------------Help--------------------------------------1-這是TC的Help窗

printf:formattedoutputtostdout|-printf是將格式化的

I數(shù)據(jù)輸出到stdout

intprintf(constchar*format,...);|-printf的語(yǔ)法

I

Prototypeinstdio.h|-要用printf應(yīng)該

I#include的槽

Printformatsavariablenumberofarguments|—使用說(shuō)明:不同的格式

accordingtotheformat,andsendstheoutput|須要不同的參數(shù),這些

tostdout.Returnsthenumberofbytesoutput.|數(shù)據(jù)會(huì)送到stdout。傳

Intheeventoferror,itreturnsEOF.|回值是輸出的byte數(shù),

I若發(fā)生錯(cuò)誤則傳回

EOF

Seealsoecvtfprintfputc可參考相關(guān)指令:

putsscanfvprintfecvt,fprintf,putc,

puts,scanf,vprintf

在用TC的整合環(huán)境中,只要將光標(biāo)移到想進(jìn)一步了解的指令或內(nèi)建的函式上,按下

Ctrl+Fl就可以叫出TC的Help說(shuō)明窗口,得到該指令或函式的相關(guān)說(shuō)明。

printf的語(yǔ)法:intprintf(constchar*fonnat,…);

其中constchar*format指的是一個(gè)格式化的字符串。const是常數(shù)的意思,在此表示

format這個(gè)字符串指針傳入printf函式后,它的值不會(huì)被改變。

...指的是不定參數(shù),參數(shù)的數(shù)目取決于format字符串的內(nèi)容,這些參數(shù),通常是一些你

要秀出來(lái)的變量。簡(jiǎn)單來(lái)說(shuō):printf("輸出格式(含控制字符串)",要印出的數(shù)據(jù));

在C語(yǔ)言中是用雙引號(hào)(")來(lái)引含字符串,也就是在雙引號(hào)內(nèi)的數(shù)據(jù),是一個(gè)字符串。

本章只介紹%d這個(gè)控制字符串,其它的控制字符串在第四章會(huì)講到。%d表示以整數(shù)10

進(jìn)位的方式秀出數(shù)據(jù)。在輸出格式(含控制字符串)內(nèi)有幾個(gè)%d,在要印出的數(shù)據(jù)內(nèi)就要有

幾個(gè)整數(shù)來(lái)對(duì)應(yīng)。

arith.c

1

1|#include<stdio.h>

2|voidmain(void)

31{

4Iprintf("%d+%d=%d\n';8,2,8+2);

5|printf(u%d-%d=%d\nu,8,2,8-2);

6Iprintf(M%d*%d=%d\n”,8,2,8*2);

7Iprintf("%d/%d=%d\nn,8,2,8/2);

81)

8+2=10

8-2=6

8*2=16

8/2=4

我們以第四列的敘述作說(shuō)明:

printf("%d+%d=%d\n",8,2,8+2);

在輸出格式(含控制字符串)內(nèi)有3個(gè)%d,所以在要印出的數(shù)據(jù)的部分有

8,2,及8+2三個(gè)整數(shù)對(duì)應(yīng),所以輸出來(lái)的結(jié)果就是

8+2=10

在輸出格式(含控制字符串)的最后有\(zhòng)n符號(hào),這是一個(gè)控制字符,表示要

更換到下一列,其它的控制字符在第四章會(huì)提到。

若將本例中的\n都刪除,那秀出的結(jié)果會(huì)像這樣子:

8+2=108-2=68*2=168/2=4

◎C的四則運(yùn)算

計(jì)算機(jī)語(yǔ)言用的四則運(yùn)算符號(hào)兒乎都是相同的:

四則運(yùn)算符號(hào)意義范例結(jié)果

------------------..—

+加法4+26

-減法(或代表負(fù)號(hào))4-22

*乘法4*28

/除法4/22

=====

相關(guān)運(yùn)算符號(hào)意義范例結(jié)果

===========

++變數(shù)值加1i++或++ii值加1

—變數(shù)值減1i-或--ii值減1

%整數(shù)除法的余數(shù)4%20

____________________________—________________

在書(shū)中提到C語(yǔ)言沒(méi)有提供次方的功能,指的是在某些計(jì)算機(jī)語(yǔ)言可以用**表示

次方,如:2**3,表示2的3次方;有的用A表示,如:2A8,表示

2的8次方。在C語(yǔ)言,沒(méi)有運(yùn)算符號(hào)可以表示次方,但是C語(yǔ)言有提供次方

的函式:pow(),pow(2,3)表示2的3次方。

?個(gè)式子如果有多個(gè)運(yùn)算的話(huà),C是以先乘除后加減的方法來(lái)運(yùn)算,當(dāng)然我們也

可以用括號(hào)()來(lái)改變這個(gè)法則,只要有括號(hào),就優(yōu)先運(yùn)算。另外,在C語(yǔ)言?xún)?nèi)

中括號(hào)【|及大括號(hào){}是有其它的用途,所以在作數(shù)學(xué)運(yùn)算時(shí),只要用括號(hào)

,就只能用小括號(hào)(),小括號(hào)可以多層,C在運(yùn)算時(shí),是由最內(nèi)層開(kāi)始運(yùn)算。

范例:(1+2*(3+4))*5-6*7/2+8

=(1+2*(7))*5-6*7/2+8

=(15)*5-6*7/2+8

=75-42/2+8

=7521+8

=62

◎批注(Comments)

通常老師會(huì)要求初學(xué)者在程序的每一列加上批注,這是為了讓初學(xué)者知道自己在寫(xiě)些什么程

序代碼,了解為什么要這樣寫(xiě),而不只是照著書(shū)Keyin程序。寫(xiě)批注有助于自己了解程序

的內(nèi)容,便于日后的修改。但寫(xiě)批注對(duì)于某些程序設(shè)計(jì)師而言可說(shuō)是一種噩夢(mèng),因?yàn)閷?xiě)批注

所花的時(shí)間可能會(huì)與寫(xiě)程序的時(shí)間相去不遠(yuǎn),認(rèn)為寫(xiě)批注只是在浪費(fèi)時(shí)間。對(duì)一個(gè)相當(dāng)好

的程序設(shè)計(jì)師而言,也許寫(xiě)批注真的是浪費(fèi)時(shí)間,因?yàn)楹玫某绦虼a本身就已經(jīng)隱含了批注,

這也是寫(xiě)程序相當(dāng)高的境界。對(duì)一般的程序設(shè)計(jì)師而言,寫(xiě)一些批注還是比較好的作法,

特別是某些程序代碼是你花了一段時(shí)間才想到的「特殊」方法,加上一些批注,說(shuō)明一下這

個(gè)「特殊」的方法,以后要修改才能快速進(jìn)入狀況,否則,你可能會(huì)佩服自己當(dāng)時(shí)是如何想

到的這個(gè)方法,又再花一段時(shí)間才知道自己在寫(xiě)些什么程序代碼。講了這么多批注的

正反面(正面居多)論調(diào),在C語(yǔ)言中要如何寫(xiě)批注呢?只要用/*和*/將你要的批注內(nèi)

容包起來(lái)就可以了。C在編譯時(shí),會(huì)將/**/內(nèi)的數(shù)據(jù)略去,就如同調(diào)位字符一樣。唯一的

例外是:當(dāng)/**/在一組雙引號(hào)”內(nèi)時(shí),它們就屬于這組雙引號(hào)所包含的字符串。在C++

語(yǔ)言中則可用〃當(dāng)批注.

Icomments.corcomments.cpp

1|#include<stdio.h>/*prototype:printf()*/

2|voidmain(void)//mainprogram

3I(

4|/*所有的程序代碼都變成批注,所以這個(gè)程序目前是空的*/

5|/*printf("%d+%d=%d\n",8,2,8+2);*/

6|/*printf("%d-%d=%d\n",8,2,8-2);

7|printf("%d*%d=%d\n",8,2,8*2);

8|printf("%d/%d=%d\n",8,2,8/2);//division

9|*/

10|}//endofprogram

◎巢狀注(NestedComments)

InestcomO.c

1|#include<stdio.h>/*prototype:printf()*/

2|voidmain(void)

3I(

4|/*這個(gè)程序必須把巢狀批注的設(shè)定打開(kāi),才不會(huì)有錯(cuò)誤*/

5|/*

6|printf("%d+%d=%d\n",8,2,8+2);

7|/*printf("%d-%d=%d\n",8,2,8-2);*/

8|printf("%d*%d=%d\n",8,2,8*2);

9|printf("%d/%d=%d\n",8,2,8/2);

10|*/

HI}

上面的例子,有四組批注/**/,其中第三組及第四組的批注之間有部分重迭。

想要Compile沒(méi)有錯(cuò)誤,必須第5列的/*與第10列的*/配,也就是

第5列到第10列都是批注;另外第7列的/*與第7列的*/配,也就是

第7列是批注。這種批注方式,我們稱(chēng)之為巢狀批注。

TurboC內(nèi)定是不可使用巢狀批注的,上面的例子會(huì)是第5列的/*與第7列

的*/配,結(jié)果在第10列的*/會(huì)變成是多余的,造成Compile錯(cuò)誤。

打開(kāi)巢狀批注的方法:

按下F10fOptionsfCompilerfSource—NestedcommentsOff

將Off設(shè)為On就可以了。

◎巢狀批注的使用時(shí)機(jī)

在前面的例子只是為了說(shuō)明巢狀批注,也許你會(huì)覺(jué)得這樣的用法是自找麻煩,

但是以下的例子,你就會(huì)認(rèn)為有巢狀批注的功能還是比較好的。

在nestcoml.c中,每一列的printf();后面都加上了批注。

若要把這幾列程序變成批注,不使用巢狀批注,就會(huì)像nestcom2.c一樣,

必須在每一列的printf();前后再加上/**/,若是使用巢狀批注,

就像nestcom3.c一樣,只要在這幾列的前后加/**/就可以了。

11

Inestcoml.c

i

|#include<stdio.h>/*prototype:printf()*/1

2|voidmain(void)1

1

3ii1

41/*這個(gè)程序在每一個(gè)敘述后都加上了批注*/1

51

6|printf(M%d+%d=%d\nH,8,2,8+2);*8+2=10*/I

7|printf(n%d-%d=%d\n”,8,2,8-2);/*8-2=6*/1

8|printf(n%d*%d=%d\n”,8,2,8*2);/*8*2=16*/|

9Iprintf(H%d/%d=%d\nn,8,2,8/2);/*8/2=4*/|

101

111)1

ii

ii

nestcom2.c

1#include<stdio.h>/*prototype:printf()*/

2voidmain(void)

3(

4/*這個(gè)程序不用把巢狀批注的設(shè)定打開(kāi),也不會(huì)有錯(cuò)誤刃

5

6/*printf(n%d+%d=%d\n';8,2,8+2);*//*8+2=10*/

7/*printf(u%d-%d=%d\n",8,2,8-2);*//*8-2=6*/

8/*printf(u%d*%d=%d\n'\8,2,8*2);*//*8*2=16*/

9/*printf("%d/%d=%d\nn,8,2,8/2);*//*8/2=4*/

10

11

nestcom3.c

1#include<stdio.h>/*prototype:printf()*/

2voidmain(void)

3(

4/*這個(gè)程序也必須把巢狀批注的設(shè)定打開(kāi),才不會(huì)有錯(cuò)誤*/

5/*

6printf("%d+%d=%d\n",8,2,8+2);/*8+2=10*/|

7printf("%d-%d=%d\n",8,2,8-2);/*8-2=6*/|

8printf("%d*%d=%d\n",8,2,8*2);/*8*2=16*/|

9printf("%d/%d=%d\n",8,2,8/2);/*8/2=4*/|

10*/

11

■第三章常數(shù)與變數(shù)

C語(yǔ)言的數(shù)據(jù)可分為常數(shù)(constant)及變量(variable),常數(shù)指的是固定不變的數(shù),

例如:0,1,2等數(shù)值,或是用雙引號(hào)定義的字符串,我們也稱(chēng)之為字符串常數(shù)。

變量指的是數(shù)值可以改變的數(shù),例如:-個(gè)整數(shù)變量,我們可以把它設(shè)成1,然后再

改為10,或是其它的整數(shù)數(shù)值。

一個(gè)程序若沒(méi)有變量,那純粹只是將常數(shù)秀出來(lái)而已,好比是用文字編輯器編輯一個(gè)

檔案,再用type把它秀出來(lái)一樣。有了變量,就可以做不同的變化。

◎變量的型態(tài)---Char,int,long,float,doubleetc.o

◎變數(shù)的命名

如同檔案的命名,變量的名字要取得有意義,在C中,名字可以取得很長(zhǎng),但是

要用英文的,所以你可以把變量用中翻英來(lái)命名。

◎變量的命名規(guī)則

O變量名稱(chēng)的第一個(gè)字符必須是英文字母(A到Z或a到z)或是底線(_)。

O第二個(gè)字符以后可以使用前述字符,再加上數(shù)字0到9。

O變量名稱(chēng)的大小寫(xiě)是不同的。

O變量名稱(chēng)的最前面32個(gè)字符有效。

O不可以使用「保留字」當(dāng)變量的名稱(chēng),保留字是給編譯器使用,不可以當(dāng)成

變量名稱(chēng)。TC有以下的保留字:

流程:ifelsefordowhile

switchdefaultcasebreakcontinue

gotoreturn

型別:charintlongfloatdouble

voidregistersignedunsigned

shortnearfarhuge

typedefstructunionenum

autoconststaticvolatileextern

interruptcdeclpascalasm

運(yùn)算:sizeof

緩存器:_AX_AH_AL__cs_CS

_BX_BL_ds_DS

_CX_CH_CL_es_ES

_DX_DH_DL_ss_SS

_SI_DI_BP_SP

變量的設(shè)定

使用變量時(shí),應(yīng)該先考慮這個(gè)數(shù)可能的數(shù)值范圍,用以選定變量的型別,例如:

用一個(gè)數(shù)來(lái)存班上的人數(shù),一個(gè)合班的大班級(jí)可能超過(guò)百人,但最大不太可能

超過(guò)千人,所以選一種變量型別可存1000以下的數(shù)值,在此可選整數(shù)。

若是要用一個(gè)數(shù)來(lái)存你的存款,則整數(shù)的上限32767可能某些同學(xué)一個(gè)月的薪資

就是它的數(shù)倍,所以要選長(zhǎng)整數(shù),它的上限是2147483647。在數(shù)學(xué)運(yùn)算時(shí),

想要有小數(shù)的就要用浮點(diǎn)數(shù)(float)。

在C語(yǔ)言中,變量宣告的語(yǔ)法如下:

I型別變量名稱(chēng)1[,變量名稱(chēng)2|

例如:intNumberOfStudent;/*學(xué)生人數(shù)*/

longMoneylnBank,interest;/*銀行存款*/

floatRateOflnterest;/*利息利率*/

charEndOfString;/*字符串結(jié)束*/

charOneStudentName[9];/*學(xué)生姓名*/

在宣告變量時(shí),我們可以設(shè)定變量的初始值(initialvalue),語(yǔ)法如下:

I型別變量名稱(chēng)1=初始值1[,變量名稱(chēng)2=初始值2|

例如:intNumberOfStudent=60;/*學(xué)生人數(shù)*/

longMoneyInBank=1000000L;/*銀行存款*/

floatRateOfInterest=5.0;/*利息利率in%*/

charEndOfString=V)';/*字符串結(jié)束*/

charOneStudentName[9]="王大明";/*學(xué)生姓名*/

注意:在銀行存款的設(shè)定數(shù)值1000000后加上一個(gè)L,表示這個(gè)常數(shù)數(shù)值

1000000是一個(gè)長(zhǎng)整數(shù)。因?yàn)镃語(yǔ)言?xún)?nèi)定的型別是整數(shù),為了防止

不可預(yù)期的狀況發(fā)生,最好是自己把它設(shè)定成你想要的型別,不要

假設(shè)TC會(huì)幫你做好好的,要假設(shè)TC很笨不會(huì)幫你做,這樣在發(fā)展

大程序要除錯(cuò)時(shí),就可以把問(wèn)題簡(jiǎn)化,不必再考慮是不是數(shù)據(jù)型別錯(cuò)誤,

只要把程序流程或算法搞定就可以了。

在TC中,不加L,結(jié)果還是正確的,但是在其它的環(huán)境下可能會(huì)不同。

多加一個(gè)L并不會(huì)使程序變大或變慢,又能保障正確使用,何樂(lè)不為。

O復(fù)習(xí)一下字符與字符串:

char字符只占一個(gè)byte,以一組單引號(hào)’引含字符數(shù)據(jù),其表示法如下:

O單一字符:'A'、豈>'0'?

O八進(jìn)制數(shù)值:M01','\141\'60'、'\0'

0十六進(jìn)制數(shù)值:\x41'、"61'、\x30\'\xO'

字符串則是由一個(gè)以上的字符所組成的,而且以W這個(gè)字符做為結(jié)尾。

表示法:"123"、"ABC"、"abc"。以上的三個(gè)例子都是占4bytes。

用strlen()可以取得字符串的長(zhǎng)度(不含W字符)。

如:intStringLen=strlen("123");

這樣,StringLen就等于3。

☆在使用strlen()時(shí),必須加入#include<string.h>

◎設(shè)定敘述

前面已經(jīng)說(shuō)明了變量在宣告時(shí)給定初值的方法,接下來(lái)是在程序執(zhí)行的過(guò)程中設(shè)定變量數(shù)值

的方法.即然是變量,表示它的數(shù)值可能在程序執(zhí)行的過(guò)程中會(huì)改變多次,如果一個(gè)變量

在整個(gè)程序執(zhí)行中都不會(huì)改變,或許你該把它設(shè)成常數(shù)。

在設(shè)定變量時(shí),可以用等號(hào)=來(lái)設(shè)定變量新值,語(yǔ)法如下:

I變量名稱(chēng)=表達(dá)式(表達(dá)式、函式傳回?cái)?shù)值或兩者混合);

這個(gè)意思是等號(hào)左邊「變量名稱(chēng)」的數(shù)值會(huì)等于等號(hào)右邊「表達(dá)式」的運(yùn)算結(jié)果。

在C中,等號(hào)=是用來(lái)設(shè)定變量數(shù)值的,所以在等號(hào)的左邊必須是變量,不可以

是常數(shù)。在邏輯上的相等,在C中是用兩個(gè)等號(hào)==來(lái)表示,有關(guān)邏輯的表示,

在第五章中會(huì)作介紹。以下我們來(lái)看一些設(shè)定的例子,計(jì)算圓的面積:

PI=3.1415926;

r=4;

area=PI*r*r;

以下是用變量的方式表示的范例:

var.c

#include<stdio.h>

voidmain(void)

(

inti,j;

i=10;

j=2;

printf("%d+%d=%d\n",i,j,i+j);

printf(H%d-%d=%d\n",i,j,i-j);

printf(H%d*%d=%d\nH,i,j,i*j);

printf(n%d/%d=%d\n",iJ,i/j);

i=20;

j=2;

printf(u%d+%d

M

printf(%d-%d:

printf("%d*%d%d\n”,i,j,i*j);

printf(M%d/%d:%d\n\i,j,i/j);

10+2=12

10-2=8

10*2=20

10/2=5

20+2=22

20-2=18

20*2=40

20/2=10

變量使用的有效范圍:

整體變量(GlobalVariable):整體程序內(nèi)

區(qū)域變量(LocalVariable):函式內(nèi)

靜態(tài)變量(StaticVariable):單一程序內(nèi)

■第四章基本輸出入函式

這一章將介紹一些基本輸出入的函式,使用者經(jīng)由這些函式可以與計(jì)算機(jī)溝通,讓程序

讀取使用者的輸入部分。程序依使用者不同的要求,做不同的事,再將結(jié)果輸出給使用者。

◎輸出指令:printf()

在第二章中,曾經(jīng)談過(guò)printf指令,現(xiàn)在來(lái)詳細(xì)的探討它。

printf是一種格式化的輸出指令,換句話(huà)說(shuō),你可以用它來(lái)編排你所要的輸出格式。printf的

一般型式如下:

Iprintf("控制字符串“,表達(dá)式1,表達(dá)式2,...);

控制字符串是你打算要秀出的訊息,其中利用%與\這兩個(gè)字符,來(lái)控制數(shù)值的

輸出格式。

控制字符串中每一個(gè)%符號(hào),表示在后面有一個(gè)表達(dá)式與它對(duì)應(yīng),表達(dá)式的值會(huì)代

入這個(gè)%的位置。在%后的字符表示代入數(shù)的型別,常用的句柄如下表:

ii

1printf的句柄代表代入的數(shù)值型別I

1I

11

|%c1字符

I%d1十進(jìn)制之整數(shù)

I%ld1十進(jìn)制之長(zhǎng)整數(shù)

|%f1浮點(diǎn)數(shù)

I%lf1倍精浮點(diǎn)數(shù)1

|%Lf1長(zhǎng)倍精浮點(diǎn)數(shù)

I%s1字符串

11

表達(dá)式的型別必須跟句柄所代表的型別相符,否則會(huì)秀出不可預(yù)期的資料。

另一個(gè)控制符號(hào)\,其實(shí)只是定義字符而已。在上一章已經(jīng)介紹了字符的各種表

示法,如:表示A字符。

在C語(yǔ)言中,將一些特殊的控制字符另外定義,這些控制字符大部份跟光標(biāo)的

控制有關(guān),如下表:

I控制字符IDec|Hex|功能

\n|10|OxOA1換列,也就是將光標(biāo)移到下一列

\t|9|0x09|將光標(biāo)移到下一個(gè)定位(l+8n)

\b18|0x08|退一格,類(lèi)似按下左鍵

\aI7|0x07|喇叭叫一聲

\rI13|OxOD|回到列首

\f|12|0x0C|跳頁(yè),在列表時(shí)控制列表機(jī)跳頁(yè)

\\|92|0x5C|印出\字符

\r|39|0x27|印出,字符

\"|34|0x22|印出"字符

\xHHI|OxHH|卬出OxHH所表示的字符

%%|37|0x25|印出%字符

其中,%字符的定義與在控制字符串中的表示法不同,其余的字符在定義上與在控

字符串中的表示法都相同。

printf在做輸出時(shí)?,你也可以指定保留多少位置給對(duì)應(yīng)的表達(dá)式放結(jié)果。指定的

方式是在%之后加一個(gè)數(shù)值,如%5d:表示保留5個(gè)字符空間給一個(gè)十進(jìn)制整數(shù);

%121d:表示保留12個(gè)字符空間給-?個(gè)十進(jìn)制長(zhǎng)整數(shù)。

如果要輸出數(shù)據(jù)的長(zhǎng)度比你指定的保留空間還要大時(shí),printf就不理會(huì)你的設(shè)定,

把要輸出的數(shù)據(jù)完整的輸出,所以,你在設(shè)定保留空間時(shí),應(yīng)該注意輸出數(shù)據(jù)的范圍

及長(zhǎng)度,保留夠大的空間,確保輸出格式的整齊。

在浮點(diǎn)數(shù)方面,你除了可以指定保留的空間外,還可以指定小數(shù)點(diǎn)后要取幾位。

如%8.3f:表示保留8個(gè)字符空間給一個(gè)浮點(diǎn)數(shù),小數(shù)部分則是占3個(gè)字符空間

,由于小數(shù)點(diǎn)本身占一個(gè)字符,所以整數(shù)部分占8-(3+1)=4個(gè)字符空間。

printf在輸出數(shù)據(jù)時(shí),如果你指定保留的空間比要秀的數(shù)據(jù)長(zhǎng)度還要大時(shí),那

printf先秀一些空白,再秀出數(shù)據(jù),使總長(zhǎng)度等于你所指定的寬度,這樣等于是

讓輸出的數(shù)據(jù)向右對(duì)齊。如果你想要讓數(shù)據(jù)是向左對(duì)齊的話(huà),可以在指定寬度時(shí)

使用負(fù)數(shù),如%-5d:表示保留5個(gè)字符空間給一個(gè)十進(jìn)制整數(shù),若數(shù)據(jù)長(zhǎng)度不足

5,則在秀出資料后補(bǔ)空白。

O整數(shù)(int)及長(zhǎng)整數(shù)(long)

%-+wd-int|

|%-+wIdflongI

1tft1

III1———若有指定,則保留w個(gè)字符

111若無(wú)指定,秀出長(zhǎng)度將由數(shù)據(jù)決定1

111----------—若有指定,則一定會(huì)秀出正負(fù)號(hào)1

11若無(wú)指定,則只有負(fù)數(shù)會(huì)秀出負(fù)號(hào)I

11___________—若有指定,則向左對(duì)齊I

若無(wú)指定,則向右對(duì)齊1

11

O浮點(diǎn)數(shù)(float)、倍精浮點(diǎn)數(shù)(double)及長(zhǎng)倍精浮點(diǎn)數(shù)(longdouble)

%-+w.pfffloat

%-+w.pIffdouble

%-+w.pLfflongdouble

tttf

1111—若有指定,則保留p個(gè)字符給小數(shù)1

111若無(wú)指定,內(nèi)定是保留6個(gè)字符給小數(shù)|

111____若有指定,則保留w個(gè)字符含小數(shù)及小數(shù)點(diǎn)

11若無(wú)指定,秀出長(zhǎng)度將由數(shù)據(jù)決定1

11__—若有指定,則一定會(huì)秀出正負(fù)號(hào)1

1若無(wú)指定,則只有負(fù)數(shù)會(huì)秀出負(fù)號(hào)I

1—若有指定,則向左對(duì)齊|

若無(wú)指定,則向右對(duì)齊I

說(shuō)了這么多,只有自己試試看才知道!以下是個(gè)簡(jiǎn)單的例子:

Iprint.c1

11

11

1|#include<stdio.h>1

2|voidmain(void)1

31{1

4Iprintf(nl%ldl\n';123456);1

5Iprintf(nl%51dKnn,123456);1

6Iprintf("l%dl\n",123);1

7|printf(Ml%5dl\nH,123);1

8|printf(Ml%-5dl\n",123);1

9Iprintf(',l%fl\nH,12.345);1

10Iprintf("l%9fl\nn,12.345);1

11IprintfCI%9.2fl\nn12.345);1

12|printf(nl%-9.2fl\nn,12.345);1

131)1

1

11

I11234561-123456大于32767要長(zhǎng)整數(shù)才能表示,所以用%ld|

I11234561一所保留的5個(gè)字符不夠使用,所以TC視同你沒(méi)設(shè)|

I112311

I11231一保留5個(gè)字符,只使用3個(gè)字,向右靠齊|

I11231一保留5個(gè)字符,只使用3個(gè)字,向左靠齊|

I112.3450001<-小數(shù)沒(méi)有指定,所以TC使用內(nèi)定的6個(gè)小數(shù)。|

|112.3450001-一保留9個(gè)字符,小數(shù)部分仍使用內(nèi)定值I

1112.351-保留9個(gè)字符,小數(shù)2個(gè)字符,向右靠齊|

|112.351-保留9個(gè)字符,小數(shù)2個(gè)字符,向左靠齊|

◎輸入指令:scanf()

C語(yǔ)言使用scanf指令來(lái)讀取keyboard輸入的數(shù)據(jù)。scanf的一般型式如下:

Iscanf("控制字符串",&變量1,&變量2,);

scanfprintf可以說(shuō)是相對(duì)的,一個(gè)用來(lái)做輸入,一個(gè)用來(lái)做輸出。

scanf的控制字符串與printf幾乎是一樣。

111

1scanf的句柄1代表輸入的數(shù)值型別1

111

111

I%c1字符

I%d1十進(jìn)制之整數(shù)

I%ld1十進(jìn)制之長(zhǎng)整數(shù)1

I%D1十進(jìn)制之長(zhǎng)整數(shù)

I%f1浮點(diǎn)數(shù)1

I%lf1倍精浮點(diǎn)數(shù)1

I%Lf1長(zhǎng)倍精浮點(diǎn)數(shù)

I%s1字符串

111

★注意:沒(méi)有%F這種句柄,課本有誤!

%D的句柄只能用在scanf(),在printf()中無(wú)法使用。

在用scanf時(shí)還有一點(diǎn)要注意,在控制字符串后的變量,使用的是指針(pointer)。

什么是指標(biāo)?指針就是指向內(nèi)存的一個(gè)地址,在那個(gè)地址存放著數(shù)據(jù)。

例如:一個(gè)整數(shù)變量i,它是存在內(nèi)存的某一個(gè)地址,那個(gè)地址在C語(yǔ)言中,

是以&i來(lái)表示,我們通常稱(chēng)&i是i的地址,也稱(chēng)為i的指標(biāo)。

以下是常用的變量及其指針(因?yàn)樗牡刂饭潭ú粫?huì)改變,也稱(chēng)為指標(biāo)常數(shù)):

Icharc;/*字符*//*C的指針是&C*/

1inti;/*整數(shù)*//*i的指標(biāo)是&i*/

1long1;/*長(zhǎng)整數(shù)*//*1的指標(biāo)是&1*/

|floatf;/*浮點(diǎn)數(shù)*//*f的指標(biāo)是&f*/

Idoubled;/*倍精浮點(diǎn)數(shù)*//*d的指標(biāo)是&d*/

|longdoubleId;/*長(zhǎng)倍精浮點(diǎn)數(shù)*//*Id的指標(biāo)是&ld*/

1I

|charstr[8O];/*字符數(shù)組(字符串)*//*str[8O]的指標(biāo)是str*/|

|inta[100];/*整數(shù)數(shù)組*//*a[100]的指標(biāo)是a*/

|longb[100];/*長(zhǎng)整數(shù)數(shù)組*//*b[100]的指標(biāo)是b*/

|floatc[100];/*浮點(diǎn)數(shù)數(shù)組*//*c[1001的指標(biāo)是c*/

以下的范例,將第三章的范例var.c變量改由scanf輸入:

11

Iio.c|

?1?1

1|#include<stdio.h>1

2|voidmain(void)1

31{1

4Iinti,j;

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論