郝斌老師c語言筆記_第1頁
郝斌老師c語言筆記_第2頁
郝斌老師c語言筆記_第3頁
郝斌老師c語言筆記_第4頁
郝斌老師c語言筆記_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上int# include <stdio.h>int main ()return 0;C語言關(guān)鍵字Auto 自動(dòng)的 break終止 case案件 char const常量 continue繼續(xù) default默認(rèn) do做 double雙 Else否則 enum 枚舉 extern額外的 float浮點(diǎn)型 for為了 goto去 if如果 int 整數(shù) long長(zhǎng)整型Register寄存器 return返回 short短的 signed有符號(hào)的 sizeof運(yùn)算符 static靜止的 struct結(jié)構(gòu)體 switch開關(guān) typedef定義類型Unsigned

2、無符號(hào)整數(shù) union 聯(lián)合 void 空的;無效的 volatile不穩(wěn)定的 易失的 易變的 while當(dāng) directive指示符 fatal 致命的 precompiled 預(yù)編譯;先行編譯C語言的特點(diǎn):優(yōu)點(diǎn):代碼量小,速度快,功能強(qiáng)大。缺點(diǎn):危險(xiǎn)性高,開發(fā)周期長(zhǎng),相對(duì)于java的可移植性不強(qiáng)。C語言的應(yīng)用領(lǐng)域:主要用于系統(tǒng)軟件,很少應(yīng)用于應(yīng)用軟件。學(xué)習(xí)方法:多上機(jī)。C語言的函數(shù)和數(shù)學(xué)的函數(shù)沒有太大的函數(shù)第11節(jié) 課一元二次方程求解:首先要把a(bǔ)bc三個(gè)系數(shù)要保存到計(jì)算機(jī)了,再求出b的平方減去4倍ac的值。即先要確定解題思路。#include "stdafx.h"#in

3、clude "math.h"int main(int argc, char* argv)int a;int b;int c;float d;float x1;float x2;printf ("請(qǐng)輸入三個(gè)值:n"); scanf ("%d %d %d",&a,&b,&c);d = (b*b - 4*a*c);if (d>0)x1 = (-b + sqrt(d)/(2*a);x2 = (-b - sqrt(d)/(2*a);printf ("方程有兩個(gè)根分別是:x1=%f x2=%fn"

4、,x1,x2);else if (d = 0)x1=(-b/(2*a);x2 = x1;printf ("方程有兩個(gè)一樣的跟:x1=x2=%fn",x1);else printf ("方程沒有實(shí)根n");return 0;第十四次課計(jì)算機(jī)的一些基本知識(shí):1:cpu 內(nèi)存條 硬盤 顯卡 主板顯示器 之間的關(guān)系Cpu不能直接處理硬盤上的文件,通過雙擊鼠標(biāo)將硬盤上的數(shù)據(jù)調(diào)用到內(nèi)存條上,cpu再去處理內(nèi)存條中的電影數(shù)據(jù),處理的結(jié)果是將某些數(shù)據(jù)變成圖像,通過顯示器。聲音通過聲卡顯示出來。主板上插上硬盤,內(nèi)存條,聲卡,顯卡,通過主板將這些東西聯(lián)系在一起。2:hell

5、oworld 程序如何運(yùn)行起來的通過編譯鏈接:出現(xiàn)后綴式.exe的文件感嘆號(hào)的操作是由我們的軟件會(huì)請(qǐng)求操作系統(tǒng)(cpu)來執(zhí)行這個(gè)exe的文件3: 什么是數(shù)據(jù)類型把數(shù)據(jù)保存到計(jì)算機(jī)里面,即是數(shù)據(jù)的存儲(chǔ)。對(duì)數(shù)據(jù)進(jìn)行分類,整數(shù),實(shí)數(shù),字符三類基本類型數(shù)據(jù):整數(shù):整型int(4字節(jié)), 短整型short int(2), 長(zhǎng)整型long int(8)。定義完之后這個(gè)容器只能放提前定義好的數(shù)據(jù)類型。實(shí)數(shù)(浮點(diǎn)數(shù),含有小數(shù)點(diǎn)的數(shù)): 單精度浮點(diǎn)數(shù)(空間比較小,float 4個(gè)字節(jié),), 雙精度浮點(diǎn)數(shù)(空間比較大,double 8個(gè)字節(jié),)。字符: 單個(gè)字符(char 一個(gè)字節(jié)), 字符串(一系列字符的組合

6、,c語言沒有東西可以直接存放字符串。以后可以通過字符數(shù)組);復(fù)合數(shù)據(jù)類型:結(jié)構(gòu)體 枚舉(把基本類型拼合在一起,最重要的) 共用體 4:什么是變量類似一個(gè)容器,可以存放不同類型數(shù)據(jù)。方便對(duì)數(shù)據(jù)的存儲(chǔ)。本質(zhì)是就是內(nèi)存中的一段存儲(chǔ)空間。例如:3最終存放在內(nèi)存中,程序運(yùn)行完后就把內(nèi)存釋放。5:cpu內(nèi)存條vc+6.0操作系統(tǒng)之間的關(guān)系請(qǐng)求操作系統(tǒng)分配一段存儲(chǔ)空間。來存放變量。6:變量為什么必須要初始化所謂初始化就是賦值的意思7:如何定義變量數(shù)據(jù)類型 變量名 = 要付的值等價(jià)于 數(shù)據(jù)類型 變量名; 變量名 = 要付的值;Int i ,j ;i = j = 5; 等價(jià)于 int i = j = 5; i

7、= 5; j = 5 ;8:什么是進(jìn)制9:常量在c語言中是如何表示的整數(shù) 十進(jìn)制 十六進(jìn)制:前面加0x或0X 把進(jìn)駐:前面加0,不是字母o浮點(diǎn)數(shù) Float x= 3.2e3; Float x = 123.45e-2字符 單個(gè)字符用單引號(hào), 字符串用雙引號(hào)。但是“a”代表了a和0的組合10:常量是以什么樣的二進(jìn)制代碼存儲(chǔ)在我們的計(jì)算機(jī)中的 用二進(jìn)制代碼把數(shù)存儲(chǔ)起來的,整數(shù)是以補(bǔ)碼的形式,實(shí)數(shù)是以IEEE754,字符和整數(shù)的 存儲(chǔ)的形式差不多。即字符改變成asc2碼,再以補(bǔ)碼表示成二進(jìn)制。11:代碼規(guī)范化的問題代碼規(guī)范化,有利于以后寫大程序。12:什么是字節(jié)就是存儲(chǔ)數(shù)據(jù)的單位,是硬件所能訪問的最

8、小單位。cpu只能控制字節(jié),控制不到位。一個(gè)字節(jié)等于八個(gè)位,1k等1024個(gè)字節(jié)1m等于1024k1g等于1024m13:不同類型數(shù)據(jù)類型之間賦值的問題暫不考慮14:什么是asc2只能定義字符變量Char ch = A;等價(jià)于 char ch ;ch = A;相當(dāng)于制造出一個(gè)容器,再把A放進(jìn)這個(gè)容器中。如果在后面在定義Char ch = B是不允許的,因?yàn)椴豢梢酝瑫r(shí)制造出兩個(gè)一樣的容器。 這個(gè)代碼不是一個(gè)值,而是一種規(guī)定,規(guī)定不同的字符使用那個(gè)整數(shù)值去表示它規(guī)定了一個(gè)字母對(duì)應(yīng)一個(gè)整數(shù)15:字符本質(zhì)上于整數(shù)的存儲(chǔ)方式相同基本的輸入輸出函數(shù)的用法Printf ()功能強(qiáng)大,用法靈活。將變量的內(nèi)容輸

9、出到顯示中 1:printf (“字符串n”); 2:printf (“輸出控制符”,輸出參數(shù)); 3:printf (“輸出控制符1 輸出控制符2換行符”,i,j);輸出控制符和輸出參數(shù)的個(gè)數(shù)必須一一對(duì)應(yīng)。 4:printf (“輸出控制符 非輸出控制符”,輸出參數(shù));輸出控制符包含%d %ld %c %f 的 為什么需要輸出控制符: 1:01組成的代碼可以表示數(shù)據(jù)也可以表示指令。 2:如果01組成的代碼表示的事數(shù)據(jù)的話那么同樣的01代碼以不同的格式輸出就會(huì)有不同的輸出結(jié)果。 3# include <stdio.h> Int main(void) Int i = 10:; Pri

10、ntf (“%d”, i); /d是十進(jìn)制,把二進(jìn)制代碼以十進(jìn)制輸出。X是十六進(jìn)制。%d輸出控制符。 Return 0:標(biāo)準(zhǔn)輸入輸出#include "stdafx.h"int main(int argc, char* argv)int x = 47;printf ("%xn", x );printf ("%Xn", x );printf ("%#Xn", x );/推薦使用return 0;/*輸出結(jié)果是2f2F0X2F*/return 0;2:Scanf (通過鍵盤將數(shù)據(jù)輸入到變量中) 有兩種用法 用法一:sc

11、naf (”輸入控制符“,輸入?yún)?shù)); 功能:將從鍵盤輸入的字符轉(zhuǎn)化為輸入控制符所規(guī)定格式的數(shù)據(jù),然后存入以輸入?yún)?shù)的值為地址的變量中。運(yùn)算符Scanf (”%d“ &i);&為取地址符號(hào) 知識(shí)跳躍 數(shù)組:1;為了方便定義大量同類型數(shù)據(jù)的存儲(chǔ)和使用 2:數(shù)組名是數(shù)組第一個(gè)元素的地址 3:采用循環(huán)法賦值 例如:int a5=12,11,12,321,123; int b5; int i; for (i = 0;i<5;i+) bi = aj;二維數(shù)組的的初始化 Int a34=,23,,2,2,32嗎,23,,2,32,2,,43,;%-5d表示左對(duì)齊,每個(gè)字符隔五個(gè)字符。

12、二維數(shù)組的輸出:#include "stdafx.h"int main(int argc, char* argv)#include <stdio.h>int main(void)int a23 = 12,34,45,423,2342,24;int i,j;for (i = 0;i<2;+i)for (j = 0;j<3;+j)printf ("%-5d",aij);printf ("n");return 0;二維數(shù)組的輸出,利用兩個(gè)for循環(huán)就可以解決。數(shù)組其實(shí)并不真實(shí)存在內(nèi)存空間中,而是線性分布的。函數(shù):極其

13、重要。(學(xué)習(xí)c語言的第二個(gè)重點(diǎn)。)什么是面向?qū)ο蟮恼Z言。為什么需要函數(shù):避免了重復(fù)性的操作。有利于程序的模塊化。把大問題分解成小問題。 通過函數(shù)來實(shí)現(xiàn)細(xì)小的問題,體現(xiàn)模塊化的思想。修改某一部分對(duì)其他部分沒有太大的影響。體現(xiàn)程序的健壯性。比較兩個(gè)數(shù)的大小:#include "stdafx.h"void max (int i ,int j)if (i>j)printf ("%dn",i);elseprintf ("%dn",j);int main(void)/表示該函數(shù)不接收任何值。Int表示返回值為int類型的數(shù)據(jù)。函數(shù)前面的vo

14、id表示不返回值。不能與return連用。 int a,b,c,d,e,f;a = 1,b = 2,c = 3,d = 4,e = 5 ,f = 6;max (a,b);max (c,d);max (e,f);return 0;什么是函數(shù):邏輯上:能夠完成特定功能的獨(dú)立的代碼塊 物理上:能夠接收數(shù)據(jù),當(dāng)然也可以不接收數(shù)據(jù)能夠?qū)邮盏臄?shù)據(jù)進(jìn)行處理,能夠?qū)?shù)據(jù)處理的結(jié) 果返回。當(dāng)然也可以不反悔。函數(shù)是個(gè)工具,是為了解決大量類似問題而設(shè)計(jì)的,函數(shù)可以當(dāng)成一個(gè)黑匣子。只要會(huì)用,不需要知道系統(tǒng)如何調(diào)用。經(jīng)典指針程序:互換兩個(gè)數(shù)子:#include <stdio.h>#include <

15、stdlib.h>void huhuan(int a,int b) int t; t = a; b = t; return ;int main() int a = 3; int b = 5; huhuan (a,b); printf ("a = %d,b = %dn",a,b); return 0;/這是個(gè)經(jīng)典錯(cuò)誤,函數(shù)只改變了形參的值,沒有改變實(shí)參的值。跟主函數(shù)沒有任何關(guān)系。因此不能完成互換功能。#include <stdio.h>#include <stdlib.h>void huhuan(int a,int b) int main() i

16、nt a = 3; int b = 5; huhuan (&a,&b); printf ("a = %d,b = %dn",a,b); return 0;void huhuan(int * a,int * b) int * t;/如果要互換,t必須定義成int*類型。 t = p; p = q; q = t;/這個(gè)程序依然不是正確的,因?yàn)橹皇歉淖兞藀和q的內(nèi)容對(duì)實(shí)參依然沒有實(shí)際的作用效果。第三個(gè):可以完成#include <stdio.h>#include <stdlib.h>void huhuan(int * p,int * q)i

17、nt main() int a = 3; int b = 5; huhuan (&a,&b); printf ("a = %d,b = %dn",a,b); return 0;void huhuan(int * p,int * q)/p是int類型的變量,*p是int類型變量。 int t;/必須要定義成int類型,否則會(huì)出錯(cuò)。 t = *p; *p = *q; *q = t;如何修改主函數(shù)的值:*號(hào)的含義,附注:1、乘法2、定義指針變量 Int * p 定義了一個(gè)名字叫p的變量,int* 表示p只能存放int類型數(shù)據(jù)的地址。3、指針運(yùn)算符,該運(yùn)算符放在已經(jīng)

18、定義好的指針變量的前面,如果p是一個(gè)已經(jīng)定義好的指針變量,則*p表示以p的內(nèi)容位為地址的變量。4、*p在定義好和未定義好的內(nèi)容是不一樣的。 1:使用單個(gè)字符用單引號(hào)括起來,字符穿用雙引號(hào)括起來。int main() int * p;/等價(jià)于int *p,等價(jià)于int* p。 int i = 5; char ch = 'A' p = &i ;/修改p和i的值互不影響。*p表示以p的內(nèi)容為地址的變量。 *p = 99; printf ("i = %d",i); return 0;#include <stdio.h>#include <s

19、tdlib.h>void swap_1(int i,int j) int t; t = i; i = j; j = t;int main() int a = 3; int b = 5; swap_1(a,b); printf ("a = %d,b = %d",a,b); return 0;互換兩個(gè)數(shù):#include <stdio.h>#include <stdlib.h>void f(int *p,int *q) int t; t = *p; *p = *q; *q = t;int main() int i = 6; int j = 7; p

20、rintf ("i = %d,j = %dn",i,j); f(&i,&j); printf ("i = %d,j = %dn",i,j); return 0;指針使函數(shù)返回一個(gè)以上的值:通過利用*p和i等效的原理來進(jìn)行數(shù)組和指針:數(shù)組名:下標(biāo)和指針的關(guān)系:指針變量的運(yùn)算:以為數(shù)組名是指針常量,他存放的是一位數(shù)組第一個(gè)元素的地址。指針和數(shù)組:界定一個(gè)一位數(shù)組需要幾個(gè)參數(shù): 一般情況下需要兩個(gè)參數(shù),數(shù)組名和數(shù)組長(zhǎng)度。# include <stdio.h>void f (int *p,int n)int i;for (i = 0;

21、i < n;i+)printf ("%pn",*(p+i);int main ()int a5 = 1,2,3,4,5;int b6 = 6,78,-1,-45,12,546;int c100 = 1,99,27,33;f(a,5);printf ("n");f(b,6);printf ("n");f(c,100);printf ("n");return 0;通過函數(shù)把數(shù)組的數(shù)組名發(fā)給指針變量p,則有:*(p+1)= a【i】,p【i】=a【i】,*(a+i)= a【i】 = *(p+i)= p【i】個(gè)可以等

22、效替換,無任何區(qū)別。# include <stdio.h>void f (int *p ,int len )int i;for (i = 0 ;i < len; i+)*(p+i) = *(p+i)+10;pi = pi*0;pi = *(p+i)+10;*(p+i) = pi*0;printf ("%dn",pi);int main (void)int i;int a6 = 1,3,4,5,566,45;/printf ("%dn",a3);f (a,6);printf ("從這里重新開始。別鬧了,孩子;n");/

23、for (i = 0;i < 6;i+)/printf ("%dn",*(a+i);return 0;指針變量的運(yùn)算:指針變量不能相加,相乘和相除。只能相減:如果兩個(gè)指針變量指向的是同一塊連續(xù)空間的不同存儲(chǔ)單元,則這兩個(gè)指針變量可以相減。表示兩個(gè)指針變量相隔的個(gè)數(shù)。# include <stdio.h>int main (void)int j = 5;int i = 10;int *p = &i ;int *q = &j ; int a5;p = &a1;q = &a4;printf ("%dn",p-q

24、);return 0;一個(gè)指針變量到底占幾個(gè)字節(jié):假設(shè)P指向char類型的變量 1假設(shè)q指向int類型的變量 4假設(shè)r指向double類型的變量 8預(yù)備知識(shí):Sizeof(數(shù)據(jù)類型)功能:返回值就是該數(shù)據(jù)類型所占的字節(jié)數(shù)。例如:sizeof(int)= 4;# include <stdio.h>int main (void)char ch = 'A'int i = 99;double x = 66.6;char *p = &ch;int *q = &i;double *r = &x; printf ("%d,%d,%dn"

25、,sizeof(p),sizeof(q),sizeof(r);return 0;運(yùn)行結(jié)果:4,4,4請(qǐng)按任意鍵繼續(xù). . .X變量有8個(gè)字節(jié),用首字節(jié)的編號(hào)當(dāng)成x 的編號(hào)??偨Y(jié):一個(gè)指針變量不論指向什么變量,該指針變量本身都只占四個(gè)字節(jié)。一個(gè)變量的地址使用該變量的首字節(jié)來表示的。專題:動(dòng)態(tài)內(nèi)存分配的問題非常非常重要。傳統(tǒng)數(shù)組的缺點(diǎn):1:數(shù)組長(zhǎng)度必須事先制定,并且只能是常指數(shù)。長(zhǎng)度不能是變量。2:傳統(tǒng)形式定義的數(shù)組,該數(shù)組的內(nèi)存程序員無法手動(dòng)編程釋放他。他只能在自己所在函數(shù)運(yùn)行完之后自動(dòng)釋放。但是動(dòng)態(tài)內(nèi)存可以自由釋放。在一個(gè)函數(shù)運(yùn)行期間系統(tǒng)為該函數(shù)中數(shù)組分配的空間就會(huì)一直存在,直到該函數(shù)運(yùn)行完畢

26、。3:數(shù)組的長(zhǎng)度不能在函數(shù)運(yùn)行的過程中動(dòng)態(tài)的擴(kuò)充和縮小。數(shù)組的長(zhǎng)度一旦定義,其長(zhǎng)度就不能夠改變,4:a函數(shù)定義的數(shù)組,在a函數(shù)運(yùn)行期間可以被其他函數(shù)調(diào)用,但是當(dāng)a函數(shù)結(jié)束后,就不能被其他函數(shù)調(diào)用。傳統(tǒng)方式定義的數(shù)組不能跨函數(shù)使用。為什么需要?jiǎng)討B(tài)內(nèi)存分配:動(dòng)態(tài)內(nèi)存就像個(gè)救世主一樣很好的解決了傳統(tǒng)數(shù)組的缺陷。(靜態(tài)數(shù)組)# include <stdio.h># include <malloc.h> /不能省 void f (int *q) *q = 200;printf ("%dn",*q);int main (void)int i = 5;int *p

27、 = (int *)malloc(4);/一共分配了8個(gè)字節(jié) /*1;要是用這個(gè)函數(shù)必須添加頭文件 2;malloc函數(shù)只有一個(gè)形參,并且形參是整形3;4表示請(qǐng)求系統(tǒng)為本程序分配四個(gè)字節(jié)*4;malloc函數(shù)會(huì)為我們分配若干字節(jié),只能返回第一個(gè)字節(jié)的地址5;8行分配了八個(gè)字節(jié),p變量站四個(gè)字節(jié),p所指向的內(nèi)存也占四個(gè)字節(jié) 6;p本身所占的內(nèi)存是靜態(tài)分配的,p所指向的內(nèi)存是動(dòng)態(tài)的7;malloc返回的是他所分配的內(nèi)存的第一個(gè)字節(jié)的地址8;(int*) ,是強(qiáng)制類型轉(zhuǎn)換,是用來告訴別人這個(gè)地址所指向的數(shù)據(jù)時(shí)什么類型, */*p = 5;/*p代表的就是一個(gè)int變量,只不過*p這個(gè)整形變量的內(nèi)存分

28、配方式和第九行i變量的分配方式不同 / free (p); printf ("tong zhi men hao !n");/p本身的內(nèi)存不能被釋放 f(p); return 0;動(dòng)態(tài)內(nèi)存分配舉例-動(dòng)態(tài)數(shù)組的構(gòu)造:1:malloc函數(shù)的使用:malloc 是memory內(nèi)存allocate分配)的縮寫。#include<stdio.h>#include <malloc.h>int main ()int *p ;int len ;int i ;printf ("輸入一個(gè)數(shù):");scanf ("%dn",&len);p = (int *)malloc(4*len);for (i = 0 ;i < len ;i+)printf ("請(qǐng)輸入Len個(gè)數(shù):n");scanf ("%dn",pi);pi = pi+5; for (i = 0;i<len;i+)printf ("一位數(shù)組改為:%dn",pi);return 0; #include <stdio.h>#include <malloc.h>int main ()int *p ;int

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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)論