版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C語言速成教程
一教你如何10小時學(xué)會C語言
令第一章C語言簡介與TurboC的使用
令第二章C程序的結(jié)構(gòu)
令第三章常數(shù)與變數(shù)
令第四章基本輸出入函式
令第五章流程圖與抉擇指令
令第六章循環(huán)與自動重復(fù)
<第七章數(shù)組與指針
令第八章函數(shù)與呼叫
令第九章檔案存取
■第一章C語言簡介與TurboC的使用
◎c語言的優(yōu)點:
O效率高:C語言的編譯器會產(chǎn)生最小的程序代碼。
O可移植性/移植性高:經(jīng)過些許的修改,可以在不同的平臺使用。
O功能強而有彈性。
O需要記憶的東西很少,易于寫作。
◎TurboC的安裝:已安裝在學(xué)校主機。
TurboC的環(huán)境設(shè)定:TurboC安裝的目錄必須設(shè)定在PATH的系統(tǒng)變量。
如:PATH=C:\TC;C:\DOS;……如此TC才能正常工作。
◎TurboC的使用
只要設(shè)定好PATH變量,在DOS提示號輸入TC,就可以執(zhí)行TurboC的
整合環(huán)境了。TC將編輯(Edit)、編譯(Compile)、連結(jié)(Link)、除錯(Debug)、
檔案管理(File)、…等等的功能整合在一起,所以我們稱之為整合環(huán)境。
最好先用CD的指令,變更工作目錄到你要寫C的目錄,再執(zhí)行TC,這樣
所產(chǎn)生的檔案,就會里這個目錄里面,便于備份與管理。
◎移動光標
方向鍵一tI-可以用來移動光標。
◎刪除文字
將光標移到你要刪除的文字上,再按下Del鍵即可。
將光標移到要刪除文字的右邊,再按下BS退位鍵也可以。
◎加載文字文件(C語言原始碼文件)
按下功能鍵F3或按F10選File-Load就會出現(xiàn)一個詢問窗口要求輸入文件
名:
I------------------LoadFileName------------------1
I*CI
其中的文件名可以使用萬用字符*或?,或直接指定你要的槽名。
若是使用萬用字符,TC會再秀出一個窗口讓你選擇所要的檔案,
你可以用方向鍵移動反白光棒,按Enter鍵則是選擇反白的檔案。
◎儲存編輯的文字文件
按下功能鍵F2或按F10選File-Save就會儲存目前編輯檔案。
若你想另外取一個檔名,并加以存盤,就必須按F10選File-Writeto
就會出現(xiàn)一個詢問窗U要求輸入文件名:
NewName
輸入新的檔名,按下Enter即可。
◎編譯并執(zhí)行目前的所編輯的程序
TurboC是一種編譯語言系統(tǒng),你所寫的程序,經(jīng)過TC的編譯(pass1)及
連結(jié)(pass2)后,產(chǎn)生可執(zhí)行檔(.exe),才能在PC上執(zhí)行。
按下Ctrl+F9或按F10選RunfRun,TC會編譯目前所編輯的程序,
如果沒有錯誤發(fā)生,TC會立即執(zhí)行所編輯的程序。
TC在執(zhí)行完程序后,會立刻切換回到TC的整合環(huán)境,如果你還想看剛才程序
執(zhí)行的結(jié)果,可以按下Alt+F5或按F10選Run-Userscreen,就會
切換到執(zhí)行畫面,再按下任何一鍵,就會回到TC的整合環(huán)境。
?結(jié)束TurboC
按下Alt+X或按F10選File-*Quit便可結(jié)束TurboC?
若你還有已編修尚未儲存的檔案,TC會問你要不要存。
'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>
是用來定義一些函式的原型(prototype)>數(shù)據(jù)結(jié)構(gòu)(struct)或是常數(shù)(constant)。
C在使用變量之前,該變量都要先行宣告(declear)才可使用,而使用函式也是一樣,必須先
宣告它的原型才可以。宣告函式的原型是為了讓C能在編輯時作數(shù)據(jù)的型別檢查,以減少
錯誤的發(fā)生。內(nèi)建的函式原型定義都放在INCLUDE\*.H中,用#include<stdio.h>就會
將INCLUDE\stdio.h這個檔引含。stdio.h由檔名可知道是跟標準輸出入(standardI/O)有
關(guān),檔內(nèi)定義了檔案輸出入、屏幕輸出、鍵盤輸入等相關(guān)函式的原型、數(shù)據(jù)結(jié)構(gòu)及常數(shù)。本
例中的printf()就屬于標準輸出的函式。引含.h檔并不會讓你的執(zhí)行檔變大或是變慢,
而且還能讓編輯器作正確的型別檢查,所以要養(yǎng)成寫include的習(xí)慣?!铍m然在某些狀
況下,不加includeo所產(chǎn)生的執(zhí)行檔,一樣可以正常的執(zhí)行。
第二列:main()
main()就是主程序。程序在執(zhí)行時,就是由這個函式開始執(zhí)行。在C語言中,內(nèi)定的型
別是int,所以原來的main()相當于是intmain(int)
★在這里正確的寫法應(yīng)該是voidmain(void),因為在這個簡單的程序中,沒有回傳值,
也沒有輸入?yún)?shù)。
☆回傳值,是指一個函式在執(zhí)行后傳回的數(shù)值。
☆輸入?yún)?shù),是指一個函式可由參數(shù)決定執(zhí)行的結(jié)果,這個部分在第八章中有詳細的說明。
第三列:{
第五列:}
在第三列及第五列之間,屬于main()函式的程序代碼。
{表示程序由此開始,}表示程序到此結(jié)束。
第四列:printf("Hello!");
是本程序要求系統(tǒng)做動作的指令,稱之為「敘述」。在C語言中,每一敘述都以分號(;)做
為結(jié)束。在這個程序中,利用縮排的方式,使程序的層次分明,增加可讀性。
在C語言中,調(diào)位字符(如:空白(space)、定位(tab)及換列字符)在編譯時都會被忽略,
所以可適時加入調(diào)位字符,使程序好看一點。要注意的是,別把一個完整的個體拆開,如:
main,printf等,這些字本身是一個完整的個體,不可予以拆開。而在各個個體之間,可以
任意加入調(diào)位字符。
☆C語言中的英文字母是有分大小寫的,printfO與PrintFO不同,內(nèi)建的函式大多是小
寫的,你自己寫的函式,則可以用大寫來做區(qū)隔。
◎printf的功用
printfO的功用是在屏幕上輸出數(shù)據(jù)。在TC中,在編輯區(qū)內(nèi)輸入printf,再將光標移到
printf這個字上,按下Ctrl+Fl就會看到以下Help畫面:
I---------------------------------Help--------------------------------------1-這是TC的Help窗
口
printf:formattedoutputtostdout|-printf是將格式化的
I數(shù)據(jù)輸出到stdout
intprintf(constchar*format,...);|-printf的語法
I
Prototypeinstdio.h|-要用printf應(yīng)該
I#include的槽
Printformatsavariablenumberofarguments|—使用說明:不同的格式
accordingtotheformat,andsendstheoutput|須要不同的參數(shù),這些
tostdout.Returnsthenumberofbytesoutput.|數(shù)據(jù)會送到stdout。傳
Intheeventoferror,itreturnsEOF.|回值是輸出的byte數(shù),
I若發(fā)生錯誤則傳回
EOF
Seealsoecvtfprintfputc可參考相關(guān)指令:
putsscanfvprintfecvt,fprintf,putc,
puts,scanf,vprintf
在用TC的整合環(huán)境中,只要將光標移到想進一步了解的指令或內(nèi)建的函式上,按下
Ctrl+Fl就可以叫出TC的Help說明窗口,得到該指令或函式的相關(guān)說明。
printf的語法:intprintf(constchar*fonnat,…);
其中constchar*format指的是一個格式化的字符串。const是常數(shù)的意思,在此表示
format這個字符串指針傳入printf函式后,它的值不會被改變。
...指的是不定參數(shù),參數(shù)的數(shù)目取決于format字符串的內(nèi)容,這些參數(shù),通常是一些你
要秀出來的變量。簡單來說:printf("輸出格式(含控制字符串)",要印出的數(shù)據(jù));
在C語言中是用雙引號(")來引含字符串,也就是在雙引號內(nèi)的數(shù)據(jù),是一個字符串。
本章只介紹%d這個控制字符串,其它的控制字符串在第四章會講到。%d表示以整數(shù)10
進位的方式秀出數(shù)據(jù)。在輸出格式(含控制字符串)內(nèi)有幾個%d,在要印出的數(shù)據(jù)內(nèi)就要有
幾個整數(shù)來對應(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
我們以第四列的敘述作說明:
printf("%d+%d=%d\n",8,2,8+2);
在輸出格式(含控制字符串)內(nèi)有3個%d,所以在要印出的數(shù)據(jù)的部分有
8,2,及8+2三個整數(shù)對應(yīng),所以輸出來的結(jié)果就是
8+2=10
在輸出格式(含控制字符串)的最后有\(zhòng)n符號,這是一個控制字符,表示要
更換到下一列,其它的控制字符在第四章會提到。
若將本例中的\n都刪除,那秀出的結(jié)果會像這樣子:
8+2=108-2=68*2=168/2=4
◎C的四則運算
計算機語言用的四則運算符號兒乎都是相同的:
四則運算符號意義范例結(jié)果
------------------..—
—
+加法4+26
-減法(或代表負號)4-22
*乘法4*28
/除法4/22
=====
相關(guān)運算符號意義范例結(jié)果
===========
++變數(shù)值加1i++或++ii值加1
—變數(shù)值減1i-或--ii值減1
%整數(shù)除法的余數(shù)4%20
____________________________—________________
在書中提到C語言沒有提供次方的功能,指的是在某些計算機語言可以用**表示
次方,如:2**3,表示2的3次方;有的用A表示,如:2A8,表示
2的8次方。在C語言,沒有運算符號可以表示次方,但是C語言有提供次方
的函式:pow(),pow(2,3)表示2的3次方。
?個式子如果有多個運算的話,C是以先乘除后加減的方法來運算,當然我們也
可以用括號()來改變這個法則,只要有括號,就優(yōu)先運算。另外,在C語言內(nèi)
中括號【|及大括號{}是有其它的用途,所以在作數(shù)學(xué)運算時,只要用括號
,就只能用小括號(),小括號可以多層,C在運算時,是由最內(nèi)層開始運算。
范例:(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)
通常老師會要求初學(xué)者在程序的每一列加上批注,這是為了讓初學(xué)者知道自己在寫些什么程
序代碼,了解為什么要這樣寫,而不只是照著書Keyin程序。寫批注有助于自己了解程序
的內(nèi)容,便于日后的修改。但寫批注對于某些程序設(shè)計師而言可說是一種噩夢,因為寫批注
所花的時間可能會與寫程序的時間相去不遠,認為寫批注只是在浪費時間。對一個相當好
的程序設(shè)計師而言,也許寫批注真的是浪費時間,因為好的程序代碼本身就已經(jīng)隱含了批注,
這也是寫程序相當高的境界。對一般的程序設(shè)計師而言,寫一些批注還是比較好的作法,
特別是某些程序代碼是你花了一段時間才想到的「特殊」方法,加上一些批注,說明一下這
個「特殊」的方法,以后要修改才能快速進入狀況,否則,你可能會佩服自己當時是如何想
到的這個方法,又再花一段時間才知道自己在寫些什么程序代碼。講了這么多批注的
正反面(正面居多)論調(diào),在C語言中要如何寫批注呢?只要用/*和*/將你要的批注內(nèi)
容包起來就可以了。C在編譯時,會將/**/內(nèi)的數(shù)據(jù)略去,就如同調(diào)位字符一樣。唯一的
例外是:當/**/在一組雙引號”內(nèi)時,它們就屬于這組雙引號所包含的字符串。在C++
語言中則可用〃當批注.
Icomments.corcomments.cpp
1|#include<stdio.h>/*prototype:printf()*/
2|voidmain(void)//mainprogram
3I(
4|/*所有的程序代碼都變成批注,所以這個程序目前是空的*/
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|/*這個程序必須把巢狀批注的設(shè)定打開,才不會有錯誤*/
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沒有錯誤,必須第5列的/*與第10列的*/配,也就是
第5列到第10列都是批注;另外第7列的/*與第7列的*/配,也就是
第7列是批注。這種批注方式,我們稱之為巢狀批注。
TurboC內(nèi)定是不可使用巢狀批注的,上面的例子會是第5列的/*與第7列
的*/配,結(jié)果在第10列的*/會變成是多余的,造成Compile錯誤。
打開巢狀批注的方法:
按下F10fOptionsfCompilerfSource—NestedcommentsOff
將Off設(shè)為On就可以了。
◎巢狀批注的使用時機
在前面的例子只是為了說明巢狀批注,也許你會覺得這樣的用法是自找麻煩,
但是以下的例子,你就會認為有巢狀批注的功能還是比較好的。
在nestcoml.c中,每一列的printf();后面都加上了批注。
若要把這幾列程序變成批注,不使用巢狀批注,就會像nestcom2.c一樣,
必須在每一列的printf();前后再加上/**/,若是使用巢狀批注,
就像nestcom3.c一樣,只要在這幾列的前后加/**/就可以了。
11
Inestcoml.c
i
|#include<stdio.h>/*prototype:printf()*/1
2|voidmain(void)1
1
3ii1
41/*這個程序在每一個敘述后都加上了批注*/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/*這個程序不用把巢狀批注的設(shè)定打開,也不會有錯誤刃
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/*這個程序也必須把巢狀批注的設(shè)定打開,才不會有錯誤*/
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語言的數(shù)據(jù)可分為常數(shù)(constant)及變量(variable),常數(shù)指的是固定不變的數(shù),
例如:0,1,2等數(shù)值,或是用雙引號定義的字符串,我們也稱之為字符串常數(shù)。
變量指的是數(shù)值可以改變的數(shù),例如:-個整數(shù)變量,我們可以把它設(shè)成1,然后再
改為10,或是其它的整數(shù)數(shù)值。
一個程序若沒有變量,那純粹只是將常數(shù)秀出來而已,好比是用文字編輯器編輯一個
檔案,再用type把它秀出來一樣。有了變量,就可以做不同的變化。
◎變量的型態(tài)---Char,int,long,float,doubleetc.o
◎變數(shù)的命名
如同檔案的命名,變量的名字要取得有意義,在C中,名字可以取得很長,但是
要用英文的,所以你可以把變量用中翻英來命名。
◎變量的命名規(guī)則
O變量名稱的第一個字符必須是英文字母(A到Z或a到z)或是底線(_)。
O第二個字符以后可以使用前述字符,再加上數(shù)字0到9。
O變量名稱的大小寫是不同的。
O變量名稱的最前面32個字符有效。
O不可以使用「保留字」當變量的名稱,保留字是給編譯器使用,不可以當成
變量名稱。TC有以下的保留字:
流程:ifelsefordowhile
switchdefaultcasebreakcontinue
gotoreturn
型別:charintlongfloatdouble
voidregistersignedunsigned
shortnearfarhuge
typedefstructunionenum
autoconststaticvolatileextern
interruptcdeclpascalasm
運算: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è)定
使用變量時,應(yīng)該先考慮這個數(shù)可能的數(shù)值范圍,用以選定變量的型別,例如:
用一個數(shù)來存班上的人數(shù),一個合班的大班級可能超過百人,但最大不太可能
超過千人,所以選一種變量型別可存1000以下的數(shù)值,在此可選整數(shù)。
若是要用一個數(shù)來存你的存款,則整數(shù)的上限32767可能某些同學(xué)一個月的薪資
就是它的數(shù)倍,所以要選長整數(shù),它的上限是2147483647。在數(shù)學(xué)運算時,
想要有小數(shù)的就要用浮點數(shù)(float)。
在C語言中,變量宣告的語法如下:
I型別變量名稱1[,變量名稱2|
例如:intNumberOfStudent;/*學(xué)生人數(shù)*/
longMoneylnBank,interest;/*銀行存款*/
floatRateOflnterest;/*利息利率*/
charEndOfString;/*字符串結(jié)束*/
charOneStudentName[9];/*學(xué)生姓名*/
在宣告變量時,我們可以設(shè)定變量的初始值(initialvalue),語法如下:
I型別變量名稱1=初始值1[,變量名稱2=初始值2|
例如:intNumberOfStudent=60;/*學(xué)生人數(shù)*/
longMoneyInBank=1000000L;/*銀行存款*/
floatRateOfInterest=5.0;/*利息利率in%*/
charEndOfString=V)';/*字符串結(jié)束*/
charOneStudentName[9]="王大明";/*學(xué)生姓名*/
注意:在銀行存款的設(shè)定數(shù)值1000000后加上一個L,表示這個常數(shù)數(shù)值
1000000是一個長整數(shù)。因為C語言內(nèi)定的型別是整數(shù),為了防止
不可預(yù)期的狀況發(fā)生,最好是自己把它設(shè)定成你想要的型別,不要
假設(shè)TC會幫你做好好的,要假設(shè)TC很笨不會幫你做,這樣在發(fā)展
大程序要除錯時,就可以把問題簡化,不必再考慮是不是數(shù)據(jù)型別錯誤,
只要把程序流程或算法搞定就可以了。
在TC中,不加L,結(jié)果還是正確的,但是在其它的環(huán)境下可能會不同。
多加一個L并不會使程序變大或變慢,又能保障正確使用,何樂不為。
O復(fù)習(xí)一下字符與字符串:
char字符只占一個byte,以一組單引號’引含字符數(shù)據(jù),其表示法如下:
O單一字符:'A'、豈>'0'?
O八進制數(shù)值:M01','\141\'60'、'\0'
0十六進制數(shù)值:\x41'、"61'、\x30\'\xO'
字符串則是由一個以上的字符所組成的,而且以W這個字符做為結(jié)尾。
表示法:"123"、"ABC"、"abc"。以上的三個例子都是占4bytes。
用strlen()可以取得字符串的長度(不含W字符)。
如:intStringLen=strlen("123");
這樣,StringLen就等于3。
☆在使用strlen()時,必須加入#include<string.h>
◎設(shè)定敘述
前面已經(jīng)說明了變量在宣告時給定初值的方法,接下來是在程序執(zhí)行的過程中設(shè)定變量數(shù)值
的方法.即然是變量,表示它的數(shù)值可能在程序執(zhí)行的過程中會改變多次,如果一個變量
在整個程序執(zhí)行中都不會改變,或許你該把它設(shè)成常數(shù)。
在設(shè)定變量時,可以用等號=來設(shè)定變量新值,語法如下:
I變量名稱=表達式(表達式、函式傳回數(shù)值或兩者混合);
這個意思是等號左邊「變量名稱」的數(shù)值會等于等號右邊「表達式」的運算結(jié)果。
在C中,等號=是用來設(shè)定變量數(shù)值的,所以在等號的左邊必須是變量,不可以
是常數(shù)。在邏輯上的相等,在C中是用兩個等號==來表示,有關(guān)邏輯的表示,
在第五章中會作介紹。以下我們來看一些設(shè)定的例子,計算圓的面積:
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)由這些函式可以與計算機溝通,讓程序
讀取使用者的輸入部分。程序依使用者不同的要求,做不同的事,再將結(jié)果輸出給使用者。
◎輸出指令:printf()
在第二章中,曾經(jīng)談過printf指令,現(xiàn)在來詳細的探討它。
printf是一種格式化的輸出指令,換句話說,你可以用它來編排你所要的輸出格式。printf的
一般型式如下:
Iprintf("控制字符串“,表達式1,表達式2,...);
控制字符串是你打算要秀出的訊息,其中利用%與\這兩個字符,來控制數(shù)值的
輸出格式。
控制字符串中每一個%符號,表示在后面有一個表達式與它對應(yīng),表達式的值會代
入這個%的位置。在%后的字符表示代入數(shù)的型別,常用的句柄如下表:
ii
1printf的句柄代表代入的數(shù)值型別I
1I
11
|%c1字符
I%d1十進制之整數(shù)
I%ld1十進制之長整數(shù)
|%f1浮點數(shù)
I%lf1倍精浮點數(shù)1
|%Lf1長倍精浮點數(shù)
I%s1字符串
11
表達式的型別必須跟句柄所代表的型別相符,否則會秀出不可預(yù)期的資料。
另一個控制符號\,其實只是定義字符而已。在上一章已經(jīng)介紹了字符的各種表
示法,如:表示A字符。
在C語言中,將一些特殊的控制字符另外定義,這些控制字符大部份跟光標的
控制有關(guān),如下表:
I控制字符IDec|Hex|功能
\n|10|OxOA1換列,也就是將光標移到下一列
\t|9|0x09|將光標移到下一個定位(l+8n)
\b18|0x08|退一格,類似按下左鍵
\aI7|0x07|喇叭叫一聲
\rI13|OxOD|回到列首
\f|12|0x0C|跳頁,在列表時控制列表機跳頁
\\|92|0x5C|印出\字符
\r|39|0x27|印出,字符
\"|34|0x22|印出"字符
\xHHI|OxHH|卬出OxHH所表示的字符
%%|37|0x25|印出%字符
其中,%字符的定義與在控制字符串中的表示法不同,其余的字符在定義上與在控
字符串中的表示法都相同。
printf在做輸出時?,你也可以指定保留多少位置給對應(yīng)的表達式放結(jié)果。指定的
方式是在%之后加一個數(shù)值,如%5d:表示保留5個字符空間給一個十進制整數(shù);
%121d:表示保留12個字符空間給-?個十進制長整數(shù)。
如果要輸出數(shù)據(jù)的長度比你指定的保留空間還要大時,printf就不理會你的設(shè)定,
把要輸出的數(shù)據(jù)完整的輸出,所以,你在設(shè)定保留空間時,應(yīng)該注意輸出數(shù)據(jù)的范圍
及長度,保留夠大的空間,確保輸出格式的整齊。
在浮點數(shù)方面,你除了可以指定保留的空間外,還可以指定小數(shù)點后要取幾位。
如%8.3f:表示保留8個字符空間給一個浮點數(shù),小數(shù)部分則是占3個字符空間
,由于小數(shù)點本身占一個字符,所以整數(shù)部分占8-(3+1)=4個字符空間。
printf在輸出數(shù)據(jù)時,如果你指定保留的空間比要秀的數(shù)據(jù)長度還要大時,那
printf先秀一些空白,再秀出數(shù)據(jù),使總長度等于你所指定的寬度,這樣等于是
讓輸出的數(shù)據(jù)向右對齊。如果你想要讓數(shù)據(jù)是向左對齊的話,可以在指定寬度時
使用負數(shù),如%-5d:表示保留5個字符空間給一個十進制整數(shù),若數(shù)據(jù)長度不足
5,則在秀出資料后補空白。
O整數(shù)(int)及長整數(shù)(long)
%-+wd-int|
|%-+wIdflongI
1tft1
III1———若有指定,則保留w個字符
111若無指定,秀出長度將由數(shù)據(jù)決定1
111----------—若有指定,則一定會秀出正負號1
11若無指定,則只有負數(shù)會秀出負號I
11___________—若有指定,則向左對齊I
若無指定,則向右對齊1
11
O浮點數(shù)(float)、倍精浮點數(shù)(double)及長倍精浮點數(shù)(longdouble)
%-+w.pfffloat
%-+w.pIffdouble
%-+w.pLfflongdouble
tttf
1111—若有指定,則保留p個字符給小數(shù)1
111若無指定,內(nèi)定是保留6個字符給小數(shù)|
111____若有指定,則保留w個字符含小數(shù)及小數(shù)點
11若無指定,秀出長度將由數(shù)據(jù)決定1
11__—若有指定,則一定會秀出正負號1
1若無指定,則只有負數(shù)會秀出負號I
1—若有指定,則向左對齊|
若無指定,則向右對齊I
說了這么多,只有自己試試看才知道!以下是個簡單的例子:
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要長整數(shù)才能表示,所以用%ld|
I11234561一所保留的5個字符不夠使用,所以TC視同你沒設(shè)|
I112311
I11231一保留5個字符,只使用3個字,向右靠齊|
I11231一保留5個字符,只使用3個字,向左靠齊|
I112.3450001<-小數(shù)沒有指定,所以TC使用內(nèi)定的6個小數(shù)。|
|112.3450001-一保留9個字符,小數(shù)部分仍使用內(nèi)定值I
1112.351-保留9個字符,小數(shù)2個字符,向右靠齊|
|112.351-保留9個字符,小數(shù)2個字符,向左靠齊|
◎輸入指令:scanf()
C語言使用scanf指令來讀取keyboard輸入的數(shù)據(jù)。scanf的一般型式如下:
Iscanf("控制字符串",&變量1,&變量2,);
scanfprintf可以說是相對的,一個用來做輸入,一個用來做輸出。
scanf的控制字符串與printf幾乎是一樣。
111
1scanf的句柄1代表輸入的數(shù)值型別1
111
111
I%c1字符
I%d1十進制之整數(shù)
I%ld1十進制之長整數(shù)1
I%D1十進制之長整數(shù)
I%f1浮點數(shù)1
I%lf1倍精浮點數(shù)1
I%Lf1長倍精浮點數(shù)
I%s1字符串
111
★注意:沒有%F這種句柄,課本有誤!
%D的句柄只能用在scanf(),在printf()中無法使用。
在用scanf時還有一點要注意,在控制字符串后的變量,使用的是指針(pointer)。
什么是指標?指針就是指向內(nèi)存的一個地址,在那個地址存放著數(shù)據(jù)。
例如:一個整數(shù)變量i,它是存在內(nèi)存的某一個地址,那個地址在C語言中,
是以&i來表示,我們通常稱&i是i的地址,也稱為i的指標。
以下是常用的變量及其指針(因為它的地址固定不會改變,也稱為指標常數(shù)):
Icharc;/*字符*//*C的指針是&C*/
1inti;/*整數(shù)*//*i的指標是&i*/
1long1;/*長整數(shù)*//*1的指標是&1*/
|floatf;/*浮點數(shù)*//*f的指標是&f*/
Idoubled;/*倍精浮點數(shù)*//*d的指標是&d*/
|longdoubleId;/*長倍精浮點數(shù)*//*Id的指標是&ld*/
1I
|charstr[8O];/*字符數(shù)組(字符串)*//*str[8O]的指標是str*/|
|inta[100];/*整數(shù)數(shù)組*//*a[100]的指標是a*/
|longb[100];/*長整數(shù)數(shù)組*//*b[100]的指標是b*/
|floatc[100];/*浮點數(shù)數(shù)組*//*c[1001的指標是c*/
以下的范例,將第三章的范例var.c變量改由scanf輸入:
11
Iio.c|
?1?1
1|#include<stdio.h>1
2|voidmain(void)1
31{1
4Iinti,j;
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 春節(jié)特色創(chuàng)意畫課程設(shè)計
- 以文字打造動人的風(fēng)格指南
- 怎么講數(shù)字工程課程設(shè)計
- 2024年獨家授權(quán)品牌代理合同書范本
- 2024年度租賃合同終止及續(xù)租條件協(xié)議3篇
- 2024年液體快遞運輸協(xié)議
- 文明禮儀課程設(shè)計書
- 機床夾具課程設(shè)計感想
- 2024年款式的校服定制合同
- 2024年版云服務(wù)外包合同
- 學(xué)會正當防衛(wèi)課件
- 溫室大棚改造施工方案及日光大棚設(shè)計方案
- 木質(zhì)吸音板施工工藝
- 文華財經(jīng)-半自動程序化交易使用指南101212
- 全國優(yōu)質(zhì)課大賽一等獎人教版高中地理必修一《土壤》精美賽課課件
- 2023北京市第一次高中學(xué)業(yè)水平合格性考試數(shù)學(xué)試卷真題(含答案詳解)
- 產(chǎn)品合格證標簽出廠合格證模板
- GA/T 2007-2022法庭科學(xué)氣槍彈檢驗技術(shù)規(guī)范
- 《孔乙己》改編劇本
- 化工自動化控制儀表作業(yè)安全操作資格培訓(xùn)教材課件
- 繪畫心理治療專家講座
評論
0/150
提交評論