C語(yǔ)言筆記
1.Printf輸出函數(shù)語(yǔ)法
printf的語(yǔ)法 輸出語(yǔ)句
(1)printf("你想輸出的內(nèi)容")乘碑;
(2)printf("格式字符串"挖息,...);占位符%d整形數(shù) %f小數(shù) %s字符串 %c單個(gè)字符
printf("\n")兽肤;換行
2.常量與變量
定義變量 語(yǔ)法:數(shù)據(jù)類(lèi)型 變量名
C語(yǔ)言中數(shù)據(jù)類(lèi)型:
字符char套腹,短整型short
整型int,長(zhǎng)整型long
單精度浮點(diǎn):float
長(zhǎng)精度浮點(diǎn):double
要想使用變量资铡,必須先定義它电禀。變量通過(guò)賦值語(yǔ)句保存東西。
3.scanf輸入函數(shù)語(yǔ)法
scanf("數(shù)據(jù)類(lèi)型的占位符"笤休,地址)%d〖夥伞%f %s〉暄拧%c
%ld≌%lf
inta,b闹啦;
printf("請(qǐng)輸入第一個(gè)數(shù)")
scanf("%d"腋么,&a)
printf("請(qǐng)輸入第二個(gè)數(shù)")
scanf("%d",&b)
printf("%d+%d=%d\n"亥揖,a珊擂,b圣勒,a+b);
4.運(yùn)算符
(1)特殊運(yùn)算符:()〈萆取.->∈ッ场[]
(2)算術(shù)運(yùn)算符:+—×/%++--
(3)關(guān)系運(yùn)算符:> >=】富<∮蹙<= == ≡谡拧S煤=
(4)位操作運(yùn)算符:&∧/<< >>
(5)邏輯運(yùn)算符:&&\\帮匾!
(6)條件運(yùn)算符:啄骇?:
(7)賦值運(yùn)算符:= +=∥列薄-= ×=「准小/= %=
5.無(wú)條件轉(zhuǎn)向之goto語(yǔ)句goto標(biāo)簽
goto l;
l:```
**條件轉(zhuǎn)向語(yǔ)句if語(yǔ)句**
if(條件)
{
條件成立時(shí)要做的事(一行或多行代碼)
}
舉例:
int a;
scanf(“%d”,&a);
if(a%2==0)
{
Pintf(“%d是偶數(shù)!\n”,a);
}
if(a%2!=0)
{
Pintf(“%d是奇數(shù)!\n”,a);
}```
6.條件判斷之if else語(yǔ)句
if(條件1)
{
條件1成立時(shí)要做的事(一行或多行代碼)
}
else if(條件2)
{
條件2成立時(shí)要做的事(一行或多行代碼)
}..................
else
{
以上條件都不成立時(shí)的代碼
}```
舉例1:
int a;
scanf(“%d”,&a);
if(a%2==0)
{
Pintf(“%d是偶數(shù)!\n”,a);
}
else
{
Pintf(“%d是奇數(shù)!\n”,a);
}```
舉例2:
int a=0;
printf(“請(qǐng)輸入一個(gè)有效的分?jǐn)?shù)(0-100):”);
scanf(“%d”,&a);
if(a<60)
{
Printf(“%d是不及格螺句!\n”虽惭,a);
}
else if(a<80)
{
Printf(“%d是及格!\n”蛇尚,a);
}
else if(a<90)
{
Printf(“%d是優(yōu)良芽唇!\n”,a);
}
else
{
Printf(“%d是優(yōu)秀取劫!\n”披摄,a);
}```
**7.條件判斷之switch開(kāi)關(guān)語(yǔ)句**
Swith(表達(dá)式)
{
case值1:
做是值1的事
break;
case值2:
做是值2的事
break勇凭;
...........
default:
如果前面的值都不是的事
}```
舉例1:
int a;
scanf(“%d”,&a);
if (a==0)
{
printf(“零\n”);
}
else If (a==1)
{
printf(“壹\n”);
}
else If (a==2)
{
printf(“貳\n”);
}
else If (a==3)
{
printf(“叁\n”);
}
else If (a==4)
{
printf(“肆\n”);
}
else If (a==5)
{
Printf(“伍\n”);
}
else If (a==6)
{
printf(“陸\n”);
}
else If (a==7)
{
printf(“柒\n”);
}
else If (a==8)
{
printf(“捌\n”);
}
else If (a==9)
{
printf(“玖\n”);
}
else
{
printf(“對(duì)不起义辕,無(wú)法轉(zhuǎn)換虾标!”);
}```
舉例2:
switch(a)
{
case 0:
printf(“零\n”);
break灌砖;
case 1:
printf(“壹\n”);
break璧函;
case 2:
printf(“貳\n”);
break;
case 3:
printf(“叁\n”);
break基显;
case 4:
printf(“肆\n”);
break蘸吓;
case 5:
printf(“伍\n”);
break;
case 6:
printf(“陸\n”);
break撩幽;
case 7:
printf(“柒\n”);
break库继;
case 8:
printf(“捌\n”);
break箩艺;
case 9:
printf(“玖\n”);
break;
default:
printf(“對(duì)不起宪萄,無(wú)法轉(zhuǎn)換\n”);
break艺谆;
}```
8.循環(huán)之for語(yǔ)句
從某一處開(kāi)始,連續(xù)不斷的做一件事拜英,就叫循環(huán)静汤。
for(表達(dá)式1(賦值語(yǔ)句 初值);表達(dá)式2(條件)居凶;表達(dá)式3(增值的賦值語(yǔ)句))
{
循環(huán)要做的事(一行或多行代碼)
}```
舉例1:
for(int i=0虫给;i<8;i++)
{
printf(“1\n”);(輸出8個(gè)1)
}```
舉例2:
for(int i=1侠碧;i<101抹估;i++)
{
printf(“%d\n”,i);(輸出1到100的數(shù))
}```
舉例3:
for(int i=11;i<=55舆床;i=i+3)
{
printf(“%d\n”,i);(輸出11棋蚌、14、17.挨队。谷暮。。盛垦。湿弦。。53)
}```
舉例4:
for(int i=9腾夯;i>0颊埃;i--)
{
printf(“%d\n”,i);(輸出987654321)
}```
Continue:結(jié)束本次循環(huán),開(kāi)始下一次循環(huán)
Break:跳出循環(huán)
For循環(huán)的嵌套:外面的for循環(huán)一次蝶俱,里面的for循環(huán)一圈班利,再循環(huán)到外面的for。
舉例5:
int a=9榨呆;
scanf(“%d”,&a);
for(int i=a罗标;i>0;i--)
{
for(int j=1积蜻;j<=3闯割;j++)
{
printf(“%d\n”,j)
}
}
(當(dāng)輸入5時(shí),輸出5個(gè)123)```
9.循環(huán)之while語(yǔ)句
while(條件)
{
循環(huán)體
}```
舉例1:
int sum=0竿拆,i宙拉;
for(i=1;i<=100;i++)
{
sum=sum+i
}
printf(“sum=%d\n”,sum);(5050)```
舉例2:
int sum=0丙笋,i谢澈;
for(i=1;i<=100煌贴;i++)
{
sum=sum+i
if(sum=3003)
{
break;
}
}
printf(“i=%d\n”,i);(77)```
舉例3:
int i=0澳化;
while(i<100)
{
i++崔步;
Printf(“%d\n”,i);
}
(輸出1-100)```
舉例4:
int i=0,sum=0缎谷;
while(sum井濒!=3003)
{
i++;
sum+=i
}
printf(“i=%d\n”,i);(77)```
**10.循環(huán)之do while語(yǔ)句**
do
{
循環(huán)體
}while(條件)列林;```
舉例1:
int i=0瑞你,sum=0;
do
{
i++希痴;
sum+=i
}while(sum者甲!=3003);
printf(“i=%d\n”,i);(77)```
當(dāng)知道循環(huán)次數(shù)的時(shí)候砌创,用for循環(huán)虏缸,當(dāng)不知道循環(huán)次數(shù)的時(shí)候,用while或do while循環(huán)嫩实。
舉例:
int n刽辙;(保存總?cè)藬?shù))
int score;(成績(jī))
int sum=0;(總分)
printf(“請(qǐng)輸入你班級(jí)總?cè)藬?shù)”)
scanf(“%d”,&n)
for(int i=1;i<=n甲献;i++)
{
printf(“請(qǐng)輸入第%d名同學(xué)成績(jī)”宰缤,i);
scanf(“%d”晃洒,&score)慨灭;
sum+=score;
}
printf(“平均分是%g\n,sum*1.0/n”);```
舉例:
int n=0球及;(計(jì)數(shù)器)
int sum=0;(累加器)
int temp氧骤;(每一名同學(xué)成績(jī))
printf(“請(qǐng)輸入第%d名同學(xué)成績(jī)”,n+1)吃引;
scanf(“%d”筹陵,&temp);
while(temp>0)
{
n++际歼;
sum+=temp;
printf(“請(qǐng)輸入第%d名同學(xué)成績(jī)”姑蓝,n+1)鹅心;
scanf(“%d”,&temp)纺荧;
}
printf(“平均分是%g\n旭愧,sum*1.0/n”);```
**11.函數(shù)**
1.在程序的不同地方出現(xiàn)了相同的代碼
2.把大的應(yīng)用改成幾個(gè)小的部分
定義(函數(shù)的主體部分颅筋,代表函數(shù))
聲明(告訴下面的代碼這個(gè)函數(shù)存在,你可以使用它)
調(diào)用(使用函數(shù))
返回值 函數(shù)的名字(參數(shù)的列表)——函數(shù)頭
{
函數(shù)體
}
![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2641649-e2513328610eebc4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
Printf(“11”);相同時(shí)输枯,就用函數(shù)议泵,例如:
![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2641649-8497a76252f11882.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
**12.自定義函數(shù)**
舉例1.
![](http://upload-images.jianshu.io/upload_images/2641649-c923fa9b76bdbca1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
舉例2.
![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2641649-8a4a12fca36f7726.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
**13.函數(shù)的調(diào)用**
點(diǎn)右鍵-——add file to-——add.c/add.h文件
Add.c文件:{
float add(float a,float b桃熄,float c先口,)定義
Return a+b+c;
}
Add.h文件:float add(float a瞳收,float b碉京,float c,)螟深;聲明
![](http://upload-images.jianshu.io/upload_images/2641649-7cec7d9c8a62cdd9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
全局變量(定義在所有函數(shù)外面的變量叫全局變量)
局部變量(定義在大括弧里面的變量)
變量的作用域谐宙,就是變量的生命周期:在大括號(hào)外面使用不了里面的變量,里面能夠使用外面的變量(里面能夠看到外面)
**14.數(shù)組**
要想使用數(shù)組界弧,就必須先定義它凡蜻。
語(yǔ)法: 數(shù)據(jù)類(lèi)型 數(shù)組名稱(chēng)[整型常量]
舉例:```Int cj[6]```
(1).逐一賦值Int cj[0]=44;Int cj[1]=55垢箕;..........Int cj[5]=99划栓;
(2).在定義時(shí)賦值Int cj[6]={44,55,66,77,88,99};
(3).for循環(huán)賦值
for(int i=0,i<6舰讹,i++)
{
cj[i]=60+i
}
printf(“cj[%d]=%d”,i,cj[i]);```
15.二維數(shù)組
在c語(yǔ)言中茅姜,字符串就是使用字符數(shù)組來(lái)保存的
(1)
char chh[]={‘a(chǎn)’,’a’,’a’,’a’,’\0’};
Printf(“%s”,chh);(輸出的是aaaa)```
(2)
char chh[]=”hello”;相當(dāng)于char chh[6]={‘h’,’e’,’l’,’l’,’o’,’\0’};```
(3)
int n[3][3]={{0,1,2},{3,4,5},{6,7,8}};```
**16.指針**
(1)
int a;
a=123月匣;
printf(“%d”,*&a)```
&變量 取地址的符號(hào)
*地址 得到地址里面的內(nèi)容```
(2)
{
int a钻洒;
a=123;
printf(“a=%d\n”,a);
int * p;
p=&a;
*p=250;
printf(“a=%d\n”,a);
return 0;
}第一次輸出123锄开,第二次輸出250.```
(3)指針使用的情況:
1.在一個(gè)函數(shù)里面想訪問(wèn)另一個(gè)函數(shù)里的變量
2.動(dòng)態(tài)內(nèi)存申請(qǐng)
17.數(shù)組與指針
數(shù)組名就是一個(gè)指針
{
int a[10];
for(int i=0;i<10;i++)
{
a[i]=i+1
}
int * p=a ;
printf(“a[9]=%d\n”,*(p+9))
}```
輸出數(shù)組
{
int a[10];
for(int i=0;i<10;i++)
{
a[i]=i+1
}
int * p=a ;
for(int i=0;i<10;i++)
{
printf(“a[%d]=%d\n”,i,*(p+i)) ;
}
}```
18.字符串
#include<string.h>
Strlen計(jì)算字符串的長(zhǎng)度
Strcat字符串相連
Strcmp字符串的比較0代表相等
Strcpy字符串的賦值```
**19.結(jié)構(gòu)體**
語(yǔ)法: Struct結(jié)構(gòu)名稱(chēng)
{
結(jié)構(gòu)的數(shù)據(jù)
};```
舉例1.:
舉例2:
20.結(jié)構(gòu)體的使用
結(jié)構(gòu)是可以嵌套的素标,結(jié)構(gòu)中還可以有結(jié)構(gòu)。
別名typedef```
![](http://upload-images.jianshu.io/upload_images/2641649-9a7664c72fd96292.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
**21.聯(lián)合和枚舉**
聯(lián)合union```
結(jié)構(gòu)中的成員都有自己?jiǎn)为?dú)的內(nèi)存萍悴,聯(lián)合中的成員是共同使用內(nèi)存头遭。對(duì)于聯(lián)合,在同一時(shí)間只能使用一個(gè)成員癣诱。
聯(lián)合在程序中的運(yùn)用:
枚舉enum(羅列值)```
**22.文件**
1.打開(kāi)文件fopen
2.對(duì)文件進(jìn)行操作(讀r或?qū)憌)
寫(xiě)文件有3個(gè)函數(shù):fputc寫(xiě)一個(gè)字符计维;fputs寫(xiě)一個(gè)字符串;fprintf用格式化的寫(xiě)撕予。
讀文件的函數(shù):fscanf
3.關(guān)閉文件fclose
![](http://upload-images.jianshu.io/upload_images/2641649-5d16cbbfb190df4b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
舉例:
{
FILE * fp=NULL鲫惶;
fp=fopen(“abc.txt”,”w”);第一個(gè)參數(shù)是要打開(kāi)的文件;第二個(gè)參數(shù)是操作的類(lèi)型w r
if(fp==NULL)
{
printf(“打開(kāi)文件失斒德铡欠母!”)欢策;
return 0;
}
for(int i=’a’;i<=’z’;i++)
{
fputc(i,fp);輸出a到z的26個(gè)字母
}
fclose(fp)赏淌;
return 0踩寇;
}```
23.二進(jìn)制文件
寫(xiě)文件:fwrite
讀文件:fread