C語言基礎(chǔ)知識(上)

#C語言基礎(chǔ)知識

一、簡單程序的的一般形式? #include//標(biāo)準(zhǔn)輸入輸出文件,讓當(dāng)前文件有文件的功能

//main函數(shù)是程序的入口,一個(gè)程序有且只有一個(gè)main函數(shù)

二粒没、基本數(shù)據(jù)類型

1、整型

(1)short 短整數(shù)類型簇爆,占兩個(gè)字節(jié)癞松,取值范圍,五位數(shù)

1)無符號類型(不包含負(fù)整數(shù))

2)有符號類型(包含負(fù)整數(shù))

(2)int 整數(shù)類型入蛆,占四個(gè)字節(jié)响蓉,取值范圍,十位數(shù)

(3)long 長整型哨毁,32位的系統(tǒng)占四個(gè)字節(jié)厕妖,64位的系統(tǒng)占八個(gè)字節(jié),取值范圍挑庶,超過十位數(shù)

2、浮點(diǎn)型

(1)float 單精度浮點(diǎn)數(shù)類型软能,占四個(gè)字節(jié)迎捺,6位有效數(shù)字

(2)double 雙精度浮點(diǎn)類型,占八個(gè)字節(jié)查排,15位有效數(shù)字

注:系統(tǒng)默認(rèn)類型是double類型凳枝,在使用float類型時(shí),需要在數(shù)字后面加f

3跋核、字符型

(1)char占一個(gè)字節(jié)岖瑰,單引號括起來

(2)用以存儲字符或標(biāo)點(diǎn)等字符

(3)字符在計(jì)算機(jī)中采用二進(jìn)制的ASCII碼存儲,字符可以通過對應(yīng)的ASCII碼值來比較大小

4砂代、總結(jié)

(1)整型有四種類型蹋订,short兩個(gè)字節(jié),五位數(shù) int四個(gè)字節(jié)刻伊,十位數(shù) long超過十位數(shù)

(2)浮點(diǎn)型有兩種露戒,float四個(gè)字節(jié)椒功,6位有效數(shù)字 double8個(gè)字節(jié),15位有效數(shù)字(系統(tǒng)默認(rèn)的是double類型)

(3)char用于存儲字符及標(biāo)點(diǎn)

三智什、常量动漾、變量

1. 常量:程序運(yùn)行期間值不能被改變的值

比如:

3

5

2.3

'R'

2. 變量:程序運(yùn)行期間值能被改變的值

1) 變量代表一個(gè)存儲區(qū)域

2) 存儲區(qū)域內(nèi)存儲的內(nèi)容就是變量的值

3) 變量的值可以在程序運(yùn)行期間改變

3. 變量的定義

1) 變量定義

格式

數(shù)據(jù)類型 變量名 = 初始值;

int age = 25;

int 指整數(shù)類型

age 指變量名

=? 指將后面的初始值賦給變量

25? 指初始值

;? 指語句結(jié)束

2) 變量荠锭、常量命名規(guī)則

1. 只能由數(shù)字旱眯、字母、下劃線組成证九,并且不能以數(shù)字開頭

2. 不可以與系統(tǒng)保留字同名

3. 見名知意

4. 不能使用重復(fù)的變量名

5. 駝峰命名法(myTom)

四删豺、運(yùn)算符

1. 賦值運(yùn)算符

用于給變量賦值,將等號右邊的值賦給等號左邊的變量

練習(xí):如何交換兩個(gè)int型變量的值

int a=1,b=2,c;

c=a;

a=b;

b=c;

2. 算術(shù)運(yùn)算符

+? -? *? /? %

1) 除號右邊的數(shù)字不能為0

2) 取余運(yùn)算符兩邊必須都是整數(shù)

3) 兩個(gè)整數(shù)相除甫贯,得到的是整數(shù)

4) 小數(shù)和整數(shù)相除吼鳞,得到的小數(shù)

++? --

1) ++或--在前,先執(zhí)行++或--叫搁,后運(yùn)算(先加后用)

2) --或++在后赔桌,先運(yùn)算,后執(zhí)行++或--(先用后加)

3. 復(fù)合運(yùn)算符

+=? -=? *=? /=? %=

1) a += b; ==> a = a+b;

2) a -= b; ==> a = a-b;

....

4. 條件運(yùn)算符

格式: 條件表達(dá)式 渴逻? 真結(jié)果表達(dá)式 : 假結(jié)果表達(dá)式

比如:

int a = 3;

int b = 5;

int c = 0;

c = a > b ? a : b;

附加:

int a=1; (char result;)

(char)result =a == 1 ? 'b' : 'c';

printf("%c\n",result+a);

5. 總結(jié):必須掌握的內(nèi)容

1) =? ? +=

2) ++? --

3) 條件運(yùn)算符

4) == 兩個(gè)等號是判斷

五. 表達(dá)式

1. 常量疾党、變量、運(yùn)算符的組合

2. 每個(gè)表達(dá)式都會有運(yùn)算結(jié)果

3. 例如: 3+5惨奕, a+b

4. 語句雪位,用結(jié)束處的一個(gè)分號表示,語句是程序執(zhí)行的最小單位

六. 輸入梨撞、輸出函數(shù)

1. 輸出函數(shù) printf()

1) printf函數(shù)被設(shè)計(jì)用于顯示格式串雹洗,并在該串中的指定位置插入可能的值

2) 格式:

printf("格式串",表達(dá)式1,表達(dá)式2,...);

3) 格式串中包含普通字符和轉(zhuǎn)換說明

1. 轉(zhuǎn)換說明以字符%開頭。是用來表示打印過程中待填充的占位符卧波,如果后面跟的是d,表明打印時(shí)要在這個(gè)位置打印出一個(gè)整形數(shù)據(jù)时肿。

2. 普通字符,會將普通字符完整的打印出來

4) 轉(zhuǎn)換說明符

%d 整型

%hd 短整型

%ld 長整形

%f 單港粱、雙精度浮點(diǎn)數(shù)

%c 字符

5) 格式轉(zhuǎn)換控制

printf("%04d",12) 最小字段占四個(gè)位置螃成,不足用0補(bǔ)齊,如果不加0試試效果

printf("%-4d",112);最小字段寬度占四個(gè)位置查坪,左對齊

printf("%4.2f",1.2345);

最小字段寬度占四個(gè)位置寸宏,保留小數(shù)點(diǎn)后兩位

注:

\n換行 %與d之間的數(shù)字,表明打印的這個(gè)數(shù)字要占相應(yīng)的位數(shù)

int a=1;? ? char result;

result = a == 1 ? 'b' : 'c';

printf("%-3c\n",result);

//在float類型中偿曙,%與d之間的數(shù)字氮凝,整數(shù)部分代表總共占的位數(shù),小數(shù)點(diǎn)后面的代表小數(shù)所占得位數(shù)

float a = 1.6f;

printf("%4.1f\n",a);

6) 轉(zhuǎn)義序列

\n? 回車符

\\? 打印\

%%? 打印%

\‘? 打印’

2. 輸入函數(shù) scanf()

1) scanf以回車確定輸入結(jié)束望忆,并且只接受大鍵盤的回車覆醇,不接受小鍵盤的回車

2) scanf("%d,%d",&num1,&num2); 輸入的時(shí)候兩個(gè)整型數(shù)之間必須有『朵纷,』,格式串中除了轉(zhuǎn)換說明的其他字符都要從控制臺輸入

3) 不要在格式串后面加『\n』字符,會抵消掉人工輸入的回車

#分支語句(布爾類型永脓、關(guān)系運(yùn)算符袍辞、邏輯運(yùn)算符、if語句分支常摧、switch語句搅吁、枚舉)

一.布爾類型 ? ? ? ??

1.只有兩種真和假? ??

?2.賦值true和非0的值 為真? ??

?3.賦值0 為假 (只有0和false為假)? ??

4.Xcode默認(rèn)沒有布爾類型,需要導(dǎo)入文件落午,需要導(dǎo)入<stdboll.h>頭文件

例:

//? ? bool k = false;

//? ? printf("k = %d\n",k);

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

> >= < <= == !=

他們最終結(jié)果一般使用布爾類型的變量來接收

例:

//? ? bool result = 5==6;

//? ? printf("result = %d\n",result);

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

邏輯與 && (全真為真)

邏輯或 || (一真為真)

邏輯非 !? (取反值)

例:

//? ? bool result = 8>6 && 6>3;

//? ? printf("result = %d\n",result);

//

//? ? bool result1 = true;

//? ? result1 = !result1;

//? ? printf("result1 = %d\n",result1);

四.if語句分支

if(判斷條件){

執(zhí)行語句;(條件為真時(shí)執(zhí)行語句)

}

else if(判斷條件){

執(zhí)行語句;

}

else

執(zhí)行語句;

例:

char a = ' ';

printf("輸入一個(gè)字符:");

scanf("%c",&a);

if (48 <= a && a <= 57) {

printf("This is a number\n");

}

else if (97 <= a && a <= 122) {

printf("This is a lower\n");

}

else if (65 <= a && a <= 90) {

printf("This is a upper\n");

}

else{

printf("no know\n");

}

switch語句

/*

多重選擇,比if-else判斷條件多

格式:switch(表達(dá)式){

case 可能的值:{

執(zhí)行語句:

}break;

case 可能的值:{

執(zhí)行語句:

}break;

default:{

}break;

}

五.switch語句

多重選擇,比if-else判斷條件多

格式:switch(表達(dá)式){

case 可能的值:{

執(zhí)行語句:

}break;

case 可能的值:{

執(zhí)行語句:

}break;

default:{

}break;

}

六.枚舉

1.枚舉目的:提高程序的可讀性

2.枚舉一般放在頭文件下面,屬于全局常量

3.enum 枚舉名{ 枚舉值 = 0/a谎懦,枚舉值(默認(rèn)1或b),枚舉值(默認(rèn)2或c)溃斋,枚舉值(默認(rèn)3或d)界拦,}

例:

enum season{ sp=1, su, au, wi};

int a = 0;

printf("輸入一個(gè)數(shù)字:");

scanf("%d",&a);

switch (a) {

case sp :

printf("spring 春天\n");

break;

case su :

printf("summer 夏天\n");

break;

case au :

printf("autumn 秋天\n");

break;

case wi :

printf("winter 冬天\n");

break;

default:

printf("不知道是哪天\n");

break;

#.循環(huán)語句(while循環(huán)、do...while循環(huán)梗劫、break,continue享甸、for循環(huán))

循環(huán):滿足條件時(shí),反復(fù)執(zhí)行的某一動作

while(較常用)

do..while (不常用)

for (最常用)

1.while循環(huán)

格式:

while(判斷條件){

循環(huán)語句;

}

只要條件成立,循環(huán)體會一直執(zhí)行

循環(huán)體執(zhí)行結(jié)束,會重新判斷條件是否成立

例:

int a = 0;

scanf("%d",&a);

while (a > 6) {

printf("never give up");

}

2.do...while循環(huán) (直到型循環(huán))

先執(zhí)行一次循環(huán)體梳侨,再進(jìn)行判斷蛉威,成立會繼續(xù)執(zhí)行

格式:

do{

循環(huán)體;

}while(判斷條件);

例:

輸出1到100

int i = 1;

do {

printf("%3d",i);

i++;

} while (i<=100);

3.break,continue

break: 跳出while循環(huán) (結(jié)束的是整個(gè)循環(huán),不再往下執(zhí)行)

continue: 結(jié)束本次循環(huán) (結(jié)束的是這次循環(huán),continue下面未執(zhí)行的循環(huán)語句也結(jié)束,重新判斷條件)

例:

int i = 0;

while (1) {

if (i==100) {

break;//結(jié)束整個(gè)循環(huán)

} i++;

if (i==9) {

continue;//結(jié)束的是本次循環(huán),及i=9時(shí)這次循環(huán)

}

printf("%d\n",i);

}

4.for循環(huán)

for(初始值;判斷條件;讓初始值自加或自減)

{

循環(huán)語句;

}

1.首先確定初始值,確定循環(huán)的起始點(diǎn)

2.看判斷條件,條件成立,執(zhí)行循環(huán)體;不成立,直接跳出for循環(huán)

3.循環(huán)體結(jié)束后,看自加或自減

4.自加或自減后,判斷條件是否成立;成立,執(zhí)行循環(huán)體,不成立,跳出循環(huán)

例:

打印9x9乘法表

外層循環(huán)i表示要打印多少行,內(nèi)層循環(huán)j表示每行要打印多少個(gè)

for (int i = 1; i<10; i++) {

for (int j = 1; j<=i; j++) {

printf("%d*%d=%-3d ",j,i,i*j);

}

printf("\n");

}

例:S(n)=a+aa+aaa+aaaa+...+aaaa..(n個(gè)a)

int? a = 0, n = 0,S = 0,b = 0;

printf("輸入n和a的值:");

scanf("%d,%d",&n,&a);

for (int i = 1; i <=n;i++)

{

b = 10*b + a;

S +=b;

}

printf("%d",S);

printf("\n");

#一維數(shù)組,隨機(jī)數(shù)走哺,宏定義蚯嫌,冒泡排序

1.一維數(shù)組

數(shù)組:能夠存放多個(gè)同類型的數(shù)值,相當(dāng)于一個(gè)存放數(shù)值的容器

格式:int list[4] = {1,2,3,4};

數(shù)據(jù)類型 數(shù)組名 [數(shù)組容量] = {賦初值}丙躏;

例:

通過for循環(huán)改變下標(biāo)择示,從而有順序的輸出數(shù)組中的值

? int ageOfAll[6] = {1,2,3,4,5,6};

// int ageOfAll002 = ageOfAll[1];

ageOfAll[1] = 9;

//? printf("年齡是:%d\n",ageOfAll[1]);

for (int i =0; i<6; i++) {

int temp =ageOfAll[i];

printf("%d",temp);

}

例:

//創(chuàng)建一個(gè)數(shù)組,存放班里所有人的工號

? ?int number[12]={0};

printf("工號是:");

for (int i=0;i<12;i++) {

number [i]=i+1;

}

for (int i=0;i<12;i++) {

printf("%03d ",number[i]);

}

printf("\n");

2.宏定義

編譯時(shí)晒旅,系統(tǒng)會將宏定義的新值給宏定義的名字

格式:

#define 宏定義名字 宏定義要替代的內(nèi)容

例:

#define NUMBER 9 (NUMBER 指代的內(nèi)容就是9)

無參數(shù)的宏定義:

#define NUMBER 9

有參數(shù)的宏定義:

#define ADD(A,B) A+B

例:

#define TEST 90

#define? ADD(A,B) A+B

int a = TEST;

int sum = ADD(1,2);

printf("%d %d\n",a,sum);

3.隨機(jī)數(shù)? ? ?? ?

#define A 3? ??

int a[A] = {};? ??

printf("輸入數(shù)組a中的第一個(gè)值:");? ??

scanf("%d",&a[0]);? ??

printf("數(shù)組a中的第一個(gè)值是%d\n",a[0]);? ? ? ? ? ??

printf("輸入數(shù)組a中的第二個(gè)值:");? ??

scanf("%d",&a[1]);? ??

printf("數(shù)組a中的第二個(gè)值是%d\n",a[1]);? ? ? ??

printf("輸入數(shù)組a中的第三個(gè)值:");? ??

scanf("%d",&a[2]);? ??

printf("數(shù)組a中的第三個(gè)值是%d\n",a[2]);?


//通過for循環(huán)改變下標(biāo)栅盲,往數(shù)組里面依次輸入值? ? ? ? ??

#define A 3? //(宏定義)

int a[A] ={};

for (int index =0; index<A;index++){

printf("輸入第%d個(gè)值:",index+1);

scanf("%d",&a[index]);

}

//依次輸出數(shù)組里面的值

for (int index =0; index<A;index++) {

printf("第%d個(gè)值是:%d\n",index+1,a[index]);

}

#include<stdlib.h>//隨機(jī)數(shù)頭文件

例:

在數(shù)組a中放10個(gè)0-9的隨機(jī)數(shù)

產(chǎn)生10隨機(jī)數(shù),并打印出最大值

#define A 10? //(宏定義)

int a[A] ={};

//往數(shù)組里面放隨機(jī)值

for (int i=0; i<A;i++){

a[i] = arc4random()%10;

}

//找到數(shù)組中的最大值

int max =0;? ?

?for (int i =0; i<A;i++){

if (a[i]>max){

max=a[i];

}

}

//打印出數(shù)組

for (int i =0; i<A;i++){

printf("%4d",a[i]);

}

printf("\n最大值是:%d\n",max);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末敢朱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子摩瞎,更是在濱河造成了極大的恐慌拴签,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旗们,死亡現(xiàn)場離奇詭異蚓哩,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)上渴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門岸梨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來喜颁,“玉大人,你說我怎么就攤上這事曹阔“肟” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵赃份,是天一觀的道長寂拆。 經(jīng)常有香客問我,道長抓韩,這世上最難降的妖魔是什么纠永? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮谒拴,結(jié)果婚禮上尝江,老公的妹妹穿的比我還像新娘。我一直安慰自己英上,他們只是感情好炭序,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著善延,像睡著了一般少态。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上易遣,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天彼妻,我揣著相機(jī)與錄音,去河邊找鬼豆茫。 笑死侨歉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的揩魂。 我是一名探鬼主播幽邓,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼火脉!你這毒婦竟也來了牵舵?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤倦挂,失蹤者是張志新(化名)和其女友劉穎畸颅,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體方援,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡没炒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了犯戏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片送火。...
    茶點(diǎn)故事閱讀 40,852評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拳话,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出种吸,到底是詐尸還是另有隱情弃衍,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布骨稿,位于F島的核電站笨鸡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏坦冠。R本人自食惡果不足惜形耗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望辙浑。 院中可真熱鬧激涤,春花似錦、人聲如沸判呕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽侠草。三九已至辱挥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間边涕,已是汗流浹背晤碘。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留功蜓,地道東北人园爷。 一個(gè)月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像式撼,于是被迫代替她去往敵國和親童社。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評論 2 361

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

  • 第1章 第一個(gè)C程序第2章 C語言基礎(chǔ)第3章 變量和數(shù)據(jù)類型第4章 順序結(jié)構(gòu)程序設(shè)計(jì)第5章 條件結(jié)構(gòu)程序設(shè)計(jì)第6章...
    小獅子365閱讀 10,679評論 3 71
  • 數(shù)組在程序設(shè)計(jì)中,為了處理方便美浦, 把具有相同類型的若干變量按有序的形式組織起來弦赖。這些按序排列的同類數(shù)據(jù)元素的集合稱...
    朱森閱讀 3,944評論 2 13
  • 指針是C語言中廣泛使用的一種數(shù)據(jù)類型。 運(yùn)用指針編程是C語言最主要的風(fēng)格之一抵代。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu)腾节; ...
    朱森閱讀 3,451評論 3 44
  • C語言的學(xué)習(xí)要從基礎(chǔ)開始忘嫉,這里是100個(gè)經(jīng)典的算法-1C語言的學(xué)習(xí)要從基礎(chǔ)開始荤牍,這里是100個(gè)經(jīng)典的 算法 題目:...
    Poison_19ce閱讀 1,146評論 0 0
  • 一案腺、框架 1、Mac系統(tǒng)及常用工具康吵、進(jìn)制;C數(shù)據(jù)類型劈榨、常量變量、運(yùn)算符晦嵌、表達(dá)式同辣、格式化輸入輸出 2、關(guān)系運(yùn)算符惭载、邏...
    師景福閱讀 695評論 0 2