版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版油氣田鉆井技術(shù)服務(wù)質(zhì)量承包合同3篇
- 2025年度環(huán)保型廠房設(shè)計(jì)與施工總承包合同3篇
- 二零二四年在線教育平臺(tái)軟件全國(guó)代理銷(xiāo)售合同模板2篇
- 2025年度全國(guó)范圍內(nèi)土地測(cè)繪技術(shù)服務(wù)合同范文3篇
- 2024版液化天然氣交易協(xié)議全文下載版B版
- 2024版運(yùn)輸行業(yè)職員勞動(dòng)協(xié)議樣本
- 2024年地基買(mǎi)賣(mài)合同附帶地基檢測(cè)及質(zhì)量認(rèn)證3篇
- 2025年大棚農(nóng)業(yè)綠色生產(chǎn)技術(shù)引進(jìn)合同3篇
- 2025年度綠色建筑:知識(shí)產(chǎn)權(quán)許可與環(huán)保建材合同3篇
- 2025年智慧能源物業(yè)工程承包及節(jié)能服務(wù)合同3篇
- 2024版塑料購(gòu)銷(xiāo)合同范本買(mǎi)賣(mài)
- 【高一上】【期末話(huà)收獲 家校話(huà)未來(lái)】期末家長(zhǎng)會(huì)
- JJF 2184-2025電子計(jì)價(jià)秤型式評(píng)價(jià)大綱(試行)
- GB/T 44890-2024行政許可工作規(guī)范
- 有毒有害氣體崗位操作規(guī)程(3篇)
- 兒童常見(jiàn)呼吸系統(tǒng)疾病免疫調(diào)節(jié)劑合理使用專(zhuān)家共識(shí)2024(全文)
- 2025屆山東省德州市物理高三第一學(xué)期期末調(diào)研模擬試題含解析
- 《華潤(rùn)集團(tuán)全面預(yù)算管理案例研究》
- 二年級(jí)下冊(cè)加減混合豎式練習(xí)360題附答案
- 異地就醫(yī)備案?jìng)€(gè)人承諾書(shū)
- 蘇教版五年級(jí)數(shù)學(xué)下冊(cè)解方程五種類(lèi)型50題
評(píng)論
0/150
提交評(píng)論