日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

C语言

發布時間:2024/6/21 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 C语言 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.結構化程序是由順序結構、選擇結構、循環結構三大結構組成。

2.讀程序時都要從main()入口,然后從main中第一行程序依次順序往下讀。

3.計算機數據在電腦中保存是以二進制的形式保存的。

4.bit是位,二進制中的0或1,byte是指字節,一個字節=八位。

5.編譯預處理不是C語言,不占運行時間,不要加分號。

6.define PI3.1415926;這個寫法是錯誤的,后面一定不能出現分號。

7.每個C語言程序中main函數有且只有一個。

8.在函數中不可以再定義函數,但是函數中可以再調用函數。

9.算法:可以沒有輸入,但是一定要有輸出。

10.break可用于循環結構和switch語句。

11.逗號運算符的級別最低,賦值的級別倒數第二。

C語言的基礎知識

第一節

1.C語言編寫的程序稱為源程序,又稱為編譯單位。

2.C語言書寫格式是自由的,每行可以多個語句,可以寫多行。

3.一個C語言程序有且只有一個main函數,是程序運行的起點。

第二節

1.VC是軟件,用來運行寫的C語言程序,上機考試系統是VC6.0

2.每個C語言程序寫完后,都是先編譯,后鏈接,最后運行。(.c-----.obj------.exe)這個過程中注意.c和.obj文件時無法運行的,只有.exe文件才可以運行。

第三節

1.標識符:合法的要求是由字母、數字、下劃線組成,并且第一個必須為字母或則是下劃線,不可以是數字。

2.標識符分為關鍵字、預定義標識符、用戶標識符

關鍵字:不可以作為用戶標識符,都是小寫。main、define、scanf、printf都不是關鍵字。迷惑你的地方if是可以作為用戶標識符。因為if中的第一個字母大寫了,所以不是關鍵字。第四節

第四節

1.十進制轉換

第五節

1.C語言中只有八、十、十六進制。但運行時,所有進制都要轉換成二進制來處理。

a.C語言中的八進制規定要以0開頭。018的數值是非法的,八進制不可以出現8

b.C語言中的十六進制規定要以0x開頭。要看懂0xff。

2.小數的合法寫法:C語言小數點兩邊有一個是零的話,可以不用寫。

a.1.0在C語言中可寫成”1.“

b.0.1在C語言中可以寫成“.1”

3.實型數據的合法形式:

(1)2.333e-1就是合法的,且數據是2.333×10-1

(2)考試口訣:e前e后必有數,e后必為整數。請結合書上的例子.

4、整型一般是4個字節, 字符型是1個字節,雙精度一般是8個字節:

long int x; 表示x是長整型。 unsigned int x; 表示x是無符號整型

第六節、第七節

核心:表達式一定有數值!

1.算術表達式:+,-,*,/,%,重點是/和%。

“/” 兩邊都是整型的話,結果取整。 3/2的結果就是1.

“/” 如果有一邊是小數,結果為小數。 3/2.0的結果就是0.5

“%” 符號請一定要注意是余數,考試最容易算成了除號。

“%”符號兩邊要求是整數。不是整數就錯了。

2.賦值表達式:賦值表達式的結果是最左邊的數值,a=b=5;該表達式為5,常量不可以賦值

1、int x=y=10:;錯啦,定義時,不可以連續賦值。

2、int x,y; x=y=10; 對滴,定義完成后,可以連續賦值。

3、int x=7.7; 對滴,x就是7。

4、float y=7; 對滴,x就是7.0。

5、賦值的左邊只能是一個變量。x+y=10;這個寫法是錯的。

3. 復合的賦值表達式:

int a=2;

a*=2+3;運行完成后,a的值是12。

一定要注意,首先要在2+3的上面打上括號。變成(2+3)再運算。

4、自加表達式:

自加、自減表達式:假設a=5,++a(是為6), a++(為5);

考試口訣:++在前先加后用,++在后先用后加。

5、逗號表達式:優先級別最低(表達式的數值逗號最右邊的那個表達式的數值)

(2,3,4)的表達式的數值就是4。取最右邊的值。

z=(2,3,4)(整個是賦值表達式) 這個時候z的值為4。

z= 2,3,4 (整個是逗號表達式) 這個時候z的值為2。

6、補充:

1、空語句不可以隨意執行,會導致邏輯錯誤。

2、注釋是最近幾年考試的重點,注釋不是C語言,不占運行時間,沒有分號。不可以嵌套!

3、強制類型轉換:

a、一定是(int)a不是int (a),注意類型上一定有括號的。

b、注意(int) (a+b) 和(int)a+b 的區別。 前是把a+b轉型,后是把a轉型再加b。

4、三種取整丟小數的情況:

1)int a =1.6;結果a為1

2)(int)a;整個數值取整

3)1/2; 3/2;0 和 1

第八節:

字符:有單單和轉義字符之分

1.字符數據的合法形式:單單(單引號里面單個字符)

“0”的ASCII數值表示為48,“a”的ASCII數值是97,“A”的ASCII數值是65.

2.轉義字符:單引號里面加上另外字母形成新的組合。

轉義字符分為一般轉義字符、八進制轉義字符。十六進制轉義字符。

3.字符型和整數是近親:兩個具有很大的相似之處。

第九節

1.例1: char a = 6, b; b = a<<2; 解題時:先要把a化成二進制,再做位運算。

例2: 一定要記住,異或的位運算符號” ^ ”。0 ^ 1=1。0 ^ 0=0。

例3: 在沒有舍去數據的時候,<<左移一位表示乘以2;>>右移一位表示除以2。

第二章

第一節:數據輸出(一)(二)

1.使用printf和scanf函數時,要在最前面加上:#include“stdio.h”

2.printf可以可以只有一個參數,也可以有兩個參數

3.printf(“a=%d,b=%d”,12,34)記住:是將第二部分的12和34以第一部分的形式在終端顯示。

考試核心為:一模一樣在黑色屏幕上顯示為a=12,b=34

printf(“a=%d,
b=%d”,12,34)那么輸出的結果就是a=12

b=34

4.int x=017;(一定要弄清楚為什么是這個結果!過程很重要)

printf(“%d”, x); 15

printf(“%o”, x); 17

printf(“%#o”,x); 017

printf(“%x”, x); f

printf(“%#x”,x); 0xf

6.一定要背誦的

格式說明

表示內容

格式說明

表示內容

%d

整型 int

%c

字符 char

%ld

長整型 long int

%s

字符串

%f

浮點型float

%o

不帶前導0八進制

%lf

浮點型double

%#o

帶前導0的八進制

%%

輸出一個百分號

%x

不帶前導0x十六進制

%5d

輸出要求有五位

%#x

帶前導0x的十六進制

7.舉例說明:

printf(“%2d”,123 );第二部分123有三位,大于第一部分指定的兩位,原樣輸出123

printf(“%5d”,123 );第二部分123有三位,小于第一部分指定的五位,左邊補兩個空格123

printf(“%10f”,1.25 );小數要求補足6位的,沒有六位的補0,。結果為1.250000

printf(“%5.3f”,1.25 );第一部分指定小數三位,整個五位,結果為1.250(小數點算一位) printf(“%3.1f”,1.25 );第一部分指定小數一位,整個三位,結果為1.3(要進行四舍五入)

第三節:數據輸入

1.scanf(“a=%d,b=%d”,&a,&b)(超級重點)

考試核心為:一模一樣。以第一個部分雙引號里面為輸入標準形式。

終端輸入為:a=12,b=34才可把12和34正確賦值給a和b。

2、scanf(“%d,%d”,x,y);

scanf的第二個部分一定要是地址(或是指針變量)!

scanf(“%d,%d”,&x,&y);注意寫成這樣正確!

3、特別注意指針在scanf的考察(近幾年重點)

例如: int x=2;int *p=&x; scanf(“%d”,x); 錯誤

scanf(“%d”,p);正確 scanf(“%d”,&p); 錯誤

scanf(“%d”,*p)錯誤

4、指定輸入的長度 (考試重點)

終端輸入:1234567 scanf(“%2d%4d%d”,&x,&y,&z);x為12,y為3456,z為7

終端輸入:1 234567 由于1和2中間有空格,所以只有1位給x

scanf(“%2d%4d%d”,&x,&y,&z); x為1 ,y為2345,z為67

5、字符和整型是近親:

int x=97; printf(“%d”,x); 結果為97

printf(“%c”,x); 結果為 a

6、輸入時候字符和整數的區別(考試超級重點)

scanf(“%d”,&x);這個時候輸入1,特別注意表示的是整數1

scanf(“%c”,&x);這個時候輸入1,特別注意表示的是字符?1?,ASCII為整數48。

7、補充說明:

1)scanf(“%d%d%*d%d”,&a,&b,&c); 跳過輸入的第三個數據。

2)putchar ,getchar 函數的考查。前是輸出一個字符,后是獲得一個字符。

3)交換兩個數 t=x;x=y;y=t。當成單詞去背。

第三章

特別要注意:

1、C語言中是用非0表示邏輯真,0表示邏輯假的。

2、C語言有構造類型,沒有邏輯類型。

3、關系運算符號:注意<=的寫法,==和=的區別!(考試重點)

4、if只管后面一個語句,要管多個,請用大括號!

1)關系表達式:

a、表達式的數值只能為1(表示為真),或0(表示假)。

如 9>8這個關系表達式是真的,所以9>8這個表達式的數值就是1。

如 7<6這個關系表達式是假的,所以7<6這個表達式的數值就是0

b、考試最容易錯的:就是int x=1,y=0,z=2;x<y<z是真還是假?帶入為1<0<2,從數學的角度出發肯定是錯的,但是如果是C語言那么就是正確的!因為要1<0為假得到0,表達式就變成了0<2那么運算結果就是1,稱為了真的了!

c、等號和賦值的區別!一定記住“=”就是賦值,“= =”才是等號。做錯了,我一定會強烈鄙視你!

2)邏輯表達式:共有&& || ! 三種邏輯運算符號

核心:表達式的數值只能為1(表示為真),或0(表示假)。

a、注意短路現象。考試比較喜歡考。詳細請見書上例子,一定要會做例1和例2。

b、表示 x 小于0大于10的方法。(考試非常容易錯的)

0<x<10是不行的(一定記住),他永遠為真。(0<x)&&(x<10)才是正確表示方法。

3)if 語句

a、else 是與最接近的if且沒有else的語句匹配。

b、交換的程序寫法:t=x;x=y;y=t;

c、if(a<b)t=a;a=b;b=t;

if(a<b){t=a;a=b;b=t;} 兩個的區別,考試多次考到了!

d、單獨的if語句:if(a<b)t=a;

標準的if語句:if(a<b)min=a;

else min=b;

嵌套的if語句:if(a<b)

if(b>c)printf(“ok!”);

多選一的if語句if(a= =t)printf(“a”);

else if(b= =t)printf(“b”);

else if(c= =t)printf(“c”);

else pritnf(“d”);

通過習題,要熟悉以上幾種if語句!

4)條件表達式: 表達式1 ?表達式2 :表達式3

a、考試口訣:真前假后。

b、int a=1,b=2,c=3,d=4,e=5;

k=a>b?c:d>e?d:e;

求k的數值時多少? 答案為5

5)switch語句:(我用了一年的時間才弄懂,考試重點)

a) 執行的流程一定要弄懂!上課時候詳細的過程講了,請自己一定弄懂!

b)注意有break和沒有break的差別,break在C語言中就是分手,一刀兩斷的意思。

c) switch只可以和break一起用,不可以和continue用。

d) switch(x) x是整型常量,字符型常量,枚舉型數據。

{case 1: …. 不可以是變量。

case 2: …. }

e)switch是必考題型,請大家一定要完成書上的課后的switch的習題。

6.goto語句,是關鍵,不可以隨便使用,已經淘汰

第四章

1.三種循環結構:

a.for();while();do- while()三種循環

b.for循環當中必須是兩個分號,千萬不要忘記

c.寫程序時一定要注意,循環一定要有結束的條件,否則就形成了死循環

d.do- while()循環是至少執行一次循環

2.break和continue的差別

break:是打破的意思,(破了整個循環),所以break就退出一層循環

continue:是繼續的意思,(繼續循環運算),但是要結束本次循環,就是循環體內剩下的語句不再執行,跳到循環開始,然后判斷循環條件,進行新一輪的循環。

3.嵌套循環

就是有循環里面還有循環,這種比較復雜,要一層一層耐心計算,一般記住兩層是處理二維數組的。

4.while((c=getchar()) !=‘
’)和while(c=getchar()!=‘
’)的差別

先看 a=3!=2和(a=3)!=2的區別:(!=號的級別高于=號 所以第一個先計算3!=2)第一個a的數值是得到的1;第二個a的數值是3

5.如何整除一個數:i%5==0表示整除5 i%2==0表示整除2,同時表示的是偶數!

6.輸入123,輸出321逆序輸出數據

int a =123;

while (i!=o)

{

printf(“%d”,i%10);

i=i/10;}

7.for只管后面一個語句:

int i=3;

for (i=3; i<6;i++); 循環控制這個空語句,空語句是循環體

printf(“#”); 請問最終打印幾個#號?答案為一個!

8.不停的輸入,直到輸入#停止輸入! while((x=getchar())!="#")

不停的輸入,直到輸入$停止輸入! while((x=getchar())!="$")

不停的輸入,直到輸入?停止輸入! while((x=getchar())!="?")

9.超級重點:

int k=1

while(--k);

printf("%d",k);

結果為0

int k=1

while(k--);

printf("%d",k);

結果為-1

第五章

1.函數:是具有一定功能的一個程序塊,是C語言的基本組成單位。

2.函數不可以嵌套定義。但可以嵌套調用。

3.函數名缺省返回值,默認為int。

4.C語言由函數組成,但有且有一個main函數!是程序運行的開始!

5.如何判斷a是否為質數:

void iszhishu(int a)

{ for (i=2;i<a/2;i++)

if(a%i=0)printf("不是質數");

printf(“是質數!”);

}

6.如何求階層:n!

int fun(int n)

{ int p=1;

for(i=1;i<n,i++) p=p*1;

return p;

}

7.函數的參數可以是常量、變量、表達式,甚至是函數調用。

8.一定要注意參數之間的傳遞。實參和形象之間的傳數值,和傳地址的差別

傳數值的話,形參的變化不會改變實參的變化

傳地址的話,形參的變化就98%會改變實參的變化

9.函數聲明的考查:

一定要有:函數名,函數的返回類型,函數的參數類型

不一定要有:形參的名稱(可寫,可不寫,可亂寫)

10.要求掌握的庫函數:

abs(),sqrt(),fabs(),pow(),sin(),其中pow(a,b)是重點,2的3次方是由pow(2,3)表示的。

第六章

指針變量的本質:放地址。變量三要素:名稱、內容、地址、

1.int *p中 *p和p的差別:簡單的說*p是數值,p是地址!

*p可以當做變量來使用,*的作用是取后面的地址P里面的數值。

p是當做地址來使用,可以用在scanf函數中:scanf(“%d”,p)

2.*p++和(*p)++的差別:

*p++是地址會變化,口訣:取當前值,然后在移動地址!

(*p)++是數值會變化。口訣:取當前值,然后再使數值增加1.

例題: int*p,a[]={1,3,5,7,9};

p=a;

請問*p++和(*P)++的數值分別為多少?

*p++ :本身為3,然后挪到下個地址,地址變動。

(*P)++ :本身為3,然后再把3變成4,地址不動

3、二級指針:*p:一級指針:存放變量的地址。

**q:二級指針:存放一級指針的地址。

常考題目: int x=7;

int*p=&x,**q=p;

問你:*p為多少?*q為多少?**q為多少?

7 p 7

再問你:**q=&x的寫法可以嗎?

不可以,因為二級指針只能存放一級指針的地址。

4、三名主義:(考試的重點)

數組名:表示第一個元素的地址。數組名不可以自加,他是地址常量名。

函數名:表示該函數的入口地址。

字符串常量名:表示第一個字符的地址。

5、移動指針(經常加入到考試中其他題目綜合考試)

char *s=“meikanshu” while(*s){printf(“%c”,*s);s++;}

s++是地址移動,打印了一個字母后,就會移動到下一個字母!

6、指針變量兩種初始化(一定要看懂)

方法一:int a=2,*p=&a;(定義的同時初始化)

方法二:int a=2,*p; (定義之后初始化) p=&a;

7、傳數值和傳地址(每年必考好多題目)

Void fun(int a,int b)

{int t;

t=a;a=b;b=t;

}

Main(){int x=1,y=3,

Fun(x,y);

Printf(“%d,%d”,x,y);

}

Void fun (int *a,int*b)

{int t;

t=*a;*a=*b;*b=t;

}

Main()

{int x=1,y=3,

Fun(&x,&y)

Printf(“%d,%d”,x,y);

}

這個題目的答案是1和3

傳數值,fun是用變量接受,所以fun中的交換不會影響到main中的x和y。

傳數值,形參的變化不會影響實參。

這個題目的答案是3和1

傳地址,fun用指針接受!這個時候fun中的交換,就會影響到main中的x和y。

傳地址形參的變化絕大數會影響到實參。

8.函數返回值是地址,一定注意這個*號

int *fun(int *a,int*b) 可以發現函數前面有個*,這個就是說明函數運算結果是地址

{if (*a>*b) return a; return a可以知道返回的是a地址

else return b;

}

main()

{int x=7,y=8,*max;

max=fun(&x,&y); 由于fun(&X,&Y)的運算結果是地址,所以用max來接收

printf("%d,%d",)

}

9.指針變量是存放地址的。并且指向哪個就等價哪個,所有出現*p的地方都可以用它的等價的代替

例如:int a=2,*p=&a;

*p=*p+2;

(由于*P指向變量a,所以指向哪個就等價哪個,這里*P等價于a,可以相當于a=a+2.

第七章

數組:地址連續,類型一致

1.一維數組的初始化:

int a[5]={1,2,3,4,5};合法

int a[5]={1,2,3};合法

int a[]={1,2,3,4,5};合法

int a[5]={1,2,3,4,5,6};不合法,賦值的個數多余數組的個數了

2.一維數組的定義:

int a[5];定義數組不可以是變量

int x,int a[x];不合法,因為個數是x,是個變量,非法的

define P 5 int a[P] 合法,define后的p是符號常量,只是長得像變量

3.二維數組的初始化:

int a[2][3]={1,2,3,4,5,6}; 合法,

int a[2][3]={1,2,3,4,5, }; 合法,后面一個默認為0。

int a[2][3]={{1,2,3,} {4,5,6}}; 合法,

int a[2][3]={{1,2,}{3,4,5}}; 合法,

int a[2][3]={1,2,3,4,5,6,7}; 不合法,賦值的個數多余數組的個數了。

int a[][3]={1,2,3,4,5,6}; 合法,可以缺省行的個數。

int a[2][]={1,2,3,4,5,6}; 不合法,不可以缺省列的個數

4.補充:

1)數組的重要概念:

a[10]的討論。(一維數組的討論)

1、a表示數組名,是第一個元素的地址,也就是元素a[0]的地址。(等價于&a)

2、a是地址常量,所以只要出現a++,或者是a=a+2賦值的都是錯誤的。

3、a是一維數組名,所以它是列指針,也就是說a+1是跳一列。

a[3][3]的討論。(二維數組的討論)

1、a表示數組名,是第一個元素的地址,也就是元素a[0][0]的地址。

2、a是地址常量,所以只要出現a++,或者是a=a+2賦值的都是錯誤的。

3、a是二維數組名,所以它是行指針,也就是說a+1是跳一行。

4、a[0]、a[1]、a[2]都是地址常量,不可進行賦值操作,同時它們都是列指針,a[0]+1,a[1]+1,a[2]+1都是跳一列。

5、注意a和a[0]、a[1]、a[2]是不同的,它們基類型是不同的。前者是一行元素,后三者是一列元素

2.二維數組做題目的技巧:

如果有a[3][3]={1,2,3,4,5,6,7,8,9}這樣的題目

步驟一:把他們寫成:

第一列

第二列

第三列

a[0]

1

2

3

第一行

a[1]

4

5

6

第二行

a[2]

7

8

9

第三行

步驟二:*(a[0]+1)我們就知道是第一行的第一個元素往后面跳一列,那么這里就是a[0][1]元素, 所以就是2

*(a[1]+2)我們就知道是第二行的第一個元素往后跳二列,那么這里就是a[1][2]元素, 所以就是6

3.數組的初始化,一維和二維的,一維可以不寫數字,二維第二個一定要寫出列,可以不寫行

4. 二維數組中的行指針:二位數組名是行指針

5.脫衣服法則:a[2] 變成 *(a+2)

a[2][3] 變成 *(a+2)[3] 再變成 *(*(a+2)+3)

其他重點:

.

總結

以上是生活随笔為你收集整理的C语言的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。