C語(yǔ)言入門筆記教程_第1頁(yè)
C語(yǔ)言入門筆記教程_第2頁(yè)
C語(yǔ)言入門筆記教程_第3頁(yè)
C語(yǔ)言入門筆記教程_第4頁(yè)
C語(yǔ)言入門筆記教程_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、. C語(yǔ)言入門學(xué)習(xí)筆記 -GoL- allenboo 目錄第1章 C語(yǔ)言概論第2章 數(shù)據(jù)類型與表達(dá)式第3章 順序結(jié)構(gòu)設(shè)計(jì)第4章 選擇與循環(huán)結(jié)構(gòu)程序設(shè)計(jì)第5章 數(shù)組第6章 函數(shù)與編譯預(yù)處理第7章 指針第8章 結(jié)構(gòu)體與共用體第9章 位運(yùn)算第10章 文件第1章C語(yǔ)言概論1.1簡(jiǎn)介C語(yǔ)言是一門計(jì)算機(jī)語(yǔ)言。重點(diǎn)在語(yǔ)言兩個(gè)字,猶如我們學(xué)英語(yǔ)一樣,我們要去了解它的規(guī)則及表達(dá)方法,并且,很多東西就是那個(gè)東西,沒有為什么,比方,你問,that的意思為什么是那個(gè),答案是,就是那個(gè),沒有原因。C語(yǔ)言是在20世紀(jì)70年代問世的。1978年美國(guó)電話電報(bào)(AT&T)貝爾實(shí)驗(yàn)室正式發(fā)表了C語(yǔ)言。與此同時(shí),B.W.K

2、ernighan和D.M.Ritchit合著的The C Programming Language(強(qiáng)烈推薦)一書,該書并沒有定義一個(gè)完整的標(biāo)準(zhǔn)C語(yǔ)言,后來(lái)由美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)(ANSI)在吃基礎(chǔ)上制定了一個(gè)C語(yǔ)言標(biāo)準(zhǔn),與1983年發(fā)表,通常稱之為ANSI C。C語(yǔ)言的特點(diǎn):1. 語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活。2. 運(yùn)算符豐富。3. 豐富的數(shù)據(jù)類型。4. 具有結(jié)構(gòu)化的控制語(yǔ)句。5. 語(yǔ)法限制不嚴(yán)格,程序設(shè)計(jì)自由度大。6. 允許直接訪問物理地址。7. 生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。C語(yǔ)言一般是從上往下看(執(zhí)行)的,好比你去外婆家,雖然可能中途遇到同學(xué)停頓說(shuō)說(shuō)話,或者遇到溝垮了過去,再或者繞

3、到去朋友家玩玩,但總體,你還是一直朝外婆的家去的。C語(yǔ)言分三種結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。例1.編寫顯示字符串:Hello,World!的程序。main() printf("Hello,World!n"); 本程序的作用是輸入一下一行信息:Hello,World!其中,其中,main是主函數(shù)名,每一個(gè)C語(yǔ)言程序都必須有一個(gè)main函數(shù),其后的括號(hào)是函數(shù)的標(biāo)志。且所有的C程序,都是從main函數(shù)開始執(zhí)行的。Printf是C語(yǔ)言中的輸出函數(shù),雙引號(hào)內(nèi)的而字符串原樣輸出。n是換行符,即在輸出Hello,World!后回車換行,語(yǔ)句最后有一個(gè)分號(hào)。C語(yǔ)言常見特性:1. C程

4、序是由函數(shù)構(gòu)成的。一個(gè)C原程序至少包含一個(gè)main()函數(shù)。2. 書寫格式自由,一行內(nèi)可以寫幾個(gè)語(yǔ)句,一個(gè)語(yǔ)句可以分寫在多行上。3. 每個(gè)語(yǔ)句和數(shù)據(jù)定義的最后必須有一個(gè)分號(hào)4. 可以用/*注釋*/對(duì)C程序中的任何部分作注釋。5. 一個(gè)C程序總是從main函數(shù)開始執(zhí)行的,而不論main()函數(shù)在整個(gè)程序中的位置如何。1.2算法算法,就是為解決一個(gè)問題而采取的方法和步驟。著名計(jì)算機(jī)科學(xué)家Nikiklaus Worth提出了程序定義的著名公式:程序=數(shù)據(jù)結(jié)構(gòu)+算法一個(gè)好的算法一般應(yīng)具有以下特點(diǎn):1. 有窮性2. 確定性3. 有輸入4. 有輸出5. 可行性算法的描述有自然語(yǔ)言、傳統(tǒng)流程圖、結(jié)構(gòu)化流程圖

5、等。流程圖是用一些圖框來(lái)表示各種操作的。C語(yǔ)言字符集、標(biāo)識(shí)符與關(guān)鍵字C語(yǔ)言基本字符: 字母: 26個(gè)小寫字符az與26個(gè)大寫字母AZ 數(shù)字: 0-9 共10個(gè)字符 空白符: 空格符、制表符、換行符等統(tǒng)稱空白符(只在字符常量和字符串常量中起作用,其他地方出現(xiàn),只起間隔作用 標(biāo)點(diǎn)和特殊字符,如逗號(hào)、分號(hào)等。 標(biāo)識(shí)符命名規(guī)則:以字母或下劃線開頭C語(yǔ)言區(qū)別大小寫C語(yǔ)言中,要求所有用到的標(biāo)識(shí)符“先定義后使用”關(guān)鍵字: 指C語(yǔ)言中含有特定含義的標(biāo)識(shí)符,由c語(yǔ)言集成環(huán)境定義和使用的,用戶不能更改,只能使用,用戶自己定義的標(biāo)識(shí)符不能與之重名。 auto、break、case、char、const、contin

6、ue、default、do、double、else、enum、extern、float、for、goto、if、int、long、register、short、signed、sizeof、static、struct、switch、typedef、union、unsigned、void、volatile、while。所謂程序,就是一組計(jì)算機(jī)能識(shí)別和執(zhí)行的指令用高級(jí)語(yǔ)言編寫的程序稱為“源程序”(source program)為了計(jì)算機(jī)能執(zhí)行高級(jí)語(yǔ)言程序,必須先用一種稱為“編譯程序”的軟件,把源程序翻譯成二進(jìn)制形式的“目標(biāo)程序”,然后將該目標(biāo)程序與系統(tǒng)的函數(shù)庫(kù)和其他目標(biāo)程序連接起來(lái),形成可執(zhí)行的目標(biāo)

7、程序。第2章數(shù)據(jù)類型與表達(dá)式2.1c語(yǔ)言數(shù)據(jù)類型 從數(shù)據(jù)類型的應(yīng)用角度出發(fā),數(shù)據(jù)類型的基本含義:A.數(shù)據(jù)類型規(guī)定了該類型中的數(shù)據(jù)取值范圍;B.數(shù)據(jù)類型定義了一個(gè)運(yùn)算集,不同的類型的數(shù)據(jù)擁有不同的運(yùn)算關(guān)系;C.數(shù)據(jù)類型定義了數(shù)據(jù)在計(jì)算機(jī)內(nèi)的存儲(chǔ)形式以及在書寫中的表示方式。C語(yǔ)言規(guī)定,任何數(shù)據(jù)都必須有明確的數(shù)據(jù)類型 整型 基本類型 字符型 實(shí)型 單精度實(shí)型 雙精度實(shí)型 枚舉型數(shù)據(jù)類型 數(shù)組 構(gòu)造類型 結(jié)構(gòu)體 聯(lián)合 指針類型 空類型C語(yǔ)言中數(shù)據(jù)有常量與變量之分,他們分別屬于這些類型2.2常量與變量 1.常量 其值不能被改變的量 整型常量,如15;實(shí)型常量,如5.2;字符常量,如'h'

8、;有字符串常量,如"chinea" 常量不占用內(nèi)存,在程序運(yùn)行時(shí)它作為操作對(duì)象直接出現(xiàn)在運(yùn)算器的各種寄存器中,使用時(shí)可以不需要類型說(shuō)明。 2.符號(hào)常量 用一個(gè)標(biāo)識(shí)符,來(lái)代表一個(gè)常量,稱為符號(hào)常量,起一般形式為: #define 符號(hào)常量名 常量例子:#include <stdio.h>#define PI 3.14main()float r,s,v;scanf("%f",&r);s=PI*r*r;v=4.0/3*PI*r*r;printf("s=%f,v=%fn",s,v);符號(hào)常量的命名規(guī)則遵循標(biāo)識(shí)符命名規(guī)則,但

9、習(xí)慣上符號(hào)常量名用大寫,變量名用小寫,以區(qū)別。 符號(hào)常量不同于變量,它的值在其作用域內(nèi)不能改變,也不能再被賦值。2. 變量 其值可以改變的量稱為變量 變量有兩個(gè)基本要素:變量名 變量類型,其類型決定了變量在內(nèi)存中要占據(jù)的若干字節(jié)的存儲(chǔ)單元。C中,變量一定要先定義,后使用。 類型 變量名表如 int i,j,num; 說(shuō)明:A.變量名可以是c語(yǔ)言中的合法標(biāo)識(shí)符,定義時(shí)應(yīng)遵循:見名知意 的原則,以便程序的維護(hù) B.每個(gè)變量都必須進(jìn)行類型說(shuō)明C.當(dāng)一個(gè)變量被指定為某一確定類型時(shí),將為它分配若干相應(yīng)字節(jié)的內(nèi)存空間,如char 為1個(gè)字節(jié),int 2,float 4 ,double 8. 不同的系統(tǒng)可能

10、會(huì)有差異。2.3.整型數(shù)據(jù)2.3.1.整型常量的表示方法C中,數(shù)值型常量都帶有符號(hào),整型常量只區(qū)別整型和長(zhǎng)整形兩種形式,而沒有無(wú)符號(hào)值型常量。整型常量通常有以下3種形式表示:1. 十進(jìn)制整型常量,如 124, 0,2. 八進(jìn)制整型常量,以0開頭的八進(jìn)制數(shù)字串,如015,表示13,3. 十六進(jìn)制整型常量,以0x或0X開頭的數(shù)字串,串中只能含有0-9,a-f2.3.2整型變量數(shù)據(jù)在內(nèi)存中式以二進(jìn)制形式存放的。存放的是補(bǔ)碼 正數(shù)的補(bǔ)碼和其原碼相同, 負(fù)數(shù)的補(bǔ)碼:將該數(shù)的絕對(duì)值的二進(jìn)制形式,按位取反再加1整數(shù)的16位中,最左面的一位表示符號(hào)位,0正1付整型變量的分類整型變量的基本類型int ,分基本整

11、型,短整型short,長(zhǎng)整型long基本整型:int -32768-32767 -2de15-(2de15-1)短整型:short int或 short長(zhǎng)整型:long int 或 longunsigned 無(wú)符號(hào)數(shù),signed有符號(hào)數(shù),缺省隱含為有符號(hào)數(shù)(signed)有符號(hào)基本整型 signed int 有符號(hào)短整型 signed short int有符號(hào)長(zhǎng)整型 signed long int無(wú)符號(hào)基本整型 unsigned int0-65535無(wú)符號(hào)短整型unsigned short int無(wú)符號(hào)長(zhǎng)整型unsigned long int一個(gè)無(wú)符號(hào)整型變量中可以放的整數(shù)的范圍比一般整型變

12、量中的正數(shù)范圍擴(kuò)大一倍,其中除long型為4字節(jié)外,均為2字節(jié)C語(yǔ)言規(guī)定在程序中要用到的變量都必須先定義,對(duì)變量的定義一般都放在函數(shù)開始部分的聲明部分例子#include<stdio.h>void main()int a,b,long c;unsigned e;a=-1;b=523;c=623789;e=89;printf("a=%d,b=%d,c=%ld,e=%un",a,b,c,e);整型變量初始化int a=3;int a,b,c=3;int a=3,b=4;溢出2.4 實(shí)型數(shù)據(jù)整型常量是精確的量,而實(shí)型常量是具有一定精度的量。C語(yǔ)言中,實(shí)數(shù)又稱為浮點(diǎn)數(shù),

13、有兩種表現(xiàn)形式十進(jìn)制小數(shù)形式 如 34.1,0.034,0.0,123.0指數(shù)形式 如 3.4e1,123e0,12.3e1,1.23e2(規(guī)范化的指數(shù)形式,即字母e或E之前的小數(shù)部分中,小數(shù)點(diǎn)左邊應(yīng)有一位且只能有一位非零的數(shù)字)存放形式:不管是小數(shù)形式還是指數(shù)形式,都以 指數(shù)形式 存放實(shí)型變量分類:?jiǎn)尉刃蚮loat 4字節(jié) 6-7位有效數(shù)字 10de-38-10de38雙精度型double 8字節(jié) 15-16 10de-308-10de308長(zhǎng)雙精度型long double 16位 18-19 10de-4932-10de4932float x;x=4615.123456;由于float變

14、量只能接受7位有效數(shù)字,x的值只有4815.123是有效的,改為double型則能完全接受上述10位數(shù)字并存儲(chǔ)在變量x中2.5字符型數(shù)據(jù)字符常量 用單引號(hào)括起來(lái)的一個(gè)字符,如'a','A', 開頭的字符序列,特殊的字符常量n換行,將當(dāng)前位置移到下一行開頭ASCII代碼10t水平制表 9b退格,將當(dāng)前位置移到前一列 8r回車,將當(dāng)前位置移到本行開頭 13f換頁(yè),將當(dāng)前位置移到以下開頭 12 反斜杠字符 92'單引號(hào)字符 39''雙引號(hào)字符 347ddd1到3位八進(jìn)制數(shù)所代表的字符xhh1到2位十六進(jìn)制所代表的字符以上列出的支付稱為轉(zhuǎn)義字符,

15、意思是將 后面的字符轉(zhuǎn)換成別的意思。內(nèi)存中,每個(gè)字符常量占用一個(gè)字節(jié),具體存放的是對(duì)應(yīng)的ASCII代碼值。字符變量定義形式:char c1,c2='B'; #include<stdio.h>void main()char c1,c2;c1='a'c2='b'c1=c1-32;c2=c2-32;printf("%c %cn",c1,c2);printf("%d %dn",c1,c2);ASCII碼中每一個(gè)小寫字母比它相應(yīng)的大寫字母的碼大32字符串常量 "CHINA" ,&quo

16、t;I am a student.",存儲(chǔ)方式:字符串中的每一個(gè)字符以其ASCII碼值的二進(jìn)制形式存儲(chǔ)在內(nèi)存中,系統(tǒng)自動(dòng)在該字符串的末尾加一個(gè)"字符串結(jié)束標(biāo)識(shí) 0 ","computer"實(shí)際上在內(nèi)存中的是 c o m p u t e r 0它的長(zhǎng)度是8而不是9,最后的0在輸出時(shí)并不輸出,僅僅作為處理時(shí)的結(jié)束標(biāo)識(shí)。C語(yǔ)言沒有專門的字符串變量,如果想吧一個(gè)字符串放到變量中保存起來(lái),必須使用字符數(shù)組,數(shù)組中每一個(gè)元素存放一個(gè)字符。2.6運(yùn)算符和表達(dá)式運(yùn)算符 C語(yǔ)言提供了多種運(yùn)算符,把除了控制語(yǔ)句合輸入輸出以外的幾乎所有的基本操作都作為運(yùn)算符處理,按

17、功能:算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、逗號(hào)運(yùn)算符、位運(yùn)算符、賦值運(yùn)算符。要求不同的操作數(shù) 及優(yōu)先級(jí)表達(dá)式 不管表達(dá)式多么復(fù)雜,都有一個(gè)值算術(shù)運(yùn)算符和算術(shù)表達(dá)式+加法運(yùn)算符- 減法運(yùn)算符 *乘法運(yùn)算符 以上三個(gè),操作數(shù)可以是整型或?qū)嵭偷某A俊⒆兞亢秃瘮?shù) /除法運(yùn)算符 5/2.0=2.5,5/2=2, 向零取整,%求余運(yùn)算符兩邊必須是整數(shù),后面不能為零,3%2=1算術(shù)運(yùn)算符的結(jié)合方向全部都是“右向性”,自增自減運(yùn)算符 +k與k+-k 與k-使變量增1或減1前置時(shí),整個(gè)表達(dá)式的值為變化后的值,后置時(shí),整個(gè)表達(dá)式的值為變化前的值只能用用于變量,不能用于常量或者表達(dá)式,左向性,這兩個(gè)運(yùn)算符經(jīng)常用在循

18、環(huán)語(yǔ)句中,對(duì)循環(huán)變量增1減1,用來(lái)控制循環(huán)的執(zhí)行次數(shù)。賦值運(yùn)算符和賦值表達(dá)式= += -= *= /= %= <<= >>= &= = |=x+=3,等價(jià)于x=x+3賦值表達(dá)式由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的式子稱為賦值表達(dá)式。其一般形式為:變量 賦值運(yùn)算符 表達(dá)式如果賦值運(yùn)算符兩側(cè)的變量和表達(dá)式的類型不同時(shí),系統(tǒng)將自動(dòng)進(jìn)行類型轉(zhuǎn)換,以左邊的類型為準(zhǔn)。右結(jié)合性,即從右向左進(jìn)行運(yùn)算。逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式 表達(dá)式1,表達(dá)式2,表達(dá)式n 整個(gè)表達(dá)式的值為n的值逗號(hào)表達(dá)式用的地方不多,一般式在for語(yǔ)句中給循環(huán)變量賦初值時(shí)才用到。程序中并不是所有的逗號(hào)都要

19、看成逗號(hào)運(yùn)算符,尤其是在函數(shù)調(diào)用時(shí),各個(gè)參數(shù)是用逗號(hào)隔開的。條件運(yùn)算符 表達(dá)式1?表達(dá)式2:表達(dá)式3先求表達(dá)式1的值,非零求2的值,零求3的值,并把它作為整個(gè)表達(dá)式的值。右結(jié)合性2.7 不同類型數(shù)據(jù)間的混合運(yùn)算不同類型的數(shù)據(jù)放在一起運(yùn)算時(shí),需要轉(zhuǎn)換為相同的數(shù)據(jù)類型。兩種方法:自動(dòng)轉(zhuǎn)換(隱式轉(zhuǎn)換),強(qiáng)制轉(zhuǎn)換(顯示轉(zhuǎn)換)。1. 自動(dòng)轉(zhuǎn)換 高 double float long unsigned 低 int short,char橫向的必定轉(zhuǎn)換,當(dāng)遇到 short、char時(shí),系統(tǒng)一律轉(zhuǎn)換為int參與運(yùn)算2. 賦值類型的自動(dòng)轉(zhuǎn)換以賦值表達(dá)式左邊的為準(zhǔn)3. 強(qiáng)制類型轉(zhuǎn)換(類型名)(表達(dá)式)如 int a

20、;(double)a; /*將a轉(zhuǎn)換為double類型*/在強(qiáng)制類型轉(zhuǎn)換時(shí),得到一個(gè)所需的中間變量,原來(lái)的類型未變,a仍是int型第3章順序結(jié)構(gòu)設(shè)計(jì)3.1c語(yǔ)言基本語(yǔ)句一個(gè)實(shí)際的程序師一系列語(yǔ)句的集合,每條語(yǔ)句是一條完整的計(jì)算機(jī)指令,是用來(lái)完成一定任務(wù)的,并且?guī)в心撤N必需的標(biāo)點(diǎn)。C語(yǔ)言中,語(yǔ)句結(jié)束處用一個(gè)分號(hào)標(biāo)識(shí)legs=4 是一個(gè)表達(dá)式legs=4; 是一個(gè)語(yǔ)句聲明部分的內(nèi)容不用稱為語(yǔ)句,如int a;這不是一個(gè)條c語(yǔ)句,只是對(duì)變量的定義,因?yàn)樗鼪]有對(duì)數(shù)據(jù)進(jìn)行操作,亦即語(yǔ)句說(shuō)明是一種行為。C語(yǔ)句分類:(1) 控制語(yǔ)句:用來(lái)完成一定的控制功能。C語(yǔ)言中有9種控制語(yǔ)句if().else.條件語(yǔ)句

21、for().循環(huán)語(yǔ)句while().循環(huán)語(yǔ)句do.while();循環(huán)語(yǔ)句continue結(jié)束本次循環(huán)語(yǔ)句break中止執(zhí)行switch或循環(huán)語(yǔ)句switch多分支語(yǔ)句goto轉(zhuǎn)向語(yǔ)句return從函數(shù)返回語(yǔ)句(2) 函數(shù)調(diào)用語(yǔ)句:由一次函數(shù)調(diào)用加一個(gè)分號(hào)構(gòu)成一條語(yǔ)句 如 printf();(3) 表達(dá)式語(yǔ)句 一個(gè)表達(dá)式加一個(gè)分號(hào)(4) 空語(yǔ)句 ;(5) 復(fù)合語(yǔ)句 t=a;a=b;b=t; 最后的分號(hào)不能省略。C語(yǔ)言程序?qū)懛`活,既允許一行寫多條語(yǔ)句,也允許一條語(yǔ)句拆開寫在幾行上。3.2 數(shù)據(jù)輸入與輸出C語(yǔ)言沒有定義任何處理輸入輸出的關(guān)鍵字,而是用庫(kù)函數(shù)完成輸入輸出。C語(yǔ)言的輸入輸出系統(tǒng)包含許

22、多函數(shù),位于一個(gè)名為stdio.h(標(biāo)注輸入輸出庫(kù))的頭文件里,因此,每一個(gè)C語(yǔ)言程序的開始都要用到預(yù)編譯命令#include <stdio.h>或#include"stdio.h"getchar() putchar() 分別從鍵盤讀一個(gè)字符或向顯示屏寫一個(gè)字符getchar()先將輸入字符放到緩沖區(qū)里,等待回車鍵,當(dāng)敲入回車鍵后才獲取所輸入的字符并把結(jié)果顯示到顯示屏上 int getchar(void)putchar()把傳入的字符寫在顯示屏的當(dāng)前光標(biāo)處 int putchar(int ch)char c;c=getchar();putchar(c);*get

23、char()一次只能接收一個(gè)字符,putchar()亦然*getchar()接收到的字符可以賦給inthuo char,也可以不賦值,而直接作為表達(dá)式的一部分。上例中 putchar(getchar();getch() getche() 位于conio.h 直接從鍵盤接收輸入的字符,不需要等待回車確認(rèn)getch()讀入的字符不回顯,getche()要顯示格式化輸入與輸出printf() scanf() stdio.hprintf(control-string,item1,item2,.);contro-string控制字符串,是用雙引號(hào)括起來(lái)的字符串,是一個(gè)描述項(xiàng)目如何打印的字符串,有兩種信息

24、:顯示到顯示屏上的普通字符,原樣輸出的;格式說(shuō)明符(format specifier),用于定義相應(yīng)變量的打印格式,格式說(shuō)明符由百分號(hào)%開始,然后緊隨格式字符%c一個(gè)字符%d有符號(hào)十進(jìn)制數(shù)%e浮點(diǎn)數(shù),e計(jì)數(shù)法%E浮點(diǎn)數(shù),E計(jì)數(shù)法%f浮點(diǎn)數(shù),十進(jìn)制計(jì)數(shù)法%g根據(jù)數(shù)值不同自動(dòng)選擇%f或%e,%e在指數(shù)<-4或>=精度時(shí)使用%G %f %E %E%i有符號(hào)十進(jìn)制整數(shù) 與%d相同%o無(wú)符號(hào)八進(jìn)制整數(shù)%p指針%s字符串%u無(wú)符號(hào)十進(jìn)制整數(shù)%x使用十六進(jìn)制數(shù)字0f的無(wú)符號(hào)十六進(jìn)制整數(shù)%X 0F%打印一個(gè)百分號(hào)prinf()修飾符digit字段寬度最小值.digit精度h和整數(shù)格式說(shuō)明符一起使用

25、,表示一個(gè)short int 或unsigned short intl long longL和浮點(diǎn)數(shù)格式說(shuō)明符一起使用,表示一個(gè)long double類型數(shù)值標(biāo)志左對(duì)齊+有符號(hào)數(shù)若為正數(shù),則顯示加好,負(fù)號(hào)亦然(空格)有符號(hào)數(shù)若為正數(shù),帶前導(dǎo)空格,負(fù)號(hào)加顯示負(fù)號(hào)#使用格式說(shuō)明的可選形式,若為%o,則以0開始,對(duì)于浮點(diǎn)數(shù)形式,#保證了即使不跟任何數(shù)字,也打印一個(gè)小數(shù)點(diǎn)字符。0對(duì)于所有的數(shù)字格式,用前導(dǎo)零填充字符寬度。出現(xiàn)或指定了精度忽略scanf()函數(shù)的功能是:從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)讀取輸入的信息,其參數(shù)列表里使用的是指向變量的指針。 scanf("%d",&a);修

26、飾符補(bǔ)充:*本項(xiàng)讀入后略去 如scanf("%2d%*3d%2d",&a,&b);輸入1234567回車,則系統(tǒng)將12給a,345略去,67給bdigit最大字段寬度,在達(dá)到最大字段寬度或遇到第一個(gè)空格字符時(shí)停止對(duì)輸入項(xiàng)的讀取l用于輸入long int 整型%ld%lo%lx以及double型數(shù)%lf,%leh用于輸入short int 型數(shù)。*如果在字符控制串中除了格式說(shuō)明符以外還有其他字符,則在輸入數(shù)據(jù)時(shí)應(yīng)輸入與這些字符相同的支付,如scanf("%d,%d",&a,&b); 輸入時(shí)用右邊形式:3,4回車*用%c格式輸

27、入字符時(shí),空格和轉(zhuǎn)義字符都作為有效字符輸入*輸入數(shù)據(jù)時(shí),遇到以下情況認(rèn)為當(dāng)前數(shù)據(jù)輸入結(jié)束:遇到空格字符,或回車,或TAB鍵遇到滿足最大字段寬度時(shí)認(rèn)為結(jié)束,如%2d,只取兩位數(shù)遇到非法輸入時(shí),當(dāng)使用多個(gè)scanf函數(shù)連續(xù)給多個(gè)字符型變量賦值是,注意輸入的方法,如scanf("%c",&c1);scanf("%c",&c2);要使c1為'A',c2為'B',應(yīng)輸入AB回車程序舉例:*從鍵盤輸入一個(gè)大寫字母,改用小寫字母輸出#include <stdio.h>#include <conio.h&

28、gt;void main()char c1,c2;c1=getch();c2=c1+32;printf("n%c,%dn",c1,c1);printf("n%c,%dn",c2,c2);*輸入三角形的三邊,用海倫公式求三角形面積#include<stdio.h>#include<math.h>#include<conio.h>void main()float a,b,c,p,area;printf("Enter a,b,c:");scanf("%f,%f,%f",&a,&

29、amp;b,&c);p=(a+b+c)/2.0;area=sqrt(p*(p-a)*(p-b)*(p-c);printf("a=%7.2f b=%7.2f c=%7.2f p=%7.2fn",a,b,c,p);printf("area=%7.2fn",area);getch();第4章選擇與循環(huán)結(jié)構(gòu)程序設(shè)計(jì)4.1選擇結(jié)構(gòu)(分支結(jié)構(gòu))程序關(guān)系運(yùn)算符與關(guān)系表達(dá)式 > < >= <= = !=其結(jié)果是一個(gè)邏輯值,即真1 假 0c語(yǔ)言中,真是任意非0的值,假就是05>3 結(jié)果為12*5=3 結(jié)果為0邏輯運(yùn)算符與邏輯表達(dá)式邏輯

30、運(yùn)算符額可以將多個(gè)表達(dá)式或邏輯量連接起來(lái),構(gòu)成邏輯表達(dá)式c語(yǔ)言提供三種邏輯運(yùn)算符 ! && | 非與或, 優(yōu)先級(jí)從左到右 ! 算術(shù)運(yùn)算符 關(guān)系運(yùn)算符 && | 賦值運(yùn)算符 優(yōu)先級(jí)從左到右*關(guān)系運(yùn)算符和邏輯運(yùn)算符的運(yùn)算結(jié)果不是0就是1,可以作為算術(shù)值處理int x;x=100;printf("%d",x>10); 輸出結(jié)果為1*在計(jì)算邏輯表達(dá)式時(shí),如果在某一步已得到整個(gè)表達(dá)式的結(jié)果,則后面的部分將不再計(jì)算,&&前為0,|前為1,停止后面的計(jì)算*注意與數(shù)學(xué)式子的區(qū)別,數(shù)學(xué)式子a>b>c在c中a>b&

31、&b>cif語(yǔ)句if語(yǔ)句的3種基本形式基本if形式 if(表達(dá)式)語(yǔ)句 圖1ifelse形式 if(表達(dá)式) 語(yǔ)句1 else 語(yǔ)句2 圖2 ifelse if形式if(表達(dá)式1) 語(yǔ)句1else if(表達(dá)式2) 語(yǔ)句2. .else if(表達(dá)式m) 語(yǔ)句melse 語(yǔ)句 n無(wú)論執(zhí)行了哪條語(yǔ)句,執(zhí)行后調(diào)到整個(gè)if語(yǔ)句之外繼續(xù)執(zhí)行程序,而不再對(duì)后面的表達(dá)式進(jìn)行判斷。 *3種形式if語(yǔ)句中,if關(guān)鍵字之后均為表達(dá)式,只要表達(dá)式的值為非0即作為真來(lái)處理*語(yǔ)句只為一條語(yǔ)句,多條時(shí),必須用括起來(lái)if語(yǔ)句的嵌套c語(yǔ)句規(guī)定,else總是與它前面最近的未配對(duì)的if配對(duì)。如 if(表達(dá)式1)

32、if(表達(dá)式2) 語(yǔ)句1; else 語(yǔ)句2; 一般情況下應(yīng)盡量少使用if語(yǔ)句的嵌套結(jié)構(gòu),以便程序更便于閱讀。用條件運(yùn)算符實(shí)現(xiàn)選擇如果在條件語(yǔ)句中,只執(zhí)行單個(gè)的賦值語(yǔ)句,??墒褂脳l件表達(dá)式來(lái)實(shí)現(xiàn),不但使程序簡(jiǎn)潔,也提高了運(yùn)行效率。#include <stdio.h>#include <conio.h>void main()int a,b;printf("n input two numbers:");scanf("%d%d",&a,&b);printf("max=%dn",a>b?a:b);

33、getch();switch語(yǔ)句c語(yǔ)言還提供了另一種用于多分支選擇的switch語(yǔ)句,一般形式為:switch(表達(dá)式)case 常量表達(dá)式1:語(yǔ)句1;break;case 常量表達(dá)式2:語(yǔ)句2;break;.case 常量表達(dá)式n:語(yǔ)句n;break;default:語(yǔ)句n+1;break;*表達(dá)式應(yīng)為整型、字符型、枚舉型表達(dá)式語(yǔ)義:計(jì)算表達(dá)式的值,并依次與其后的常量表達(dá)式值比較,相等即執(zhí)行其后的所有語(yǔ)句語(yǔ)句,加break后則執(zhí)行語(yǔ)句后跳出整個(gè)switch語(yǔ)句case常量表達(dá)式和default相當(dāng)于一個(gè)語(yǔ)句標(biāo)號(hào),表達(dá)式的值和某標(biāo)號(hào)相等則轉(zhuǎn)向該標(biāo)號(hào)執(zhí)行,然后不再進(jìn)行判斷,繼續(xù)執(zhí)行后面所有的ca

34、se 和default后的語(yǔ)句,加break語(yǔ)句后,跳出整個(gè)switch語(yǔ)句,不再繼續(xù)執(zhí)行。*case后的常量表達(dá)式的值不能相同,否則會(huì)出現(xiàn)錯(cuò)誤*case后允許多個(gè)語(yǔ)句,用括起來(lái)*若每個(gè)分支后,都有break語(yǔ)句,case和default子句的先后順序可以變動(dòng)*default 子句可以省略不用。例子:#include<stdio.h>void main()int a,i;printf("Input integer number:n");for(i=1;i<=3;i+)scanf("%d",&a);switch(a)case 7:

35、printf("Sundayn");break;case 1:printf("Mondayn");break;case 2:printf("Tuesdayn");break;case 3:printf("Wednesdayn");break;case 4:printf("Thursdayn");break;case 5:printf("Fridayn");break;case 6:printf("Saturdayn");break;default:prin

36、tf("Errorn");break;4.2循環(huán)結(jié)構(gòu)程序特點(diǎn):在給定條件成立時(shí),反復(fù)執(zhí)行某程序段,知道條件不成立為止,給定條件稱為循環(huán)條件,反復(fù)執(zhí)行的程序段稱為循環(huán)體。while語(yǔ)句 一般形式為:while(表達(dá)式)語(yǔ)句while語(yǔ)句的執(zhí)行過程為:計(jì)算表達(dá)式的值,當(dāng)值為真時(shí),執(zhí)行循環(huán)體語(yǔ)句。#include <stdio.h>void main()int n;float fact=1;printf("Input n:");scanf("%d",&n);while(n>0)fact*=n-;printf(&qu

37、ot;n!=%.0fn",fact);*while中的表達(dá)式一般是關(guān)系表達(dá)式或邏輯表達(dá)式,只要值為真即可繼續(xù)循環(huán)*語(yǔ)法上,循環(huán)體應(yīng)該是一條語(yǔ)句,如果需要多條語(yǔ)句,括起來(lái)*循環(huán)體中應(yīng)包含使循環(huán)趨于結(jié)束的語(yǔ)句,以避免出現(xiàn)死循環(huán)。*允許while語(yǔ)句的循環(huán)體又是循環(huán)while語(yǔ)句,從而形成循環(huán)的嵌套dowhile語(yǔ)句一般形式為:do 循環(huán)體語(yǔ)句while();#include <stdio.h>void main()int n;float fact=1;printf("Input integer n:n");scanf("%d",&

38、;n);dofact*=n-;while(n>0);printf("n!=%.0fn",fact);*if語(yǔ)句和while語(yǔ)句中,表達(dá)式后面都不能加分號(hào),而在do-while語(yǔ)句的表達(dá)式后面必須加分號(hào),因?yàn)檫@是一條完整語(yǔ)句結(jié)束的標(biāo)志。*do 和while之間的循環(huán)體由多個(gè)語(yǔ)句組成時(shí),也必須用括起來(lái)。*do-while和while語(yǔ)句相互替換時(shí),要注意修改循環(huán)控制條件*do-while語(yǔ)句可以組成多重循環(huán),而且也可以喝while語(yǔ)句相互嵌套。for語(yǔ)句 for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 循環(huán)體語(yǔ)句表達(dá)式1一般式賦值表達(dá)式,用來(lái)給循環(huán)變量賦初值。如果已被賦值,可省略

39、表達(dá)式2一般為關(guān)系表達(dá)式或邏輯表達(dá)式,表示循環(huán)條件表達(dá)式3一般式賦值語(yǔ)句或自增自減語(yǔ)句,用來(lái)修改循環(huán)變量的值執(zhí)行過程:1.首先計(jì)算表達(dá)式1的值 2.再計(jì)算表達(dá)式2的值,若為真則執(zhí)行循環(huán)體一次,否則跳出循環(huán) 3.然后在計(jì)算表達(dá)式3的值,轉(zhuǎn)回第2步 #include<stdio.h>void main()int n,i;float fact=1;printf("Input integer n:n");scanf("%d",&n);for(i=1;i<=n;i+)fact*=i;printf("n!=%.0fn",

40、fact);轉(zhuǎn)移語(yǔ)句c語(yǔ)言提供4種轉(zhuǎn)移語(yǔ)句break continue return 和gotobreak;用在switch語(yǔ)句和循環(huán)語(yǔ)句中,跳出switch語(yǔ)句和跳出本層循環(huán) continue; 只能用在循環(huán)語(yǔ)句中,結(jié)束本次循環(huán),即不再執(zhí)行循環(huán)體中continue語(yǔ)句之后的語(yǔ)句,轉(zhuǎn)入下一次循環(huán)。#include<stdio.h>void main()int n;for(n=7;n<=100;n+)if(n%7!=0)continue;printf("%5d",n);goto語(yǔ)句 也稱為無(wú)條件轉(zhuǎn)移語(yǔ)句 其一般形式: goto 語(yǔ)句標(biāo)號(hào);其中語(yǔ)句標(biāo)號(hào)是按標(biāo)識(shí)

41、符規(guī)定書寫的符號(hào),放在某一語(yǔ)句行的前面,標(biāo)號(hào)后面加冒號(hào),語(yǔ)句標(biāo)號(hào)起標(biāo)識(shí)語(yǔ)句的作用,與goto語(yǔ)句配合使用goto語(yǔ)句通常與條件語(yǔ)句配合使用,可用來(lái)實(shí)現(xiàn)條件轉(zhuǎn)移,構(gòu)成循環(huán),跳出循環(huán)體等功能#include<stdio.h>void main()int n;float fact=1;printf("Input integer n:n");scanf("%d",&n); loop: if(n>0) fact*=n-; goto loop; printf("n!=%.0fn",fact);程序舉例:/*求Fibona

42、cci數(shù)列的前40個(gè)數(shù)*/#include <stdio.h>void main()long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i+)printf("%12ld %12ld",f1,f2);if(i%2=0) printf("n");f1=f1+f2;f2=f2+f1;/*輸出100以內(nèi)的素?cái)?shù)。所謂素?cái)?shù),只能被1和其本身整除的數(shù)*/#include<stdio.h>#include<math.h>#include<conio.h>void main()int n,i;

43、double k;for(n=3;n<=100;n+=2)k=sqrt(n);for(i=2;i<=k;i+)if(n%i=0) break;if(i>k) printf("t%d",n);getch();第5章數(shù)組 同一個(gè)數(shù)組中的所有數(shù)組元素類型不需相同,按數(shù)組元素的類型不同,數(shù)組可以分為整型數(shù)組、實(shí)型數(shù)組、字符型數(shù)組、指針型數(shù)組、結(jié)構(gòu)型數(shù)組等。5.1 一維數(shù)組的定義和引用類型說(shuō)明符 數(shù)組名常量表達(dá)式類型說(shuō)明符是任一種基本數(shù)據(jù)類型或構(gòu)造數(shù)據(jù)類型。數(shù)組名是用戶定義的標(biāo)識(shí)符,常量表達(dá)式是數(shù)組元素個(gè)數(shù),也稱數(shù)組的長(zhǎng)度,可以是符號(hào)常量或常量,不允許為變量。常量表

44、達(dá)式是從零開始計(jì)數(shù)的,如a3表示數(shù)組有a0 a1 a2三個(gè)元素。一維數(shù)組的引用 數(shù)組名下標(biāo)下標(biāo)只能為整型常量或整型表達(dá)式,若為小數(shù),系統(tǒng)自動(dòng)取整。c語(yǔ)言規(guī)定,只能逐個(gè)的引用下標(biāo)變量,而不能一次引用整個(gè)數(shù)組。#include <stdio.h>void main()int i,a10;for(i=0;i<10;i+)ai=2*i+1;for(i=9;i>=0;i-)printf("%4d",ai);printf("nn");一維數(shù)組的初始化int a3=1,2,3; 對(duì)數(shù)組全部賦初值時(shí),可以不指定長(zhǎng)度 int a=1,2,3int

45、a3=1,2 最后一個(gè)自動(dòng)賦0如果定義數(shù)組時(shí)不進(jìn)行初始化,其元素的初值與數(shù)組的存儲(chǔ)類別有關(guān)。對(duì)于存儲(chǔ)類別為自動(dòng)類型的數(shù)組元素的初值為隨機(jī)的,而對(duì)于存儲(chǔ)類別為靜態(tài)的數(shù)組或外部數(shù)組,元素初值為0#include <stdio.h>void main()int i;long f20=1,1;for(i=2;i<=19;i+)fi=fi-1+fi-2;for(i=0;i<20;i+)if(i%5=0) printf("n");printf("%5d",fi);printf("n");/*輸入10個(gè)數(shù),從小到大的順序排列

46、,選擇法*/#include<stdio.h>void main()int a11;int i,j,k,t;printf("Input 10 numbers:n");for(i=1;i<=10;i+)scanf("%d",&ai);printf("n");for(i=1;i<10;i+)k=i;for(j=i+1;j<=10;j+)if(ak>aj) k=j;if(k!=i)t=ai;ai=ak;ak=t;printf("The sorted numbers:n");fo

47、r(i=1;i<=10;i+)printf("%5d",ai);二維數(shù)組的定義類型說(shuō)明符 數(shù)組名常量表達(dá)式1常量表達(dá)式2引用 數(shù)組名下標(biāo)下標(biāo)初始化二維數(shù)組初始化也是在類型說(shuō)明時(shí)給各下標(biāo)變量賦以初值。 二維數(shù)組可按行分段賦值,也可按行連續(xù)賦值。 例如對(duì)數(shù)組a53:1.按行分段賦值可寫為int a53= 80,75,92,61,65,71,59,63,70,85,87,90,76,77,85 ; 2.按行連續(xù)賦值可寫為int a53= 80,75,92,61,65,71,59,63,70,85,87,90,76,77,85 ; 5.3字符數(shù)組char 數(shù)組名常量表達(dá)式ch

48、ar 數(shù)組名常量表達(dá)式1常量表達(dá)式2char ch='c','o','d','e' 全部符初值時(shí)可以省略長(zhǎng)度若括號(hào)中提供的初值個(gè)數(shù)大于數(shù)組長(zhǎng)度,系統(tǒng)按語(yǔ)法錯(cuò)誤處理。若小于,則將字符賦給前面的數(shù)組元素,其余元素自動(dòng)賦空字符0c語(yǔ)言沒有專門的字符串變量,通常用一個(gè)字符數(shù)組來(lái)存放一個(gè)字符串。char ch5="code",或者char ch="code"用%c實(shí)現(xiàn)逐個(gè)字符輸入輸出#include<stdio.h>#include<conio.h>void main()cha

49、r a4;int i;printf("Input three character:n");scanf("%c%c%c",&a0,&a1,&a2);printf("The inputed charecter are:n");for(i=0;i<3;i+)printf("%c ",ai);getch();用%s實(shí)現(xiàn)整個(gè)字符串的輸入輸出#include<stdio.h>#include<conio.h>void main()char a4;printf("I

50、nput three character:n");scanf("%c%c%c",&a0,&a1,&a2);a3='0'printf("The inputed charecter are:n");printf("%s",a);getch();#include<stdio.h>#include<conio.h>void main()char a4;printf("Input three character:n");scanf("%s&q

51、uot;,a);printf("The inputed charecter are:n");printf("%s",a);getch();*scanf()輸入字符串時(shí),字符串不能包含空格,否則系統(tǒng)將把空格作為輸入時(shí)結(jié)束標(biāo)識(shí)*c中數(shù)組名代表該數(shù)組的首地址*%s輸出字符串時(shí),printf函數(shù)中的輸出項(xiàng)是字符數(shù)組名,而不是數(shù)組元素名。*數(shù)組長(zhǎng)度大于字符串實(shí)際長(zhǎng)度,也只遇到0結(jié)束。字符串處理函數(shù)用于輸入輸出的字符串函數(shù)一般在stdio.h中,用于比較拷貝合并等用途的字符串函數(shù)一般在string.h中字符串常用函數(shù)語(yǔ)言提供了豐富的字符串處理函數(shù), 大致可分為字符串

52、的輸入、輸出、合并、修改、比較、轉(zhuǎn)換、復(fù)制、搜索幾類。 使用這些函數(shù)可大大減輕編程的負(fù)擔(dān)。用于輸入輸出的字符串函數(shù), 在使用前應(yīng)包含頭文件"stdio.h" ; 使用其它字符串函數(shù)則應(yīng)包含頭文件"string.h"。 下面介紹幾個(gè)最常用的字符串函數(shù)。1.字符串輸出函數(shù) puts 格式: puts (字符數(shù)組名) 功能:把字符數(shù)組中的字符串輸出到顯示器。 即在屏幕上顯示該字符串#include"stdio.h"main()static char c="BASICndBASE"puts(c);從程序中可以看出puts函數(shù)中可以使用轉(zhuǎn)義字符, 因此輸出結(jié)果成為兩行。puts函數(shù)完全可以由printf函數(shù)取代。 當(dāng)需要按一定格式輸出時(shí),通常使用printf函數(shù)。2.字符串輸入函數(shù)gets 格式: gets (字符數(shù)組名) 功能:從標(biāo)準(zhǔn)輸入設(shè)備鍵盤

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論