C語言基礎(chǔ)知識

創(chuàng)新互聯(lián)建站成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點(diǎn),以客戶需求中心、市場為導(dǎo)向”的快速反應(yīng)體系。對公司的主營項(xiàng)目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計(jì)、行業(yè) / 企業(yè)門戶設(shè)計(jì)推廣、行業(yè)門戶平臺運(yùn)營、手機(jī)APP定制開發(fā)、移動網(wǎng)站建設(shè)、微信網(wǎng)站制作、軟件開發(fā)、成都服務(wù)器托管等實(shí)行標(biāo)準(zhǔn)化操作,讓客戶可以直觀的預(yù)知到從創(chuàng)新互聯(lián)建站可以獲得的服務(wù)效果。
1.1 C語言簡介
C語言于1972年由美國的Dennis Ritchie發(fā)明,并首次在配備了UNIX操作系統(tǒng)的DEC PDP-11計(jì)算機(jī)上實(shí)現(xiàn)。它由早期的編程語言BCPL(Basic Combind Programming Language)發(fā)展演變而來。1970年,ATT貝爾實(shí)驗(yàn)室的Ken Thompson根據(jù)BCPL語言設(shè)計(jì)出了較先進(jìn)并取名為B的語言,通過不斷修改、完善,更先進(jìn)的C語言問世了。
C語言是一種功能強(qiáng)大、應(yīng)用廣泛、具有發(fā)展前途的計(jì)算機(jī)語言。它既可用于系統(tǒng)軟件的設(shè)計(jì),也可用于應(yīng)用軟件的開發(fā)。許多著名的系統(tǒng)軟件都是由C語言編寫的。C語言具有下列特點(diǎn):
(1)C語言既具有低級語言直接操縱硬件的特點(diǎn),又具有高級語言與 自然語言和人的思維邏輯相似的特點(diǎn),C語言程序易編寫、易查錯,而且實(shí)用性很強(qiáng)。
(2)C語言具有豐富的數(shù)據(jù)類型和運(yùn)算符,語法結(jié)構(gòu)簡單。
(3)C語言是一種結(jié)構(gòu)化程序設(shè)計(jì)語言,提供了完整的程序控制語句。
(4)C語言是一種模塊化程序設(shè)計(jì)語言,適合大型軟件的開發(fā)和研制。
(5)C語言還有一個突出的優(yōu)點(diǎn)就是適合于多種操作系統(tǒng),如DOS、UNIX,也適用于多種機(jī)型,其程序移植性好。
1.2 C語言的數(shù)據(jù)類型
數(shù)據(jù)是程序處理的對象,數(shù)據(jù)類型是數(shù)據(jù)的內(nèi)在表現(xiàn)形式。例如,學(xué)生的年齡和成績具有一般數(shù)值的特點(diǎn),在C語言中稱為數(shù)值型,其中年齡是整數(shù),稱為整型;成績可以為小數(shù),稱為實(shí)型。而學(xué)生的姓名和性別是文字,在C語言中稱為字符型數(shù)據(jù)。
C語言具有豐富的數(shù)據(jù)類型,其中基本的數(shù)據(jù)類型有整型、實(shí)型、字符型。
1.2.1 變量
變量是在程序執(zhí)行過程中其值可以被改變的量。
1.變量命名規(guī)則
和人的取名一樣,變量的命名也有一定的規(guī)則。
(1)由字母、數(shù)字和下劃線組成;
(2)必須以字母或下劃線打頭;
(3)字母區(qū)分大小寫(在系統(tǒng)默認(rèn)狀態(tài)下);
(4)前32個字符有效(在系統(tǒng)默認(rèn)狀態(tài)下)。
例如:a,Book,book,_Make_Cipher都是合法的變量名,且Book與book是不同的變量名,而123A,x+y都不是變量名。
2.變量的數(shù)據(jù)類型
變量可以是任意的一種數(shù)據(jù)類型,如整型變量、字符型變量、指針變量等。C語言中的基本數(shù)據(jù)類型及其特性如表1-1所示。
表1-1 C語言的基本數(shù)據(jù)類型
數(shù)據(jù)類型名 數(shù)據(jù)類型描述 數(shù)據(jù)類型的長度(字節(jié)) 數(shù)據(jù)取值范圍
char 字符型 1 0~255
int 有符號整型 2 –32 768~32 767
unsigned int 無符號整型 2 0~65 535
short 短整型 2 –32 768~32 767
long 長整型 4 –2 147 483 648~2 147 483 647
unsigned long 無符號長整型 4 0~4 294 967 295
float 單精度實(shí)數(shù) 4 |3.4×10–38|~|3.4×1038|
double 雙精度實(shí)數(shù) 8 |1.7×10–308|~|1.7×10308|
long double 長雙精度實(shí)數(shù) 10 |3.4×10–4932|~|3.4×104932|
3.變量的定義
每個變量在使用前都必須先定義其數(shù)據(jù)類型,定義變量數(shù)據(jù)類型的語法格式如下:
數(shù)據(jù)類型符 變量名1,變量名2,…;
例如:
int age,score; /* 定義年齡和成績?yōu)檎?*/
char name[20]; /* 定義姓名為至多含20個字符的字符數(shù)組 */
4.變量的存儲類型
當(dāng)定義某個變量時,C語言的編譯系統(tǒng)就要給該變量分配若干個存儲單元用來存放該變量的值。而在計(jì)算機(jī)中寄存器和內(nèi)存都可以存放數(shù)據(jù),內(nèi)存又可分為臨時占用和長期占用。變量的存儲類型是指變量在計(jì)算機(jī)中的存放位置及時間。
定義變量存儲類型的語法格式如下:
存儲類型符 數(shù)據(jù)類型符 變量名1,變量名2,…;
變量的存儲類型有自動型(auto)、寄存器型(register)、靜態(tài)型(static)和外部型(extern),具體特點(diǎn)和使用方法在后面的章節(jié)中詳細(xì)介紹。
在變量定義時,如未說明存儲類型,則系統(tǒng)默認(rèn)為自動型(auto)。
5.變量的初始化
變量的初始化是給變量賦初值的一種方法,是指在變量定義時就給變量賦予初始值。變量初始化的方法很簡單,在變量定義的語句中,在變量名后加一個等號和初值即可。
例如:
int x, age=20, score=100;
在上面的定義中,變量x未賦初值,而變量age和score的初值分別為20和100。
在程序中,變量未賦值之前不允許使用,即要遵循“先賦值后使用”的規(guī)則。
1.2.2 常量
常量是在程序運(yùn)行過程中值不發(fā)生改變的數(shù)據(jù)。例如,圓周率3.1415926就是一個常量。常量也有數(shù)據(jù)類型,它們是整型常量、實(shí)型常量、字符常量、字符串常量及符號常量,整型常量及實(shí)型常量的數(shù)據(jù)長度及取值范圍與變量的規(guī)定相同。
1.整型常量
整型常量用來表示整數(shù),整型數(shù)據(jù)可以以不同數(shù)制形式來表示,不同的進(jìn)位制有其不同的表示方式,其表示方式如表1-2所示。
表1-2 整型常量的表示方式
數(shù) 制 表 示 方 式 示 例
十進(jìn)制 一般整數(shù)的寫法 0,–22,55
八進(jìn)制 在八進(jìn)制整數(shù)前加數(shù)字0 00,–072,+0331
十六進(jìn)制 在十六進(jìn)制整數(shù)前加數(shù)字0和字母x 0x0,0x1B5,–0xb3
另外,對于長整型常量,應(yīng)當(dāng)在其后加后綴L或l,例如30L。30L和30數(shù)值一樣,但占用內(nèi)存的大小不一樣。30占用2個字節(jié)的存儲空間,而30L占用4個字節(jié)的存儲空間。
2.實(shí)型常量
實(shí)型常量只有十進(jìn)制數(shù)表示方式,它沒有單精度和雙精度之分。其表示方式有定點(diǎn)數(shù)表示和浮點(diǎn)數(shù)表示兩種。具體表示方式如表1-3所示。
表1-3 實(shí)型常量的書寫方法
類 別 表 示 方 式 示 例
定點(diǎn)數(shù) 整數(shù)部分.小數(shù)部分 0.0,1.34,–34.0
浮點(diǎn)數(shù) 尾數(shù)E(或e)指數(shù) 3.57E10,–5.6e–9
說明:
(1)浮點(diǎn)數(shù)表示方式相當(dāng)于數(shù)學(xué)中的科學(xué)計(jì)數(shù)法,其換算公式如下:
尾數(shù)E(或e)指數(shù)=尾數(shù)×10指數(shù)
(2)浮點(diǎn)數(shù)中的指數(shù)部分只能是整型數(shù),尾數(shù)可以大于或等于10。
3.字符常量
字符常量是用兩個單引號引住單個字符來表示的。例如:'A'、'*'、'!'等。使用字符常量時應(yīng)注意以下幾點(diǎn):
(1)空格也是字符,表示為'a'。
(2)單引號中必須恰好有一個字符,不能空缺。如' '是錯誤的字符常量。
在C語言中有一類特殊的字符常量,被稱為轉(zhuǎn)義字符。它們用來表示特殊符號或鍵盤上的控制代碼,常見的轉(zhuǎn)義字符如表1-4所示。
表1-4 常用轉(zhuǎn)義字符表
轉(zhuǎn) 義 字 符 意 義 轉(zhuǎn) 義 字 符 意 義
\n 回車換行符 \a 響鈴
\t 水平制表符 \" 雙引號
\v 垂直制表符 \' 單引號
\b 左退一格 \\ 反斜杠
\r 回車符 \ddd 1~3位八進(jìn)制數(shù)ddd對應(yīng)的字符
\f 換頁符 \xhh 1~2位十六進(jìn)制數(shù)hh對應(yīng)的字符
4.字符串常量
字符串是用雙引號引住的若干個字符。例如,"hello!","485769","a"。
字符串可以不含任何字符,稱為空串,表示為""。
字符串中所含的字符個數(shù)稱為字符串的長度。例如,"abc123","3",""的長度分別為6,1,0。計(jì)算字符串長度時應(yīng)注意以下幾點(diǎn):
(1)對于含有轉(zhuǎn)義字符的字符串,應(yīng)將轉(zhuǎn)義字符計(jì)算為1個字符。例如,"abc\\12\n"的長度為7,而不是9;"abc\\\12\n"及"abc\\\123\n"的長度均為6。
(2)在字符串中,反斜杠表示轉(zhuǎn)義字符的開始,如果其后面沒有表1-4中所列出的轉(zhuǎn)義符號,則該反斜杠被忽略,并不參與計(jì)算長度。例如,"\A"的長度為1,但"\"是非法的。
5.符號常量
上面所介紹的常量都是具體數(shù)據(jù),在程序中也可以用特定符號來表示某個常量,這個符號被稱為符號常量。
符號常量的語法格式如下:
#define 符號常量名 常量
例如:
#define PI 3.1415926
經(jīng)過上述定義后,可以在程序中使用PI來代替3.1415926。
在程序中使用符號常量有兩個好處:一是提高了程序的易讀性;二是為修改程序提供了方便。例如,當(dāng)不需要太高精度時,只需要將符號常量定義修改為
#define PI 3.14
而不需要在程序中去修改每一處的圓周率。
1.3 算術(shù)運(yùn)算符與算術(shù)表達(dá)式
用來表示各種運(yùn)算的符號稱為運(yùn)算符。C語言中包括以下七大類的基本運(yùn)算符:算術(shù)運(yùn)算符、邏輯運(yùn)算符、關(guān)系運(yùn)算符、賦值運(yùn)算符、逗號運(yùn)算符、條件運(yùn)算符和位運(yùn)算符。本節(jié)主要介紹算術(shù)運(yùn)算符,其他的運(yùn)算符將在后續(xù)章節(jié)中詳細(xì)介紹。
1.3.1 算術(shù)運(yùn)算符
C語言中的算術(shù)運(yùn)算符和數(shù)學(xué)中的算術(shù)運(yùn)算相似,是對數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算的。算術(shù)運(yùn)算符的運(yùn)算對象、運(yùn)算規(guī)則及結(jié)合性如表1-5所示。
表1-5 算術(shù)運(yùn)算符
運(yùn)算對象個數(shù) 名 稱 運(yùn) 算 符 運(yùn) 算 規(guī) 則 運(yùn)算對象
數(shù)據(jù)類型 結(jié) 合 性
單目 正 + 取原值 整型或?qū)嵭?自右向左
負(fù) – 取負(fù)值
雙目 加 + 加法運(yùn)算 自左向右
減 – 減法運(yùn)算
乘 * 乘法運(yùn)算
除 / 除法運(yùn)算
模 % 整除取余 整型
單目 增1(前綴) ++ 先加1,后使用 整型、字符型、指針型變量或數(shù)組元素、實(shí)型 自右向左
增1(后綴) ++ 先使用,后加1
減1(前綴) – – 先減1,后使用
減1(后綴) – – 先使用,后減1
在C語言中,參加運(yùn)算的對象個數(shù)稱為運(yùn)算符的“目”。單目運(yùn)算符是指參加運(yùn)算的對象只有一個,如+10,–67,x++。雙目運(yùn)算符是指參加運(yùn)算的對象有兩個,如2+3,7%3。
相同運(yùn)算符連續(xù)出現(xiàn)時,有的運(yùn)算符是從左至右進(jìn)行運(yùn)算,有的運(yùn)算符是從右至左進(jìn)行運(yùn)算,C語言中,將運(yùn)算符的這種特性稱為結(jié)合性。
加法(+)、減法(–)、乘法(*)與數(shù)學(xué)中的算術(shù)運(yùn)算相同。例如:3.5+4.7結(jié)果是8.2;3.5 – 4.7結(jié)果是–0.8;3.5*4.7結(jié)果是16.45。
除法運(yùn)算(/)與數(shù)學(xué)中的除法不完全相同,它與參加運(yùn)算的對象的數(shù)據(jù)類型相關(guān)。當(dāng)參加運(yùn)算的兩個對象均為整型數(shù)據(jù)時,其運(yùn)算結(jié)果為數(shù)學(xué)運(yùn)算結(jié)果的整數(shù)部分。如7/4結(jié)果為1,而不是1.75。若參加運(yùn)算的兩個對象有一個是實(shí)型或兩個都是實(shí)型,那么運(yùn)算結(jié)果為實(shí)際運(yùn)算的值,如7/5.0的運(yùn)算結(jié)果為1.4。
模運(yùn)算的運(yùn)算對象必須為整型,結(jié)果是相除后的余數(shù),如7%5結(jié)果為2。
增1減1運(yùn)算符都是單目運(yùn)算符,用來對整型、實(shí)型、字符型、指針型變量或數(shù)組元素等變量進(jìn)行加1或減1運(yùn)算,運(yùn)算的結(jié)果仍是原類型。
1.3.2 常用數(shù)學(xué)函數(shù)
C語言系統(tǒng)提供了400多個標(biāo)準(zhǔn)函數(shù)(稱為庫函數(shù)),設(shè)計(jì)程序時可以直接使用它們。庫函數(shù)主要包括數(shù)學(xué)函數(shù)、字符處理函數(shù)、類型轉(zhuǎn)換函數(shù)、文件管理函數(shù)及內(nèi)存管理函數(shù)等幾類。下面介紹常用的數(shù)學(xué)函數(shù),其他類型的函數(shù)將在后面章節(jié)中陸續(xù)介紹。
1.函數(shù)名:abs
原型:int abs(int i);
功能:求整數(shù)的絕對值。
例如,設(shè)x=abs(5),y=abs(–5),z=abs(0),則x=5,y=5,z=0。
2.函數(shù)名:labs
原型:long labs(long n);
功能:求長整型數(shù)的絕對值。
例如,設(shè)x=labs(40000L),y=labs(–5),z=labs(0),則x=40000,y=5,z=0。
3.函數(shù)名:fabs
原型:double fabs(double x);
功能:求實(shí)數(shù)的絕對值。
例如,設(shè)x=fabs(5.3),y=fabs(–5.3),z=fabs(0),則x=5.3,y=5.3,z=0。
4.函數(shù)名:floor
原型:double floor(double x);
功能:求不大于x的最大整數(shù),它相當(dāng)于數(shù)學(xué)函數(shù)[x]。
例如,設(shè)x=floor(–5.1),y=floor(5.9),z=floor(5),則x= –6,y=5,z=5。
5.函數(shù)名:ceil
原型:double ceil(double x);
功能:求不小于x的最小整數(shù)。
例如,設(shè)x=ceil(–5.9),y=ceil(5.1),z=ceil(5),則x = –5,y=6,z=5
6.函數(shù)名:sqrt
原型:double sqrt(double x);
功能:求x的平方根。
例如,設(shè)x=sqrt(4),y=sqrt(16),則x=1.414214,y=4.0
7.函數(shù)名:log10
原型:double log10(double x);
功能:求x的常用對數(shù)。
8.函數(shù)名:log
原型:double log(double x);
功能:求x的自然對數(shù)。
9.函數(shù)名:exp
原型:double exp(double x);
功能:求歐拉常數(shù)e的x次方。
10.函數(shù)名:pow10
原型:double pow10(int p);
功能:求10的p次方。
例如,設(shè)x=pow10(3),y=pow10(0),則x=1000,y=1
11.函數(shù)名:pow
原型:double pow(double x, double y);
功能:求x的y次方。
例如,設(shè)x=pow(3,2),y=pow(–3,2),則x=9,y=9
12.函數(shù)名:sin
原型:double sin(double x);
功能:正弦函數(shù)。
13.函數(shù)名:cos
原型:double cos(double x);
功能:余弦函數(shù)。
14.函數(shù)名:tan
原型:double tan(double x);
功能:正切函數(shù)。
1.3.3 算術(shù)表達(dá)式
由算術(shù)運(yùn)算符和運(yùn)算對象連接形成的式子稱為算術(shù)表達(dá)式。
算術(shù)運(yùn)算符的優(yōu)先級從高到低規(guī)定如下:
++ – –
* / %
+ –
位于同一行的運(yùn)算符的優(yōu)先級相同。
1.4 數(shù)據(jù)類型轉(zhuǎn)換規(guī)則
對數(shù)據(jù)進(jìn)行運(yùn)算時,要求參與運(yùn)算的對象的數(shù)據(jù)類型相同(運(yùn)算得到的運(yùn)算結(jié)果的類型與運(yùn)算對象也相同)。因此,在運(yùn)算過程中常常需要對變量或常量的數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換的方法有兩種,一種是系統(tǒng)自動轉(zhuǎn)換(又稱為隱式轉(zhuǎn)換);另一種是在程序中強(qiáng)制轉(zhuǎn)換(又稱為顯式轉(zhuǎn)換)。
1.4.1 自動轉(zhuǎn)換規(guī)則
在不同類型數(shù)據(jù)的混合運(yùn)算中,由系統(tǒng)自動實(shí)現(xiàn)轉(zhuǎn)換。轉(zhuǎn)換規(guī)則如下:
(1)若參與運(yùn)算的數(shù)據(jù)的類型不同,則應(yīng)先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算。
(2)將低類型數(shù)據(jù)轉(zhuǎn)換成高類型數(shù)據(jù)后進(jìn)行運(yùn)算。如int型和long型運(yùn)算時,先把int型轉(zhuǎn)換成long型后再進(jìn)行運(yùn)算。
類型的高低是根據(jù)其所占空間的字節(jié)數(shù)按從小到大的順序排列的,順序如下:
char,int,long,float,double。
(3)所有的浮點(diǎn)運(yùn)算都是按照雙精度進(jìn)行運(yùn)算的,即使僅含float型單精度量運(yùn)算的表達(dá)式,也要先轉(zhuǎn)換成double型,再作運(yùn)算。
(4)char型和short型參與運(yùn)算時,必須先轉(zhuǎn)換成int型。
例如,設(shè)有:
float PI=3.14;
int s,r=7;
s=r*r*PI;
因?yàn)镻I為單精度型,s和r為整型,在執(zhí)行s=r*r*PI語句時,r和PI都轉(zhuǎn)換成double型后再進(jìn)行計(jì)算,運(yùn)算結(jié)果也為double型,右邊的運(yùn)算結(jié)果為153.86,但由于s為整型,故應(yīng)將賦值號右邊的運(yùn)算結(jié)果轉(zhuǎn)換成整型(舍去小數(shù)部分),因此s的值為153。
1.4.2 強(qiáng)制類型轉(zhuǎn)換
強(qiáng)制類型轉(zhuǎn)換是通過類型轉(zhuǎn)換運(yùn)算來實(shí)現(xiàn)的,其語法格式如下:
(類型說明符)(表達(dá)式)
其功能是把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說明符所表示的類型。例如: (float) a 把a(bǔ)轉(zhuǎn)換為實(shí)型;(int)(x+y) 把x+y的結(jié)果轉(zhuǎn)換為整型;而(int)x+y 則只將x轉(zhuǎn)換為整型。
在使用強(qiáng)制類型轉(zhuǎn)換時應(yīng)注意以下問題:
(1)類型說明符和表達(dá)式都必須加括號(單個變量可以不加括號),如把(int)(x+y)寫成(int)x+y則只是把x轉(zhuǎn)換成int型之后再與y相加。
(2)對于被轉(zhuǎn)換的單個變量而言,無論是強(qiáng)制轉(zhuǎn)換還是自動轉(zhuǎn)換,都只是為了本次運(yùn)算的需要而對變量的數(shù)據(jù)長度進(jìn)行臨時性轉(zhuǎn)換,而不會改變變量定義時所聲明的類型。
例如,設(shè)有:
float f = –5.75;
int x;
x= (int)f;
將f強(qiáng)制轉(zhuǎn)換成整數(shù)–5,因此x = –5,而f本身的類型并未改變且其值仍為–5.75。
1.5 程序結(jié)構(gòu)
1.5.1 主函數(shù)結(jié)構(gòu)
每一個C源程序都是一系列函數(shù)的集合。其中,必須有且只能有一個主函數(shù),其函數(shù)名為main,其結(jié)構(gòu)如下:
void main(void)
{
…
}
其中,void main(void) 稱為函數(shù)說明部分(又稱函數(shù)頭),而
{
…
}
稱為函數(shù)體,函數(shù)體中的每個語句行末尾都必須用分號結(jié)束。
1.5.2 文件包含命令
C語言系統(tǒng)提供了400多個庫函數(shù),并將這些函數(shù)根據(jù)其功能分成了若干組,每組都有一個組名。如數(shù)學(xué)類函數(shù)組的組名為math。在C語言系統(tǒng)所安裝文件夾的下級文件夾中有一個與其相對應(yīng)的文件math.h,這些擴(kuò)展名為.h的文件稱為頭文件。
include稱為文件包含命令,當(dāng)用戶在程序中使用到系統(tǒng)的標(biāo)準(zhǔn)庫函數(shù)中的函數(shù)時,需要在程序中(一般在程序的首部)增加一條預(yù)處理語句如#includestdio.h,以便告知系統(tǒng)需要使用某個頭文件中的函數(shù)。
1.5.3 C語言程序基本結(jié)構(gòu)
一個完整的C語言源程序由如下5個部分構(gòu)成:
(1)預(yù)處理命令;
(2)全局變量說明;
(3)函數(shù)原型說明;
(4)主函數(shù);
(5)其他子函數(shù)。
一個簡單的C語言源程序只需要(1)和(4)兩個部分,其中“預(yù)處理命令”一般是一系列文件包含命令,即include命令。
關(guān)于程序結(jié)構(gòu),應(yīng)當(dāng)注意以下幾方面的問題:
(1)可由若干個函數(shù)構(gòu)成,其中必須有且只有一個以main命名的主函數(shù),可以沒有其他函數(shù)。每個函數(shù)完成一定的功能,函數(shù)與函數(shù)之間可以通過參數(shù)傳遞信息。main()函數(shù)可以位于原程序文件中任何位置,但程序的執(zhí)行總是從main函數(shù)開始,main函數(shù)執(zhí)行完畢時程序執(zhí)行結(jié)束。
(2)子函數(shù)的結(jié)構(gòu)與主函數(shù)相同,即分為函數(shù)說明部分和函數(shù)體兩個部分。
(3)函數(shù)中的每個語句最后要有一個分號,作為語句結(jié)束標(biāo)記。但某些特殊的語句行末尾不需要分號,有時還不能有分號。
(4)“/*”和“*/”括住的任意一段字符稱為“程序注釋”,用來對程序作說明,可以插入到程序的任何地方,且可以跨行使用。程序注釋不影響程序運(yùn)行結(jié)果。
(5)函數(shù)的書寫格式很靈活,在一行中可以書寫多個語句(每個語句末尾都要有分號),一個語句也可以寫在多行中。在程序的任何地方都可以插入空格或回車符。
(6)主函數(shù)可以調(diào)用任何子函數(shù)但不能調(diào)用它自己,任何子函數(shù)之間也可以相互調(diào)用,但是子函數(shù)不能調(diào)用主函數(shù)。
下面是一個簡單的C語言源程序:
【例1-1】 求圓的面積。
#include stdio.h
void main(void)
{
float r,s,p=3.14;
r=10.5;
s=r*r*p;
printf("圓的面積是:%f ",s);
}
下面是一個較完整的C語言源程序:
【例1-2】 較完整的C語言程序示例。
#includestdio.h
#includeconio.h
int y,z;
void abc(int x);
void main(void)
{
int x;
clrscr();
x=10;
y=20;
z=30;
printf("ok1: x=%d y=%d z=%d \n",x,y,z);
abc(x);
printf("ok2: x=%d y=%d z=%d \n",x,y,z);
getch();
}
void abc(int x)
{
int y;
printf("ok3: x=%d y=%d z=%d \n",x,y,z);
x=100;
y=200;
z=300;
printf("ok4: x=%d y=%d z=%d \n",x,y,z);
}
#include stdio.h
#include math.h
float solut(float a,float b,float c, float d)
{
float x=1,x0,f,f1;
do
{
x0=x;
f=((a*x0+b)*x0+c)*x0+d;
f1=(3*a*x0+2*b)*x0+c;
x=x0-f/f1;
}
while(fabs(x-x0)-1e-3);
return(x);
}
main()
{
float a,b,c,d;
printf("\ninput a,b,c,d:");
scanf("%f,%f,%f",a,b,c,d);
printf("equation is:%5.2fx^3+%5.2fx^2+%5.2fx+%5.2f=0",a,b,c,d);
printf(\nx=%10.7\n",solut(a,b,c,d);
}
#include stdio.h
#include stdlib.h
void Maxnum(int []);
float Avenum(int []);
void Ordernum(int []);
void main(){
int a[10];
int i;
printf("輸入十個數(shù)字:\n?");
for (i=0;i=9;i++){
scanf("%d",a[i]);
if (i!=9)
printf("?");
}
Maxnum(a);
printf("平均值為:%.3f\n",Avenum(a));
Ordernum(a);
system("pause");
}
void Maxnum(int b[]){
int temp1=0,temp2=b[0],m;
for (m=0;m=9;m++){
if (b[m]temp1)
temp1=b[m];
if(b[m]temp2)
temp2=b[m];
}
printf("最大值:%d\n最小值:%d\n",temp1,temp2);
}
float Avenum( int b[]){
int n,sum=0;
for (n=0;n=9;n++){
sum+=b[n];
}
return (float)sum/10;
}
void Ordernum(int b[]){
int i,j,k,temp;
for (i=1;i=10;i++)
for (j=0;j=8;j++)
if (b[j]b[j+1]){
temp=b[j];
b[j]=b[j+1];
b[j+1]=temp;
}
printf("排序:\n");
for (k=0;k=9;k++)
printf("%d ",b[k]);
printf("\n");
}
好像你提過這個問題,我還是繼續(xù)回答。
C語言學(xué)習(xí)從入門到精通的一套經(jīng)典視頻教程,本課程通過高清晰的視頻、概念詳解、實(shí)例精講、習(xí)題測試讓你很快的掌握C語言的相關(guān)知識,并領(lǐng)略運(yùn)用到實(shí)例中去。在針對一些用戶認(rèn)為C語言比較難學(xué)的情況下,本課程從初中級用戶的角度出發(fā),進(jìn)行合理的內(nèi)容安排,突出學(xué)、練、用、鞏固相結(jié)合的特點(diǎn),以通俗易懂的語言,豐富多彩的實(shí)例,詳細(xì)介紹了使用C語言進(jìn)行程序開發(fā)應(yīng)該掌握的各方面知識。本課程主要給大家講解了C語言概述,算法,數(shù)據(jù)類型,運(yùn)算符與表達(dá)式,常用的數(shù)據(jù)輸入、輸出函數(shù),選擇結(jié)構(gòu)程序設(shè)計(jì),循環(huán)控制,數(shù)組,函數(shù),指針,結(jié)構(gòu)體和共用體,位運(yùn)算,預(yù)處理,模塊化編程,編程規(guī)范,C語言常見問題及分析,習(xí)題測試等內(nèi)容。所有知識都結(jié)合具體實(shí)例進(jìn)行介紹,涉及的程序代碼給出了詳細(xì)的講解,可以使讀者輕松領(lǐng)會C語言程序開發(fā)的精髓,快速提高開發(fā)技能。
課程內(nèi)容詳盡,實(shí)例豐富,非常適合作為單片機(jī)及編程初學(xué)者的學(xué)習(xí)課程,也可作為大中院校相關(guān)專業(yè)在校學(xué)生及畢業(yè)生的教學(xué)輔導(dǎo)課程、短期C語言培訓(xùn)課程,是C語言編程愛好者從入門到深入的經(jīng)典課程。
課程共分為15講,每節(jié)課的內(nèi)容大綱如下:
第1課 C語言概述
1、幾種常見的程序設(shè)計(jì)語言
2、C語言出現(xiàn)的歷史背景
3、C語言的特點(diǎn)
4、簡單的C程序介紹
5、C程序的上機(jī)步驟
6、習(xí)題測試
第2課 程序的靈魂-算法
1、程序設(shè)計(jì)過程
2、算法的基本概念
3、算法的特征
4、算法的表示方法(流程圖)
5、結(jié)構(gòu)化程序設(shè)計(jì)方法
6、習(xí)題測試
第3課 C語言的數(shù)據(jù)類型
1、預(yù)備知識
2、C語言的數(shù)據(jù)類型
3、常量與變量
4、不同數(shù)據(jù)類型之間的轉(zhuǎn)換
5、運(yùn)算符號和表達(dá)
6、習(xí)題測試
第4課 C語言順序程序設(shè)計(jì)
1、C語句概述
2、賦值語句
3、數(shù)據(jù)的輸入輸出
4、字符數(shù)據(jù)輸入輸出
5、格式輸入輸出
6、順序程序舉例
7、習(xí)題測試
第5課 C語言選擇程序設(shè)計(jì)
1、關(guān)系運(yùn)算符和關(guān)系表達(dá)式
2、邏輯運(yùn)算符和邏輯表達(dá)式
3、if 語句---條件判斷
4、條件運(yùn)算符
5、switch 語句
6、選擇程序舉例
7、習(xí)題測試
第6課 C語言的循環(huán)控制
1、概述
2、goto語句及與if語句構(gòu)成循環(huán)
3、while語句
4、do …while語句
5、for語句
6、循環(huán)的嵌套
7、幾種循環(huán)的比較
8、break語句和contiune語句
9、程序舉例
10、習(xí)題測試
第7課 C語言數(shù)組
1、一維數(shù)組
2、二維數(shù)組及多維數(shù)組
3、字符數(shù)組和字符串
4、程序舉例
5、習(xí)題測試
第8課 函數(shù)
1、概述
2、函數(shù)定義的一般格式
3、函數(shù)的返回值
4、函數(shù)的調(diào)用
5、函數(shù)參數(shù)及其傳遞方式
6、函數(shù)的嵌套與遞歸調(diào)用
7、數(shù)組作為函數(shù)參數(shù)
8、變量的存儲屬性
9、內(nèi)部函數(shù)和外部函數(shù)
10、習(xí)題測試
第9課 C語言預(yù)處理命令
1、編譯預(yù)處理
2、宏定義
3、文件包含
4、條件編譯
5、習(xí)題測試
第10課 指針
1、指針的概念
2、指針變量
3、指針與數(shù)組
4、指針與字符串
5、指針與函數(shù)
6、返回指針值的函數(shù)
7、指針數(shù)組和多級指針
8、習(xí)題測試
第11課 結(jié)構(gòu)體與共用體
1、結(jié)構(gòu)類型與結(jié)構(gòu)變量的定義
2、結(jié)構(gòu)變量的引用與初始化
5、結(jié)構(gòu)數(shù)組
6、指向結(jié)構(gòu)類型數(shù)據(jù)的指針
7、用指針處理鏈表
8、共用體
9、枚舉類型
10、用typedef定義別名
11、程序舉例
12、習(xí)題測試
第12課 位運(yùn)算
1、位運(yùn)算概述
2、位運(yùn)算符的使用方法
3、習(xí)題測試
第13課 單片機(jī)C語言的模塊化編程
1、模塊化編程的優(yōu)點(diǎn)
2、C語言源文件(*.c)文件和頭文件(*.h)的的作用
3、模塊化編程設(shè)計(jì)步驟
4、程序?qū)嵗?/p>
5、模塊化程序的移植
6、習(xí)題測試
第14課 C語言編程規(guī)范
1、編碼規(guī)范概述
2、編程排版規(guī)范
3、編程注釋規(guī)范
4、命名規(guī)則
5、可讀性規(guī)范
6、變量與結(jié)構(gòu)規(guī)范
7、函數(shù)與過程規(guī)范
8、編程效率規(guī)范
9、質(zhì)量保證規(guī)范
10、宏規(guī)范
11、代碼編輯
12、編譯
13、審查
14、代碼測試
15、維護(hù)
16、習(xí)題測試
第15課 C語言編程常見出錯問題及分析
1、C語言的一些基本概念
2、位(bit)和字節(jié)(byte)
3、變量和數(shù)據(jù)存儲
4、數(shù)據(jù)文件
5、字符串操作
6、數(shù)組
7、指針和內(nèi)存分配
8、函數(shù)
9、編譯預(yù)處理
10、標(biāo)準(zhǔn)庫函數(shù)
11、系統(tǒng)調(diào)用
12、可移植性
13、編程風(fēng)格和標(biāo)準(zhǔn)
14、程序的編寫和編譯
15、調(diào)試
分享文章:函數(shù)c語言編程教學(xué) c語言教程 函數(shù)
轉(zhuǎn)載來源:http://chinadenli.net/article42/hhpdec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、、靜態(tài)網(wǎng)站、響應(yīng)式網(wǎng)站、企業(yè)建站、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)