C語言程序設計知識點及示例_第1頁
C語言程序設計知識點及示例_第2頁
C語言程序設計知識點及示例_第3頁
C語言程序設計知識點及示例_第4頁
C語言程序設計知識點及示例_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C語言程序設計知識點及示例PAGE第1頁,共21頁四川大學錦江學院C語言程序設計知識點及示例知識點1:除了復合語句而外,C語言的語句都以分號結(jié)束。示例1:C語言的簡單語句(非復合語句語句)必須以結(jié)束。參考答案:分號知識點2:目標程序和可執(zhí)行程序都屬于機器代碼程序(即二進制的機器指令程序.),但只有可執(zhí)行程序才能被計算機直接執(zhí)行。C語言中的每條可執(zhí)行語句最終都將被轉(zhuǎn)換成二進制的機器指令.示例2:可以被直接執(zhí)行的程序是。A)源代碼程序 B)目標代碼程序 C)word文檔程序 D)可執(zhí)行程序參考答案:D示例3:下列敘述中正確的是。A)計算機能直接執(zhí)行C語言源程序B)C程序經(jīng)C編譯后生成后綴為.obj的文件可以直接運行C)C語言中的每條可執(zhí)行語句最終都將被轉(zhuǎn)換成二進制的機器指令.D)C程序經(jīng)C編譯后生成后綴為.obj的文件不是二進制文件參考答案:C知識點3:可執(zhí)行程序的擴展名是“.exe”,目標程序的擴展名是“.obj”,C語言源程序的擴展名是“.c”。示例4:可執(zhí)行程序的擴展名是。參考答案:.exe示例5:目標程序的擴展名是。參考答案:.obj知識點4:C語言程序總含有main函數(shù),程序執(zhí)行時,總是從main函數(shù)開始,在main函數(shù)結(jié)束。函數(shù)可以嵌套調(diào)用但不能嵌套定義.函數(shù)可以單獨編譯,但除main()函數(shù)外不能單獨運行.每個函數(shù)(不包括main函數(shù))都可以被其他函數(shù)調(diào)用.示例6:C語言程序一定包含函數(shù)。參考答案:main示例7:C語言程序運行時第一個被執(zhí)行的函數(shù)是函數(shù)。參考答案:main示例8:C語言程序執(zhí)行時,如下敘述中正確的是。A)總是從main函數(shù)開始,在main函數(shù)結(jié)束B)從main函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束C)從程序的第一個函數(shù)開始,在main函數(shù)結(jié)束D)C語言中的函數(shù)不可以單獨進行編譯.參考答案:A知識點5:C語言一個語句可以寫在多行上,也可以一行寫多個語句。示例9:以下敘述中正確的是。A)C程序書寫格式嚴格,要求一行內(nèi)只能寫一個語句B)C程序一個語句可以寫在多行上C)用C語言編寫的程序一行最多只能寫一個語句D)前面都是錯誤的參考答案:B知識點6:C語言的標識符由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。示例10:按照C語言規(guī)定的用戶標識符命名規(guī)則,標識符中包含正負號。參考答案:不能示例11:按照C語言規(guī)定的用戶標識符命名規(guī)則,下面是標識符。A)1a B)a$ C)_for D)-for參考答案:C示例12:下列定義變量的語句中正確的。A)int1x; B)doublex1; C)char-x D)floatUS$;參考答案:B知識點6:在C語言源程序中,整常數(shù)可用以下三種形式表示:十進制整數(shù);八進制整數(shù);十六進制整數(shù)。不能表示二進制整數(shù)。以0開頭的數(shù)是八進制數(shù);以0x開頭的數(shù)是16進制數(shù)。示例13:以下選項中可作為C語言合法的整數(shù)常量的是。A)0xabg B)-0819 C)-819 D)x9a參考答案:C示例14:在C語言中,八進制整常數(shù)以開頭。參考答案:0示例15:在C語言中,十六進制整常數(shù)以開頭。參考答案:0x示例16:在C語言源程序中,直接使用二進制數(shù)表示十進制數(shù)。參考答案:不能知識點7:在C語言的實型常數(shù)的指數(shù)表示法中,字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù)。示例17:在C語言的實型常數(shù)的指數(shù)表示法中,字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為。參考答案:整數(shù)示例18:以下選項中是合法的C語言常量。A)-80 B)-08 C)-1e6.0 D)1.68e參考答案:A知識點8:在C語言中,以l或L結(jié)束的常整數(shù)為長整型常數(shù)。示例19:在C語言中,合法的長整型常數(shù)是。A)0L B)6u C)-0823 D)0x16g參考答案:A知識點9:在C語言中,任何非零的數(shù)值被認作“真”,零值表示“假”。示例20:設有定義:“intm=1,n=6;”,則以下選項中值為0的表達式是。A)(!m==1)&&(!n==6) B)(m<n)||m||0C)m&&n D)m||n參考答案:A示例21:設有定義:“inta=1,b=6,c=8;”,則以下選項中值為0的表達式是。A)(!a==6)&&(!b==0) B)a%b||1C)a||b+c&&b-c D)c||(a++)/(++b)參考答案:A知識點10:在C語言中,定義變量時可以為變量賦初值,但其初值應是常量表達式,不能包含變量。示例22:以下能正確定義且賦初值的語句是。A)intx=y=16; B)charch=98; C)inta=a+6; D)doublex=1.68e-8.0參考答案:B知識點11:正確的賦值語句是賦值運算符‘=’右端為一個數(shù)值或正確的表達式,其左端為一個變量示例23:若以下選項中的變量a1,a2,a3,a4已正確定義,則正確的賦值的語句是。A)a1=26.8%3

;B)1+2=a2;C)a3=0x79c;D)a4=2+2=5

;參考答案:C知識點12:字符常量的界定符為一對單引號,表示一個單字節(jié)字符,可以表示普通字符和轉(zhuǎn)義字符。示例24:以下選項中不屬于字符常量的是。A)'\n' B)"A" C)'\xAC' D)'\063'參考答案:B知識點13:C語言的邏輯運算符兩側(cè)運算對象可以是任意合法的表達式。示例25:以下關(guān)于邏輯運算符兩側(cè)運算對象的敘述中正確的是。A)只能是整數(shù)0或1 B)只能是整數(shù)C)可以是任意合法的表達式 D)前面都是錯誤的參考答案:C知識點14:break語句可用于switch語句和循環(huán)體中,continue只能用于循環(huán)體中,用于結(jié)束本次循環(huán)。示例26:continue只能用于中。參考答案:循環(huán)體示例27:下列敘述正確的是。A)break語句只能用于switch語句B)continue語句只能用于switch語句C)break語句必須與switch語句中的case配對D)break可用于switch語句和循環(huán)體中參考答案:D知識點15:在C語言switch語句中,一般break語句需要case配對使用,但不使用break語句在語法上也是正確的。而且在switch語句中并不一定必須使用default 示例28:下列敘述正確的是。A)break語句只能用于循環(huán)體中,而且一次能跳出多層循環(huán),B)break語句必須與switch語句中的case配對C)在switch語句中必須使用defaultD)從語法上講,switch語句中不包含break語句也是正確的參考答案:D知識點16:指針變量不能被賦值為整型值。只能被賦值為地址值。另外必須是同維同類的二個指針變量才能進行賦值運算(例如:有定義inta[3]={1,2,3},*p;則p=&a;就是錯誤的.)另外數(shù)組名代表了數(shù)組的首地址具有指針的概念,.示例29:若有定義語句inta[3][2]={1,2,3,4,5,6};int(*p)[2]=a;則*(*(p+1)+1)的值是。A)3B)5C)6D)4參考答案:D示例30:設已有定義:“floatx;”,則以下對指針變量p進行定義且賦初值的語句中正確的是。A)float*p=0x1024;B)float*p=(int)x+1;C)floatp=&x; D)float*p=&x;參考答案:D知識點17:如果指針變量p指向x,則可用*p間接訪問x。示例31:若有定義:“intx=18,*p=&x;”,則*p的值是。參考答案:18知識點18:在定義數(shù)組時可為其賦初值,但初值的個數(shù)不能超過數(shù)組長度。而在程序執(zhí)行時并不對數(shù)組元素的下標是否超出所定義的下標范圍作安全性檢查.示例32:下面正確定義一維數(shù)組的選項是。A)inta[2][4]={0,1,2,3,4,5,6,7,8}; B)inta[2][3]={1,2,3,4,5,6}; C)inta[3,2]={1,2,3,4,5,6}; D)chara[3]="abc";參考答案:B知識點19:在定義數(shù)組時,若賦的是全部初值(即全賦值的情況,不是部分賦值的情況.),則對一維數(shù)組而言可省略數(shù)組長度的定義,而對二維數(shù)組而言則只可省略列行下標的長度定義,而決不能省略列下標的長度定義。下列數(shù)組定義中錯誤的是示例33:A)intX[][3]={0,1,2,3}B)intX[]={1,2,3,4,5,6}C)intX[][3]={1,2,3,4,5,6}D)intX[2][]={1,2,3,4,5,6}參考答案:D知識點20:用typedef只是聲明一個新的類型名來代替已有的類型名。不是增加新類型.(已有的類型名仍可使用)這樣做通常可以增加程序的可讀性.注意:typedef不能用來為變量說明一個新名.一般使用格式為typedwf已有的類型名新類型名;。例如typedwffloatreal;示例34:設有以下語句:typedefstructDateType{ intmonth; intday; intyear;}DATE;則下面敘述中正確的是。A)不能用structDateType定義結(jié)構(gòu)體變量 B)DATE是DateType這種結(jié)構(gòu)體類型的變量C)可以用DATE定義結(jié)構(gòu)體變量 D)DATE是structDateType類型的變量參考答案:C示例35:設有如下說明:typedefstructST{longa;intb;}NEW;則下面敘述中正確的是。A)以上的說明形式非法 B)ST是一個結(jié)構(gòu)變量C)NEW是一個結(jié)構(gòu)類型 D)NEW是一個結(jié)構(gòu)變量參考答案:C示例36:使用typedef增加新類型。參考答案:不能知識點21:宏定義和文件包含都屬于預處理命令,它們是對源程序編譯之前做一些預處理,生成擴展C源程序,在源程序的一行上只能寫一條預處理命令,都不占用程序運行時間。其中宏定義是在對C源程序進行預處理(即預編譯)時用宏體替換宏名.例如:有宏定義”#defineN179“表示在對C源程序進行預處理時將對源程序中所有出現(xiàn)標識符為N的宏名用宏體179來替換.示例36:宏替換命令程序的運行時間。參考答案:不占用示例37:以下敘述中正確的是。A)在源文件的一行上只能有一條預處理命令B)宏名必須用小寫字母表示C)宏替換要占用程序的運行時間D)前面都是錯語的參考答案:A示例38:若有如下程序#include<stdio.h>#defineCUBE1(X)X*X*X#defineCUBE2(X)(X)*(X)*(X)voidmain(){intk=2,m=1;printf(“%d”,CUBE1(k+m));printf(“%d\n”,CUBE2(k+m));}則此程序的運行結(jié)果是。A)77 B)2727 C)277 D)727參考答案:D知識點22:如到文件末尾,則函數(shù)feof的函數(shù)值為真(1),否則函數(shù)值為假(0)。示例39:設fp為指向一二進制文件的指針,且還未讀到此文件末尾,則函數(shù)feof(fp)的返回值為。A)EOF B)1 C)0 D)NULL參考答案:C示例40:設fp為指向一二進制文件的指針,且已讀到此文件末尾,則函數(shù)feof(fp)的返回值為。參考答案:1知識點23:用于二進制文件操作的數(shù)據(jù)塊讀寫函數(shù)(fread()和fwrite())的函數(shù)調(diào)用“fread(buffer,size,count,fp);”與“fwrite(buffer,size,count,fp);”中的buffer是指針,對fread來說,它是讀入數(shù)據(jù)的存放地址,對fwrite來說,是要輸出數(shù)據(jù)的地址(均指起始地址)。而用于文本文件操作的格式輸出輸入函數(shù)(fprintf()和fscanf())的函數(shù)調(diào)用fprintf(fp,”格式控制字符串”,輸出表項);和fscanf(fp,”格式控制字符串”,輸入表項);其函數(shù)調(diào)用功能fprintf函數(shù)是將”輸出表項”按”格式控制字符串”的格式要求輸出到fp所指的文件中.而fscanf函數(shù)是將fp所指的文件中的數(shù)據(jù)按”格式控制字符串”的格式要求輸入到對應的輸入表項中.示例41:讀取二進制文件的函數(shù)調(diào)用形式為“fwrite(buffer,size,count,pt);”,其中buffer是。A)一個文件指針 B)一個內(nèi)存塊的首地址,表示讀入數(shù)據(jù)存放的地址C)一個內(nèi)存塊的字節(jié)數(shù) D)一個內(nèi)存塊的首地址,表示輸出數(shù)據(jù)存放的地址參考答案:D示例42:按某格式要求向一個文本文件輸出數(shù)據(jù)的函數(shù)調(diào)用形式,例如為:fprintf(fp,”%s%d\n”,”wang”,98);假如fp所指的文件名字為”data.txt”則函數(shù)調(diào)用后在文件”data.txt”中,數(shù)據(jù)的存入格式如所示那樣.Awang98 B)wang,98C)wang98 D)wang98參考答案:A知識點24:函數(shù)返回值類型取決于定義函數(shù)時的函數(shù)首部所說明的函數(shù)類型。示例43:函數(shù)返回值類型取決于定義函數(shù)時的函數(shù)首部所說明的。參考答案:函數(shù)類型示例44:在C語言中,函數(shù)返回值的類型與相同。A)函數(shù)原型中的函數(shù)類型 B)return語句中表達式的類型C)函數(shù)的實參類型 D)函數(shù)的形參類型參考答案:A知識點25:函數(shù)的實參與形參變量的作用域不用,并且占用不同的存儲單元。示例45:函數(shù)的形參和實參分別占用的存儲單元參考答案:不同知識點26:兩個整數(shù)相除,結(jié)果它們之商是整數(shù)。示例46:表達式9/2+5.6的值為。參考答案:9.6知識點27:對于邏輯表達式,并不是所有的邏輯運算符都要被執(zhí)行。例如a&&b,只有a為真時,才需要判斷b的值,又如a||b,只要a為真,就不必判斷b的值。如:inta=2,b=7,c=3,d,e;則執(zhí)行d=(a%b==2)||c++;e=(a%b<2)&&c++;后d為1,e為0,c為3.示例47:已有定義“floatx=6;intn=8,k;”,執(zhí)行“k=x||n++”以后,n的值為。參考答案:8示例48:已有定義“intm=6,n=8,k;”,執(zhí)行“k=!m&&--n”以后,n的值為。參考答案:8示例49:有以下程序:#include<stdio.h>intmain(void){ inta,b,c; a=2;b=3; c=(a/b<1)||(a%b>1); printf("%d%d%d\n",a,b,c); return0;}運行結(jié)果是:參考答案:231點評:由于“a/b<1”為真,所以“(a/b<1)||(a%b>1)”也為真(值為1),所以c=1。知識點28:在定義數(shù)組時為其賦初始,如果實初值的個數(shù)少于數(shù)組元素個數(shù),則未被賦初值的元素的值都取默認值0。示例50:設有定義語句:“inta[16]={18};”,則數(shù)組元素a[1]的值為。參考答案:0示例49:設有定義語句:“inta[][3]={{5},{1},{8}};”,則數(shù)組元素a[0][2]的值為。參考答案:0知識點29:對于“intn,*p=&n;”,則*p為p所指向變量n的值,&n為n的地址.scanf()函數(shù)的各輸入表項應為地址表項示例50:對于“intn=9,*p=&n;”,則*p的值為。參考答案:9示例51:已有定義“inta=0x1024;”,a的地址為0x1026,則&a=。參考答案:0x1026示例52:若有說明語句:“float*q,b;”則能通過scanf函數(shù)正確給輸入項b讀入數(shù)據(jù)的程序段是。A)*q=&b;scanf(“%f”,q); B)q=&b;scanf(“%f”,q);C)q=&b;scanf(“%f”,*p); D)q=&b;scanf(“%f”,b);參考答案:B示例53:若有定義語句”intb,charc[10];“則下面給b輸入整數(shù)值,給c輸入字符串的輸入語句中正確的是。A)scanf(“%d%s”,&b,&c); B)scanf(“%d%s”,&b,c); C)scanf(“%d%s”,b,c); D)scanf(“%d%s”,b,&c);參考答案:B知識點30:打開文件語句“fopen(文件名,使用文件方式);”,使用文件方式為字符串,對于打開文本文件,“r”表示(只讀)為輸入打開一個文本文件,“w”表示(只寫)為輸出打開一個文本文件,“a”表示(追加)向文本文件尾增加數(shù)據(jù)。示例54:設有定義:“FILE*fp;”,將以下打開文件的語句補充完整,以便為輸出打開一個文本文件。fp=fopen("test.txt",);參考答案:"w"示例55:設有定義:“FILE*fp;”,請將以下打開文件的語句補充完整,以便可以從文本文件data.txt中讀出內(nèi)容。fp=fopen("","");參考答案:data.txtr示例56:以下程序建立一個名為test.txt的字符文件(文本文件),將從鍵盤輸入的一行字符存入文件中。請?zhí)羁铡?include<stdio.h>#include<stdlib.h>voidmain(){ FILE*fp; charch; if((fp=fopen("test.txt",[1]))==NULL) { printf("Cannotopen!\n"); exit(0); } printf("Enterdata\n"); while((ch=getchar())!='\n')fputc(ch,fp); fclose(fp); }參考答案:[1]"w"點評:文件操作方式是字符串,注意"w"應用雙引號括起來。知識點31:malloc的函數(shù)原型為“void*malloc(unsignedintsize);”,一般使用格式為“(基類型*)malloc(sizeof(基類型))”。示例57:已有指針定義“float*p;”,請寫出完整的語句,利用malloc函數(shù)使p指向一個單精度實型動態(tài)存儲單元。參考答案:p=(float*)malloc(sizeof(float))知識點32:定義靜態(tài)變量的關(guān)鍵字是static。定義外部變量的關(guān)鍵字是extern.示例58:用于定義靜態(tài)變量。參考答案:static知識點33:每個枚舉類型都必須進行類型的定義,定義時必須將其所有的標識符一一列舉,采用enum關(guān)鍵字定義枚舉類型。示例59:用于定義枚舉類型。參考答案:enum知識點34:對于逗號表達式“表達式1,表達式2”,先求解表達式1,再求解表達式2。整個逗號表達式的值是表達式2的值。逗號運算符的優(yōu)先級最低。示例60:有如下程序:#include<stdio.h>intmain(void){ inta=5,b=9; a=a*2,a+13; b=(2*b,1+b); printf("%d%d\n",a,b); return0;}運行結(jié)果是:參考答案:1019點評:對于“a=a*2,a+13;”先計算“a=a*2”,再計算“a+13”,a的值為10;對于“b=(2*b,1+b);”,先計算“2*b”,再計算“1+b”,b的值為19。知識點35:if語句嵌套時,else子句與if的匹配原則是:else總是和之前與其最近的且沒有配過對的if配對。編程時最好采用恰當?shù)目s進格式。例如:示例61:有如下程序:#include<stdio.h>voidmain(){intx=16,y=30,z=40,u=80,v;if(x<y) if(y>u)v=1; elseif(y>u)v=3; elsev=3; elsev=4; printf("%d\n",v); }運行結(jié)果是:參考答案:3點評:上面程序ifelse結(jié)構(gòu)縮進格式恰當,容易看出else與if的匹配關(guān)系,由于關(guān)系表達式“x<y”為真,“y>u”和“y>u”為假,將執(zhí)行“elsev=3;”,顯示v的值3。知識點35:switch語句執(zhí)行時,首先計算switch的判斷表達式,并以此值去依次找與之相等的case標號值,找到后就將流程轉(zhuǎn)到該標號處,執(zhí)行后面各語句,直到遇到break語句或switch語句結(jié)束為止。示例59:有如下程序:#include<stdio.h>voidmain(){ charn1=1,n2=2; inta=1,b=2;switch(n1){ case1: switch(n2) { case1:a++;break; case2:b++;break; case3:a++;b++;break; }case2:a++,++b;break; case3:++b;++a;break; default:a++,b++;break; } printf("%d%d\n",a,b);}運行結(jié)果是:參考答案:24點評:由于n1=1,所以外層switch語句將執(zhí)行外層“case1”后的語句,由于n2=2,所以內(nèi)層switch語句將執(zhí)行內(nèi)層“case2”后的語句,執(zhí)行“b++;”后執(zhí)行“break;”退出內(nèi)層switch語句,繼續(xù)執(zhí)行“a++,++b;”,然后執(zhí)行“break;”,退出外層switch語句。有以下程序:#include<stdio.h>voidmain(){inti,j=0,k=0,m=0;for(i=9;i<12;i++){switch(i/10){case0:j++;k++;break;case10:k++;break;default:m++;k++;}} printf("%d%d%d%d\n",i,j,k,m; }運行結(jié)果是:參考答案:12132知識點36:條件運算符的優(yōu)先級高于賦值運算,但低于算術(shù)、關(guān)系、邏輯運算。示例60:有如下程序:#include<stdio.h>intmain(void){ inta=1,b=2,x,y; x=a+1<b?a+3:b; y=(a+1<b?a+3:b); printf("%d%d\n",x,y); return0;}運行結(jié)果是:參考答案:22點評:先計算“a+1”和“a+3”,再計算“a+1<b?a+3:b”。知識點37:對于C語言的表達式,如果表達式的值為0,表示邏輯假,如果表達式的值非0,表示邏輯真。示例61:有以下程序:#include<stdio.h>intmain(void){ intx=-6; while(x++); printf("%d\n",x); return0;}運行結(jié)果是:參考答案:1點評:當while條件“x++”為假時,“x++”的值為0,也就是取出x的值為0,然后再將x的值加1,所以x的值變?yōu)?。示例62:有以下程序:#include<stdio.h>intmain(void){ inti=2; do printf("%d",i);while(i-=2); printf("%d\n",i); return0;}運行結(jié)果是:參考答案:20點評:第1次循環(huán)時,i的值為1,顯示1,條件“--i”的值為0,i的值也變?yōu)?,所以第2個printf語句顯示0。知識點38:對于邏輯表達式a&&b,只有a與b都為真時,結(jié)果才為真,而對于a||b,只要a與b有一個為真,結(jié)果就為真。示例63:有以下程序:#include<stdio.h>intmain(void){ inta,b,c,d; a=1;b=2; c=a>1||b>1; d=a>1&&b>1; printf("%d%d%d%d\n",a,b,c,d); return0;}運行結(jié)果是:參考答案:1210點評:“a>1”為假,“b>1”為真,“a>1||b>1”為真,“a>1&&b>1”為假。知識點39:簡單遞歸函數(shù)通常對應數(shù)學中遞推式,可簡單地將遞推式中的遞推條件用if語句表示來進行編程。示例64:試用遞歸編程實現(xiàn)求階乘n!的函數(shù),并編寫測試程序。分析:求階乘函數(shù)f(n)=n!=1*2*…*n可用遞推式表示如下:具體遞歸函數(shù)及測試程序如下:#include<stdio.h>intf(intn){ if(n==0)return1; elsereturnn*f(n-1);}voidmain(){ printf("%d\n",f(3));}示例65:試用遞歸編程實現(xiàn)求累加和1+2+3+…+n的函數(shù),并編寫測試程序。分析:求求累加和1+2+3+…+n的函數(shù)可用遞推式表示如下:具體遞歸函數(shù)及測試程序如下:#include<stdio.h>ints(intn){ if(n==0)return0; elsereturnn+s(n-1);}voidmain(){ printf("%d\n",s(3)); }知識點40:通常采用推遞方式在求遞推函數(shù)的值。示例66:有以下程序:#include<stdio.h>intfun(intx){ if(x==0)return2; elseif(x==1)return5; elseif(x==2)return9; elsereturnx+fun(x-3);}voidmain(){ printf("%d\n",fun(6));}運行結(jié)果是:參考答案:11點評:fun(6)=6+fun(3)=6+3+fun(0)=6+3+2=11。知識點40:對于定義“inta[N],*p=a;”,由有*a,*p和a[0]相等,*(a+i),*(p+i)和a[i]相等。示例67:#include<stdio.h>voidmain(){ charstr[]="china",*p=str; printf("%c%c%s\n",*str,*(p+3),str);}運行結(jié)果是:參考答案:cnchina示例68:有以下程序:#include<stdio.h>voidmain(){ intdata[]={9,2,8,1,7,5,7,10},*pt=data; printf("%d%d%d%d\n",*pt,*(data+2),*data,data[5]);}運行結(jié)果是:參考答案:9895點評:*p=a[0]=9,*(a+2)=a[2]=8。知識點41:函數(shù)返回值類型由函數(shù)首部說的函數(shù)類型決定,與“return表達式”中的表達式類型無關(guān)。示例69:有以下程序:#include<stdio.h>intf(doublex,doubley){ returnx+y;}voidmain(){ intw=f(1.3,2.6); printf("%d\n",w); return0;}運行結(jié)果是:參考答案:3點評:調(diào)用函數(shù)f(1.3,2.6)時,“returnx+y;”表達式的值為3.9,由于函數(shù)類型為整型,所以將3.9轉(zhuǎn)抽為整型3作為函數(shù)的返回值。知識點42:對于數(shù)組,通常采用依次比較方式求最大值(最小值)。示例70:有以下程序:#include<stdio.h>intmain(void){ inti,j,m; inta[3][3]={10,20,60,28,72,-30,-85,1,6}; m=a[0][0]; for(i=0;i<3;i++) for(j=0;j<3;j++) if(a[i][j]>m)m=a[i][j]; printf("%d\n",m); return0;}運行結(jié)果是:參考答案:72示例70:有以下程序:#include<stdio.h>intmain(void){ inti,j,m; inta[3][3]={10,20,60,28,72,-30,-85,1,6}; m=a[0][0]; for(i=0;i<3;i++) for(j=0;j<3;j++) if(a[i][j]<m)m=a[i][j]; printf("%d\n",m); return0;}運行結(jié)果是:參考答案:-85示例71:有以下程序:#include<stdio.h>voidmain(){ inta[9]={10,20,60,28,72,-30,-85,1,6}}; inti,max=a[0],min=a[0]; for(i=1;i<9;i++) if(a[i]>max)max=a[i]; elseif(a[i]<min)min=a[i]; printf("%d%d\n",max,min); }運行結(jié)果是:參考答案:721知識點43:通常求累加和時,用于求和的變量被初始化為0。示例71:下面程序的功能是計算1+2+3+…+100,將程序補充完整。#include<stdio.h>voidmain(){ ints=[1]; for(intn=1;n<=100;n++) s=s+[2]; printf("%d\n",s);}參考答案:[1]0 [2]n示例72:編程通過函數(shù)計算數(shù)組中各元素的平均值。#include<stdio.h>floataverage(inta[],intn){ floats=0; for(inti=0;i<n;i++) s+=a[i]; returns/n;}voidmain(){ inta[6]={2,4,6,8,10,18}; floatmean; mean=average(a,6); printf("mean=%f\n",mean);}知識點44:通常求連乘積時,用于求積的變量被初始化為1。示例73:下面程序的功能是計算階乘n!,將程序補充完整。#include<stdio.h>intf(intn){ intt=[1]; for(inti=1;i<=n;i++) t=t*i; returnt;}voidmain(){ printf("%d\n",f(6));}參考答案:[1]1示例74:下面程序的功能是計算一個二維數(shù)組各元素之乘積,將程序補充完整。#include<stdio.h>intmain(void){ inti,j,t=[1]; staticinta[3][3]={{1,2,6},{2,3,-10},{-5,1,5}}; for(i=0;i<3;i++) for(j=0;j<3;j++) t=t*[2]; printf("%d\n",t); return0;}參考答案:[1]1 [2]a[i][j]知識點45:在C語言中,數(shù)組名為數(shù)組的起始地址,是一個指針常量,因此“intf(inta[],intn)”與“intf(int*a,intn)”等價,并且a是指針變量,因此在函數(shù)體內(nèi),a還可被賦值。示例75:下面程序的功能是計算一個一維數(shù)組各元素之積,將程序補充完整。#include<stdio.h>intmul(int*a,intn){ inti,t=[1]; for(i=0;i<n;i++) t=t**a++; returnt;}voidmain(){ inta[]={1,2,3,4,5,6}; printf("%d\n",mul(a,6)); return0;}參考答案:[1]1知識點46:對于鏈表通常采用動態(tài)內(nèi)存分配函數(shù)“void*malloc(unsignedintsize)”,在編程時應將函數(shù)強制轉(zhuǎn)換為特定指針類型,并用sizeof()函數(shù)求存儲單元所點空間大小,在顯示鏈表時,一般從頭指針開始(p=head)依次顯示各節(jié)點(p=p->next)。示例76:下面程序的功能為先建立線性鏈表,然后再顯示線性鏈表各元素的值,將程序補充完整。#include<stdio.h>#include<stdlib.h>typedefstructNode{ intdata; structNode*next;}Node;voidmain(){ Node*head=NULL,*tail=NULL,*p;//head表示頭指針,tail表尾指針,p為臨時指針變量 inta[]={1,2,3,4,5,6}; for(inti=0;i<6;i++) { //建立線性鏈表 p=([1])malloc([2])); p->data=a[i]; p->next=NULL; if(head==NULL) { //在空鏈表中插入節(jié)點,所插入節(jié)點為惟一節(jié)點 head=tail=p; //頭尾指針指向同一節(jié)點 } else { //將p追加到tail所指示結(jié)點的后面 tail->next=p

溫馨提示

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

評論

0/150

提交評論