c語言基礎(chǔ)學(xué)習(xí)

#C語言的基礎(chǔ)學(xué)習(xí)

標(biāo)簽: c語言 數(shù)據(jù)類型 基本程序

第一章:C程序初步學(xué)習(xí)

1.怎么去編譯C程序

gcc xx.c 會(huì)在當(dāng)前目錄下默認(rèn)生成一個(gè)a.out可執(zhí)行文件

gcc xx.c -o xx(自己隨便命名) 會(huì)在當(dāng)前目錄下生成一個(gè)xx可執(zhí)行文件

gcc xx.c -o xx -g -Wall 監(jiān)聽整個(gè)C程序的警告,并會(huì)在當(dāng)前目錄下生成一個(gè)xx可執(zhí)行文件

注意點(diǎn):只要對C程序進(jìn)行了修改谆沃,都要對其進(jìn)行g(shù)cc編譯钝凶,重新產(chǎn)生可執(zhí)行文件

2.注釋

1>注釋存在的意義

(1)讓別人知道該C程序的所屬對象,將來便于合作開發(fā)

(2)標(biāo)注代碼的功能管毙,便于將來再次開發(fā)

(3)注釋代碼腿椎,將當(dāng)前被注釋的代碼不會(huì)被運(yùn)行

2>注釋有哪些

(1)單行注釋://被注釋的內(nèi)容

(2)多行注釋:/被注釋的內(nèi)容/

(3)塊注釋:/被注釋的內(nèi)容/

問題://被注釋的內(nèi)容//這種寫法是錯(cuò)的

原因:第一個(gè)/會(huì)與碰到的第一個(gè)*/進(jìn)行匹配

3.常量

0>常量的特點(diǎn)

(1)不可變

(2)常量不可以作為左操作數(shù)

1>常量有哪些?

(1)整型常量:1 2 3

(2)浮點(diǎn)常量:1.2 1.0

(3)字符常量:‘1’ ‘a(chǎn)’

(4)字符串:“1” “hello”

(5)地址常量:0x01 0x02

注意點(diǎn):

(1)浮點(diǎn)常量分為單精度和雙精度1.2f — 1.2d

(2)字符常量必須要用’’括起來夭咬,里面有且只能有一個(gè)字符

(3)字符串常量必須要用””括起來

2>地址常量

實(shí)際上就是一個(gè)變量在內(nèi)存當(dāng)中存儲(chǔ)的地址,將來可以通過地址去訪問變量里面的內(nèi)容

計(jì)算機(jī)存儲(chǔ)的最小單位是字節(jié)铆隘;Byte

1M=1024KByte

1KByte=1024Byte

1Byte=8bit

4.hello world第一個(gè)程序

(1)一個(gè)程序有且只能有一個(gè)main函數(shù)(入口)

(2)main函數(shù)很特殊卓舵,int可以省略,但是不建議(有些編譯不支持這么寫)

(3)main函數(shù)可以有return,可以沒有return,其他函數(shù)就不一樣

(4)標(biāo)準(zhǔn)的main函數(shù)寫法

intmain(intargc,char*argv[]){}

5.#incude相當(dāng)于一個(gè)圖書館膀钠,里面有很多函數(shù)的聲明

5.進(jìn)制

1>進(jìn)制有哪些掏湾?

十進(jìn)制: 09

八進(jìn)制:以0開頭 07

十六進(jìn)制:0x開頭 0X 0f

a:10

b:11

c:12

d:13

e:14

f:15

二進(jìn)制:0b 0B開頭 01

2>十進(jìn)制轉(zhuǎn)換成其他進(jìn)制

十進(jìn)制這個(gè)數(shù)不斷地除以轉(zhuǎn)成的進(jìn)制,不斷的用商再除肿嘲,倒著拿到余數(shù)就是這個(gè)進(jìn)制的數(shù)據(jù)

16/2=8…0

8/2=4…0

4/2=2..0

2/2=1..0

1/2=0…1

0B10000==16

5.變量

1>變量的特點(diǎn)

可變的

2>數(shù)據(jù)類型

int:整數(shù)類型

char:字符類型

float:單精度的浮點(diǎn)類型

double:雙精度的浮點(diǎn)類型

3>變量的定義(產(chǎn)生)

(1)格式:數(shù)據(jù)類型 + 變量名;

inta;charch;floatf;doubled;

(2)多個(gè)變量的定義

inta,b,c;floata,b,c;

4>數(shù)據(jù)類型的作用

就是標(biāo)識(shí)某個(gè)變量的類型融击,將來存儲(chǔ)什么類型的常量

5>代碼塊的作用

(1){}就是一個(gè)代碼塊

(2)指明某個(gè)變量的使用范圍

(3)在同一個(gè)代碼塊里面不能有相同的變量名

6.格式化輸出函數(shù)

printf:print formatter

1>占位符

%d:是替整型數(shù)據(jù)占的位置

%f:是替浮點(diǎn)數(shù)占的位置

%c:是替字符類型占的位置

%p:是替地址占的位置

2>注意點(diǎn):

(1)printf里面的參數(shù)要占位符要和實(shí)際數(shù)據(jù)類型保持一致,而且個(gè)數(shù)也要保持一致

(2)printf實(shí)際上是打印第一個(gè)字符串雳窟,說白了尊浪,就是碰到\0就不再打印了

3>打印特殊字符

\:\

“:\”

‘:\’ ,’

%:%%

4>輸出格式的控制

%m.nf:

n:代表輸出來的浮點(diǎn)數(shù)小數(shù)點(diǎn)后面占幾位

m:指的是整個(gè)浮點(diǎn)數(shù)的寬度,算小數(shù)點(diǎn)

m<=n+1+整數(shù)部分實(shí)際的位數(shù)封救,m無效

m>n+1+整數(shù)部分實(shí)際的位數(shù),m才有效拇涤,左邊空出空格填充

%m.nf

%md

%mc

5>單精度和雙精度的區(qū)別

float類型的數(shù)據(jù):精度保留有效數(shù)字7位

double類型的數(shù)據(jù):精度保留有效數(shù)字16位

floatf=123456789.0;printf("%f\n",f);doubled=1234567890123456489.0;printf("%f\n",d);

7.標(biāo)識(shí)符的命名規(guī)范

1>硬性規(guī)范

(1)只能由數(shù)字,字母誉结,下劃線組成

(2)不能由數(shù)字開頭

(3)不能與C語言關(guān)鍵字相同

2>建議規(guī)范

(1)不準(zhǔn)用拼音鹅士,多查字典

(2)盡量使用駝峰或者是下劃線分割單詞

(3)見名知義

8.格式化輸入函數(shù)

scanf:scan formatter

(1)用法:是將輸入緩存區(qū)里面的變量,找到變量的地址惩坑,將值給這個(gè)變量

(2)輸入輸出緩存區(qū):\n有強(qiáng)制刷新緩存區(qū)的作用

(3)輸入多個(gè)變量

scanf(“%d%d”,&a,&b);

(4)注意點(diǎn)

不要在scanf里面做太多的動(dòng)作

不要在scanf里面加\n

(5)吸收輸入緩存區(qū)里面的回車殘留

示例代碼:

#includeintmain(){inta;charch;chartemp;//temp只是去吸收\nscanf("%d",&a);//1.scanf("%c",&temp);//2.getchar();默認(rèn)//3.getc(stdin);? ? 需要指定的到哪邊拿scanf("%c",&ch);printf("a=%d\nch=%c\n",a,ch);return0;}

9.字符輸入輸出函數(shù)

(1)輸入:getchar(),從鍵盤讀入一個(gè)字符

(2)輸出:putchar(字符)掉盅,

示例代碼:

#includeintmain(){charch=getchar();putchar(ch);putchar('\n');return0;}

第二章:數(shù)據(jù)操作

1.算數(shù)運(yùn)算符

+,- , * ,/,% ++ —

%:左右兩邊的操作數(shù)必須是整數(shù)

前綴++

示例代碼:

intmain(){inta=1;intc=++a;//a=a+1,c=a;printf("c=%d\na=%d\n",c,a);return0;}

后綴++

示例代碼:

#includeintmain(){inta=1;intc=a++;//c=a,a=a+1printf("c=%d\na=%d\n",c,a);return0;}

2.位運(yùn)算符

數(shù)據(jù)在計(jì)算機(jī)當(dāng)中是以二進(jìn)制進(jìn)行存儲(chǔ)的以舒,是以二進(jìn)制的補(bǔ)碼存在的

數(shù)據(jù)以補(bǔ)碼存儲(chǔ)趾痘,原碼輸出

(1)正數(shù)的原碼,反碼稀轨,補(bǔ)碼

正數(shù)的原碼

反碼:和原碼相同

補(bǔ)碼:和原碼相同

(2)負(fù)數(shù)的原碼扼脐,反碼,補(bǔ)碼

負(fù)數(shù)的原碼

反碼:符號(hào)位不變,后面依次取反瓦侮,0->1 1->0

補(bǔ)碼:反碼的基礎(chǔ)之上加1

(3)1+(-1)=0 ?

假設(shè):如果數(shù)據(jù)在計(jì)算機(jī)內(nèi)存中是原碼存儲(chǔ)的艰赞?

1:0000 0001

-1:1000 0001

1+(-1)=-2;

結(jié)論:上面的假設(shè)不成立

1

原碼:0000 0001

反碼:0000 0001

補(bǔ)碼:0000 0001

-1:

原碼:1000 0001

反碼:1111 1110

補(bǔ)碼:1111 1111

1補(bǔ)碼:0000 0001

-1補(bǔ)碼:1111 1111

結(jié)果:10000 0000

1+(-1)=0;

(4)位運(yùn)算符有哪些?

|:位或肚吏,只要有1就為1

&:位與方妖,只要有0就為0

^:異或,只要不同就為1

~:取反

<<:左移

:右移

3.關(guān)系運(yùn)算符

在計(jì)算機(jī)當(dāng)中罚攀,0在邏輯上表示為假党觅,1表示為真

>=,<=,==,>,<,!=

4.邏輯運(yùn)算符

&&:而且? ,事件1&&事件2,兩個(gè)事件都要成立整個(gè)事件才會(huì)成立||:或者, 事件1? ||? 事件2,? 兩個(gè)事件當(dāng)中只要有一個(gè)事件成立斋泄,整個(gè)事件才成立!:非杯瞻,!事件,如果事件成立炫掐,整個(gè)事件就不成立

注意點(diǎn):

事件1&&事件2魁莉;如果事件1不成立,事件2不會(huì)被判斷

示例代碼:

#includeintmain(){inta=2,b=8,c=9;intres=a>b&&c++;printf("%d-%d\n",res,c);return0;}

事件1 || 事件2募胃;如果事件1成立旗唁,事件2不會(huì)被判斷

示例代碼

#includeintmain(){inta=2,b=8,c=9;intres=a

5.取地址符

&a;

6.計(jì)算數(shù)據(jù)類型的字節(jié)大小

sizeof(數(shù)據(jù)類型/變量名);

int:4char:1float:4double:8

注意點(diǎn):

(1)在32位機(jī)里面,long , 指針類型是占4個(gè)字節(jié)

(2)在64位機(jī)里面痹束,long , 指針類型是占8個(gè)字節(jié)

7.三目運(yùn)算符

(a>b)?a:b

求取a检疫、b中的最大值

#includeintmain(){inta,b,max;printf("input there number:\n");scanf("%d %d %d",&a,&b,&max);printf("%d\n",(a>b?a:b)>max?(a>b?a:b):max);return0;}

8.運(yùn)算符的優(yōu)先級(jí)

預(yù)算符的優(yōu)先級(jí)表

1.()[].->算數(shù)運(yùn)算符->關(guān)系運(yùn)算符->邏輯運(yùn)算符&& ||->賦值運(yùn)算符

2.單目運(yùn)算符->雙目運(yùn)算符->三目運(yùn)算符->賦值運(yùn)算符

9.數(shù)據(jù)精度轉(zhuǎn)換

1.準(zhǔn)則

計(jì)算機(jī)只計(jì)算相同類型的數(shù)據(jù)祷嘶,類型不同屎媳,計(jì)算機(jī)內(nèi)部自行轉(zhuǎn)換

char->short->int->float->double

2.強(qiáng)制類型轉(zhuǎn)換: (數(shù)據(jù)類型) 變量

不會(huì)改變變量本身的數(shù)據(jù)類型,只會(huì)轉(zhuǎn)換變量指向的值

強(qiáng)制類型轉(zhuǎn)換盡量避免高精度向低精度轉(zhuǎn)換抹蚀,會(huì)造成精度的損失

第三章 三大流程控制

1.順序流程控制

順序執(zhí)行

2.條件流程控制

if(條件語句)

{

執(zhí)行語句1剿牺;

}

else

{

執(zhí)行語句2;

}

1.if的條件語句常將常量放置在左邊

2.如果if环壤、else只執(zhí)行一句代碼晒来,可省略大括號(hào)

實(shí)例如下:

#includeintmain(intargc,char*argv[]){inta;scanf("%d",&a);if(!(a&1))printf("%d是一個(gè)偶數(shù)\n",a);elseprintf("%d是一個(gè)奇數(shù)\n",a);return0;}

3.ASCII

特殊的字符:A:65 a:97 ‘\0’:0 空格:

#includeintmain(intargc,char*argv[]){charch;printf("input a char:\n");? ? ch=getchar();if(ch>=65&&ch<=90)? ? {printf("你輸入的大寫字母\n");printf("你輸入的字母的小寫為:%c\n",ch+32);? ? }else{printf("你輸入的小寫字母\n");printf("你輸入的字母的大寫為:%c\n",ch-32);? ? }return0;}

示例代碼:

#includeintmain(){? /* char ch;printf("input a char:\n");? ? ch=getchar();if(ch>=65&&ch<=90)? ? {printf("你輸入的大寫字母\n");printf("你輸入的字母的小寫為:%c\n",ch+32);? ? }elseif(ch>='a'&&ch<='z')? ? {printf("你輸入的小寫字母\n");printf("你輸入的字母的大寫為:%c\n",ch-32);? ? }else{printf("你輸入的非字母!\n");? ? }*/? ? int a,b,max;printf("input two number:\n");? ? scanf("%d %d",&a,&b);? ? /*if(a>b)printf("%d and %d 的較大值%d\n",a,b,a);elseprintf("%d and %d 的較大值%d\n",a,b,b);? ? ? */printf("%d\n",a>b?a:b);return0;}

示例代碼:

#includeintmain(intargc,char*argv[]){intsales;scanf("%d",&sales);printf("your sales is %.2f\n",sales<=1000?sales:(sales-(sales-1000)*0.05));}

4.switch-case

swith(變量)

{

case 常量1:

語句塊郑现;

break湃崩;

case 常量2:

語句2;

break接箫;

........

default:

break;

}

//銀行ATM的功能仿真#include#includeintmain(intargc,char*argv[]) {//switch()//case 1;的使用intselect_num=0;intaccount_money=10000;intcaozuo_money;intmima=123;intmima_put=0;while(1)? ? {printf("? ? 銀行的菜單選擇? \n");printf("? ? 1.取錢? \n");printf("? ? 2.存錢? \n");printf("? ? 3.余額查詢? \n");printf("? ? 4.密碼的重新輸入? \n");printf("? ? 0.退出? \n");printf("? ? 請輸入你需要選擇的功能的編碼(0-4):? \n");scanf("%d",&select_num);switch(select_num)? ? {case2://stemaname;printf("? ? 請輸入你需要存錢的金額:? \n");printf("? ? 輸入金額必須是100的整數(shù)倍:? \n");scanf("%d",&caozuo_money);if(caozuo_money>0&&caozuo_money%100==0)? ? ? ? {? ? ? ? ? account_money=account_money+caozuo_money;? ? ? ? }elseprintf("你輸入的金額有誤\n");printf("\n");break;case1://stemaname;printf("? ? 請輸入你取錢的金額:? \n");printf("? ? 輸入金額必須是100的整數(shù)倍:? \n");scanf("%d",&caozuo_money);if(account_money0&&caozuo_money%100==0)? ? ? ? ? account_money=account_money-caozuo_money;elseprintf("你輸入的金額有誤\n");printf("\n");break;case3://stemaname;printf("? ? 你當(dāng)前賬戶的余額為:%d? \n",account_money);printf("\n");break;case4://stemaname;printf("? ? 重新輸入密碼:? \n");scanf("%d",&mima_put);if(mima_put==mima)printf("? 密碼正確\n");elseprintf("? ? 密碼錯(cuò)誤\n");printf("\n");break;case0://stemaname;//printf("? ? 選擇密碼重新輸出? \n");//調(diào)用exit函數(shù)完成這個(gè)程序的正常退出exit(0);default:break;? ? }? ? }printf("感謝你的使用攒读,歡迎下次光臨郵政銀行!\n");return0; }

note:

1.decault 代表case外的其他情況辛友;

2.case語句內(nèi)不允許定義變量(需要定義時(shí)薄扁,請加大括號(hào))剪返;

3.case,default后需break跳出;

4.case可以不加{}邓梅,而執(zhí)行多條語句脱盲;

5.switch不建議定義變量;

3.循環(huán)流程控制

1.while循環(huán)

1.while循環(huán)

while(條件){? ? 代碼塊日缨;}

2.do-while循環(huán)

do{? ? 代碼塊钱反;}while(條件);

note:

1.循環(huán)次數(shù)編寫時(shí)不確定的情況處理匣距;

2.當(dāng)while的條件相同時(shí)面哥,do-while比while多執(zhí)行一次;

3.do-while:先執(zhí)行后判斷或語句至少執(zhí)行一次毅待;

2.for循環(huán)

for(初始賦值尚卫;條件判斷;條件變化)

{

語句塊恩静;

}

注意1

1.初始賦值語句只執(zhí)行一次焕毫;

2.條件判斷成立,執(zhí)行語句塊驶乾,執(zhí)行完畢,再執(zhí)行條件變化循签,進(jìn)行條件判斷级乐;

3.條件不成立,執(zhí)行循環(huán)后的語句县匠;

注意2

for循環(huán)內(nèi)的三個(gè)語句都可省略风科,但是;不能省略

3.循環(huán)

注意循環(huán)的條件乞旦,避免死循環(huán)的產(chǎn)生贼穆;

while(1)常用于構(gòu)建不退出系統(tǒng),如單片機(jī)兰粉、嵌入式設(shè)備的主界面故痊;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市玖姑,隨后出現(xiàn)的幾起案子愕秫,更是在濱河造成了極大的恐慌,老刑警劉巖焰络,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件戴甩,死亡現(xiàn)場離奇詭異,居然都是意外死亡闪彼,警方通過查閱死者的電腦和手機(jī)甜孤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人缴川,你說我怎么就攤上這事茉稠。” “怎么了二跋?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵战惊,是天一觀的道長。 經(jīng)常有香客問我扎即,道長吞获,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任谚鄙,我火速辦了婚禮各拷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘闷营。我一直安慰自己烤黍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布傻盟。 她就那樣靜靜地躺著速蕊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪娘赴。 梳的紋絲不亂的頭發(fā)上规哲,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機(jī)與錄音诽表,去河邊找鬼唉锌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛竿奏,可吹牛的內(nèi)容都是我干的袄简。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼泛啸,長吁一口氣:“原來是場噩夢啊……” “哼绿语!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起平痰,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤汞舱,失蹤者是張志新(化名)和其女友劉穎樟澜,沒想到半個(gè)月后谈宛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蹄衷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年赔蒲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了泌神。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片良漱。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖欢际,靈堂內(nèi)的尸體忽然破棺而出母市,到底是詐尸還是另有隱情,我是刑警寧澤损趋,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布患久,位于F島的核電站,受9級(jí)特大地震影響浑槽,放射性物質(zhì)發(fā)生泄漏蒋失。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一桐玻、第九天 我趴在偏房一處隱蔽的房頂上張望篙挽。 院中可真熱鬧,春花似錦镊靴、人聲如沸铣卡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽煮落。三九已至,卻和暖如春踊谋,著一層夾襖步出監(jiān)牢的瞬間州邢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工褪子, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人骗村。 一個(gè)月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓嫌褪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親胚股。 傳聞我的和親對象是個(gè)殘疾皇子笼痛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 數(shù)據(jù)類型轉(zhuǎn)換: 1.當(dāng)賦值符號(hào)兩邊的數(shù)據(jù)類型不同的時(shí)候,數(shù)據(jù)類型轉(zhuǎn)換是自動(dòng)的,不需要程序員插手 當(dāng)給 int 類型...
    Munin_閱讀 812評論 0 2
  • 1.編譯程序(1)gcc xx.c,他會(huì)默認(rèn)生成一個(gè)a.out的可執(zhí)行文件,在a.out所在目錄琅拌,執(zhí)行./a.o...
    萌面大叔2閱讀 1,284評論 0 1
  • 小米從小到大都喜歡聽故事缨伊,說是故事,其實(shí)是爺爺奶奶或者是周圍鄰居講述的自己的親身經(jīng)歷进宝,有凄涼悲慘的刻坊,也有幽默風(fēng)趣的...
    Wangmelissa閱讀 595評論 0 0
  • 早上好#易效能 # 蔣小園 2017/09/25(312/500) 【不忘初心,堅(jiān)持始終】 健康:作息《昨晚今早》...
    圓圓jXY閱讀 195評論 0 0
  • 這算是一篇遲到的紀(jì)念文吧 今天是1.16党晋,2017.說起來我10.8的時(shí)候在干什么呢 記不大清了 或許這三年都能用...
    苓央閱讀 108評論 0 0