c語言總復(fù)習(xí)資料_第1頁
c語言總復(fù)習(xí)資料_第2頁
c語言總復(fù)習(xí)資料_第3頁
c語言總復(fù)習(xí)資料_第4頁
c語言總復(fù)習(xí)資料_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

c語言總復(fù)習(xí)資料

一c語言的基本組成單位——函數(shù)。1.main();2庫函數(shù);3.自定義函數(shù)。Abc();

二函數(shù)的組成:1.函數(shù)的首部,函數(shù)的第一行語句(包括函數(shù)的返回值類型、函數(shù)名、函數(shù)參數(shù)類型及函數(shù)參數(shù)名)。()不可省略,例如:voidmain()2.函數(shù)體,包括函數(shù)的聲明部分(聲明在該程序中所要用到的函數(shù))、定義部分(定義函數(shù)可能要用到的變量)、執(zhí)行部分(用于實現(xiàn)函數(shù)的功能)。

三函數(shù)必不可少的分號。

四輸入輸出所使用的函數(shù):scanf、getchar、gets、printf、putchar、puts等。

五注釋:不能嵌套。習(xí)題94頁18題。

六大小寫區(qū)分:printf與Printf之不一樣。

七C語言上機(jī)過程:編輯(.c)——>編譯(.obj)——>連接(.exe)——>運行得結(jié)果。

八C程序執(zhí)行是從main()函數(shù)開始,到main函數(shù)結(jié)束處結(jié)束。

九進(jìn)制轉(zhuǎn)換:著重掌握十、八、十六進(jìn)制及相互轉(zhuǎn)換,原補(bǔ)碼(位運算中要用到)。

十用戶自定義標(biāo)識符:1.字母、數(shù)字、下劃線。2第一個字母不能為數(shù)字。3.不能與c語言所定義的關(guān)鍵字相同,但可以與預(yù)定義標(biāo)識符同。

十一常量:

1整形常量十進(jìn)制、八進(jìn)制(以0開頭)、十六進(jìn)制(以0x開頭)后兩種無負(fù)數(shù)。

2實型常量2.78(小數(shù)點兩邊至少有一邊要有數(shù)字)5.48e-3(e前必有數(shù)字,e后必為整數(shù))

3字符型常量a.一般字符’a’;b.轉(zhuǎn)義字符:一般轉(zhuǎn)義字符、八\十六進(jìn)制轉(zhuǎn)義字符?!痋n’,’\\’,’\t’,’\”’,’\64’,’\82’,’\x42’,’\xff’,’a12’.

4字符串常量“a”vs’a’

十二變量1.必須要先定義后使用;2變量三要素變量類型變量名變量值

例1:下面不是c語言整形常量的是A.02B.0C.038D.0xAL

例2:合法的實型常量是A.5E2.0B.E-3C.2E0D1.3E

例3:若有語句chara;并要將字符a賦值給變量a,則下列正確的賦值表達(dá)式是

A.a(chǎn)=”a”B.a=’a’C.a=”97”D.a=’97’

例4:以下合法的定義是:

A.float_a=1.1e-1;B.doubleb=1+5e2.5;C.longdo=0xfdaL;D.float2_and=1-e-3;

十三.求余原則:1.兩邊都要為整數(shù);

2.先取絕對值求余,余數(shù)與被除數(shù)符號相同。特別要注意’%’與’/’的區(qū)別。-10/310/-3

十四.賦值運算符及表達(dá)式:運算順序自右致左,左邊必須要是一個變量(能夠存放東西)。

a=b=c=10(定義處不能這樣);x+y=10;x+1=10;

十五.逗號表達(dá)式:a=(b=5,b+10);b=(a=4*9,a*2),a-3;要考慮優(yōu)先級。

十六.類型轉(zhuǎn)換chara=’a’;intb=32;floatc=32.5;doubles,d=32;s=a+b+c+d;

十七.強(qiáng)制類型轉(zhuǎn)換floatb=3.5;inta;a=(int)b;

例5:設(shè)有intx=11;則表達(dá)式(x++*1/3)的值是A3B4

例6:設(shè)有inta=1,b=1,c=1;a=a+++b+++c;最終a、b、c的值是:a=4;b=2;c=1;

例7:有以下定義和語句組:floatx=1;inty=2;y+=++x*++x;則最終y的值為:11

例8:intx=2;printf(“%d”,((x=4*5,x*5),x+25));45

例9:若變量已正確定義并賦值,以下符合c語言語法的表達(dá)式是

A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b

十八輸入輸出格式ch=getchar();putchar(ch);scanf(“%d%f%c”,&a,&b,&c);printf(“%d,%d”,a,b);

例10:有以下程序,輸出的結(jié)果是

main(){inta;charc=10;floatf=100.0;doublex;

a=f/=c*=(x=6.5);printf(“%d%d%3.1f%3.1f\n”,a,c,f,x);}1651.56.5(習(xí)題集2.13)

十九.邏輯運算及其短路現(xiàn)象(對于邏輯與和邏輯或而言)

二十.關(guān)系運算符及表達(dá)式a>b>c優(yōu)先級要清楚(即關(guān)>邏輯)

二十一.條件運算符及表達(dá)式a>b?a:c>d:c:d等價與a>b?a:(c>d?c:d)設(shè)a=1,b=2,c=3,d=4;4

例11:以下程序的輸出是A.d=0c=50B.d=0c=2C.d=1c=50D.d=1c=2

main(){inta=3,b=4,c=2,d;d=a<!b&&(c=50)>b;printf(“d=%dc=%d”,d,s);}

二十二.if語句例12:以下程序輸出結(jié)果是

inti=1,j=1,k=2;if((j++||k++)&&i++)printf(“%d,%d,%d\n”,i,j,k);2,2,2

if-else語句注意:if后只能管一個語句

main(){inta=2,b=-1,c=2;if(a<b)if(b<0)c=0;

elsec++;printf(“%d\n”,c);}

二十三.switch語句以下程序的輸出是:main(){intx=1,a=0,b=0;

switch(x){case0:b++;case1:a++;case2:a++;b++;}printf(“a=%d,b=%d\n”,a,b)}a=2,b=1

二十四.whilevsdo-while

main()

{inti=0,n=0;

while(n!=0){i++;++i}printf(“%d”,i);

}

main()

{inti=0,n=0;

do{i++;++i}while(n!=0);printf(“%d”,i);

}

二十五breakvscontinue

注意:break語句只能出現(xiàn)在循環(huán)體和switch語句中而continue只出現(xiàn)在循體環(huán)中。

main()

{intsum,i;sum=0;for(i=10;i>0;i--){if(i>5)continue;sum=sum+i;}printf("%d\n",sum);}

例13:以下程序的輸出是:main(){inta,y;a=5;y=0;a=7y=7

do{a+=2;y+=a;printf(“a=%dy=%d\n”,a,y);if(y>10)break;}while(a==7);}a=9y=16

例14:以下程序的輸出是:main(){intk=4,n=0;for(;n<k;){n++;if(n%3!=0)continue;k--;}

printf(“%d,%d\n”,k,n);}3,3

二十六.一維數(shù)組的定義、賦初值、引用。注意:inta[10]={0};中括號例常量表達(dá)式,下標(biāo)從0開始例15:若有定義floaty[5]={1,2,3};則下列描述正確的是:()

A.y并不代表數(shù)組元素B.定義此數(shù)組時不指定數(shù)組的寬度,定義效果一樣

C.?dāng)?shù)組含有三個元素D.a[3]的值是3

例16:以下程序的輸出是:main(){intz,y[3]={2,3,4};z=y[y[0]];printf(“%d”,z);}4

例17:以下程序的輸出是:main(){intp[7]={11,13,14,15,16,17,18},i=0,k=0;

while(i<7&&p[i]%2){k=k+p[i];i++}printf(“%d\n”,k);}24

例18:以下程序的輸出是:

main(){intn[5]={0,0,0},i,k=2;for(i=0;i<k;i++)n[i]=n[i]+1;printf(“%d\n”,n[k])}0

二十七.二維數(shù)組的定義、賦初值、引用

例19:main(){inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)

for(j=0;j<=i;j++)s+=a[i][j];printf(“%d\n”,s)}18

例20:以下不能正確定義二維數(shù)組的是:

Ainta[2][2]={{1},{2}};Binta[][2]={1,2,3};Cinta[2][2]={{1},2,3};Dinta[2][]={{1,2},{3,4}};

例21:若a是一個m行n列的數(shù)組,則a[i][j]是數(shù)組的第()個元素

Ai*m+jBi*m+j+1Ci*n+jDi*n+j+1

二十八字符數(shù)組的定義、賦初值、引用

1.chararr[10]={‘h’,’e’,’l’,’l’,’o’};2.chararr[]={‘h’,’e’,’l’,’l’,’o’,’\0’};

3.chararr[10]={“hello”};4.chararr[10]=”hello”;

二十九字符串輸入輸出若charstr[10]=”hello”,arr[10]=”me”;

scanf(“%s”,str);printf(“%s”,str);gets(str);puts(str);

strcpy(arr,str);strcmp(str,arr);strlen(str);strcat(str,arr);

例22:以下程序的輸出是:

main(){charst[20]=”hel\0lo\t”;printf(“%d%d\n”,strlen(st),sizeof(st))}3,20

例23:以下程序的輸出是:chars[]=”\\141\141abc\t”;printf(“%d\n”,strlen(s));9

三十指針與字符串char*a;a=”hello”;chara[10];a=”hello”;

例24:以下選項中正確的語句組是:()A.chars[8];s={“Beijing”};

B.char*s;s={“Beijing”};C.chars[8];s=”Beijing”;D.char*s;s=”Beijing”;

三十一有參函數(shù)的聲明、定義、與調(diào)用。

floatadd(floatx,floaty);/*函數(shù)的聲明*/

mai()

{inta=3.5,b=4.0,d;

d=add(a,b);/*函數(shù)的調(diào)用*/

}

floatadd(floatx,floaty)/*函數(shù)的定義*/

{returnx+y;}

三十二函數(shù)的嵌套調(diào)用與遞歸調(diào)用

doublefun1(doublea){returna*=a;}

doublefun2(doublex,doubley)

{doublea=0,b=0;

a=fun1(x);b=fun1(y);

return(int)(a+b);}

main()

{doublew;w=fun2(1.1,2.0);

printf("%f\n",w);}/*嵌套調(diào)用*/

longfib(intn)

{if(n>2)return(fib(n-1)+fib(n-2));

elsereturn2;}

main(){printf(“%d\n”,fib(3));}/*遞歸調(diào)用*/

三十三函數(shù)中的值傳遞與地址傳遞(不管是傳遞什么,實質(zhì)都是傳值,只不過一個是傳遞地址值而已)

func(inta){a=100;}func(inta[]){a[0]=100;}

main(){inta=10;func(a);printf(“%d”,a);}main(){inta[1];a[0]=10;func(a);printf(“%d”,a[0]);}

三十四局部變量與全局變量:局部變量的存儲類型分為自動型(auto)、寄存器型(register)、靜態(tài)類型(static),其中auto型和register型的變量的存儲空間是動態(tài)的,程序一結(jié)束,其值就消失。而static類型的變量,程序結(jié)束后其值仍然存在。全局變量是靜態(tài)的變量。

inta=5;

fun(intb){staticinta=10;a+=b++;printf(“%d”,a);}

main(){intc=20;fun(c);a+=c++;printf(“%d\n”,a);}3025如果在main中再加一個fun(c)呢?305025

三十五宏命令與文件包含

#defineN10

#defineS(x)x*x/*只要把這三個define語句放到一個文件hong.h里面*/

#definef(x)(x*x)/*再在主函數(shù)前加一個#include“hong.h”,程序運行結(jié)果一樣*/

main(){inti1,i2;i1=1000/S(N);i2=1000/f(N);printf(“%d%d”,i1,i2);}100010

三十六指針變量的定義、初始化、運算

main()

{intn=5,*p=&n;printf(“theaddressis:%d\n”,p);

printf(“thedatais:%d\n”,*p);

printf(“&*pis:%d\n”,&*p);

printf(“*&nis:%d\n”,*&n);}

例24:設(shè)有定義intn=0,*p=&n;則正確的賦值語句是:A.p=1;B.*p=&n;A選項不行,因p中應(yīng)存放一個地址值對于B選項,因p已經(jīng)指向了n這個存儲單元,實際上相當(dāng)于n=5。

三十七指針與一維數(shù)組

inta[10],*p;/*a與p是不同的,a是數(shù)組名是常量,不能執(zhí)行a++;a+=1的操作,p則可以*/

p=&a[0];p=a;/*這兩個語句等價,都是讓p指針指向這個數(shù)組*/

執(zhí)行上述語句后:p[i]等價于a[i];*(p+i)等價于*(a+i)

三十八指針與二維數(shù)組:下面給出了引用二維數(shù)組第i行第j列元素的不同方式

1.a[i][j];

2.因a[i]表示第i行的首地址,a[i]+j表示第i行第j列的地址,所以*(a[i]+j)表示第i行第j列的值。

3.又因a[i]可以寫成*(a+i),所以2中的表達(dá)式又可以寫成*(*(a+i)+j)。

4.把1中的a[i]變成*(a+i),后面的不變,故又可寫成(*(a+i))[j]。

三十九通過行指針引用二維數(shù)組

inta[4][4],(*p)[4];p=a;

四十通過指針數(shù)組引用二維數(shù)組元素

int*p[4],a[4][4];for(i=0;i<4;i++)p[i]=a[i];

以上兩個知識點,像以上這樣賦值后,要引用第i行第j列元素時,只需要把a(bǔ)改成p即可。

四十一函數(shù)指針與指針函數(shù)

intf(intx){……}main(){int(*p)();inta,b=2;p=f;a=(*p)(b);a=f(b);a=p(b);……}

函數(shù)指針:返回值是指針(地址)的函數(shù)。int*func(inta,intb);

例25:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0<=i<=9,下列對數(shù)組引用不正確的是:

A.a[p-a]B.*(&a[i])C.p[i]D.a[10]

例26:若定義inta[3][2];能正確表示t數(shù)組元素的地址的表達(dá)式是A.&a[3][2]B.a[3]C.a[1]D.*a[2]

例28:以下程序輸出結(jié)果是:A.69825B.63825C.6385D.693825

main(){charch[2][5]={“6937”,”8254”},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];

for(i=0;i<2;i++)for(j=0;p[i][j]>’\0’;j+=2)s=10*s+p[i][j]-‘0’;printf(“%d\n”,s);}

四十二結(jié)構(gòu)體的定義、賦初值

structstudent{intnum;charname[10];}*p,stu[2]={{123,”zhang”},{124,”li”}};p=stu;

typedefstructstudent{}STU;在這個語句后就可以用STU來定義結(jié)構(gòu)體變量了。

例:STUa,*p;等價于structstudenta,*p;

四十三結(jié)構(gòu)體變量的引用

printf(“%d”,stu[1].num);printf(“%d”,stu[1].name);printf(“%d”,p[1]->num);

printf(“%d”,p[1]->name);printf(“%d”,stu);則不對

四十四malloc、calloc、free函數(shù)及鏈表的操作鏈表操作見書p120int*p,*pint;float*q;p=(int*)malloc(sizeof(int));q=(float*)malloc(sizeof(float));pint=(int*)calloc(10,sizeof(int));free(p);習(xí)題集12章16題。

例29:下列賦值語句正確的是structworker{intnum;char*name;}*p,a;

A.worker.num=1;B.p.num=1;C.*p.num=1;D.a.num=1;

例30:在16位pc環(huán)境下,下列程序運行的結(jié)果是:(此題大家有印象即可,不必深究)

structworker{intnum;char*name;}a;main(){printf(“%d”,sizeof(a))}4(若32位則是8)

例31:設(shè)有如下定義:structss{charname[10]:intage:charsex:}stu[3],*p=std;下面各輸入語句錯誤的是:()

A.scanf(“%d”,&(*p).age);B.scanf(“%s”,&);C.scanf(“%c”,&std[0].sex);D

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論