南開大學(xué)復(fù)習(xí)資料-C語言程序設(shè)計(jì)1_第1頁
南開大學(xué)復(fù)習(xí)資料-C語言程序設(shè)計(jì)1_第2頁
南開大學(xué)復(fù)習(xí)資料-C語言程序設(shè)計(jì)1_第3頁
南開大學(xué)復(fù)習(xí)資料-C語言程序設(shè)計(jì)1_第4頁
南開大學(xué)復(fù)習(xí)資料-C語言程序設(shè)計(jì)1_第5頁
已閱讀5頁,還剩127頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

《C語言程序設(shè)計(jì)》課程期末復(fù)習(xí)資料一、單項(xiàng)選擇題不正確的c語言標(biāo)識符是—oA)intB)a_l_2C)ablexeD)_x是正確的C語言標(biāo)識符是—oA)#defineB)_123C)%dD)\n四組字符串中都可以用作C語言程序標(biāo)識符的一組是。print_3doodbaBci\amonehalfstart$it3paiPxqMy->bookline#His.agestr_lCpppowwhile各選項(xiàng)組中,均是C語言關(guān)鍵字的組是。A)auto,enum,includeB)switch,typedef,continueC)signed,union,scanfD)if,struct,type[1.5]下列不屬于C語言關(guān)鍵字的是。A)defaultB)registerC)enumD)externalC語言程序從main。函數(shù)開始執(zhí)行,所以這個函數(shù)要寫在一。A)程序文件的開始B)程序文件的最后0它所調(diào)用的函數(shù)的前面D)程序文件的任何位置關(guān)于C語言的敘述錯誤的是—A)大寫字母和小寫字母的意義相同B)不同類型的變量可以在一個表達(dá)式中0在賦值表達(dá)式中等號(=)左邊的變量和右邊的值可以是不同類型D)同一個運(yùn)算符號在不同的場合可以有不同的含義【1.8]在C語言中,錯誤的int類型的常數(shù)是。A)32768B)0C)037D)OxAF[1.9]執(zhí)行語句printf-1);屏幕顯示.A)-1B)1C)-ffffD)ffff[1.10]已知longi=32768;執(zhí)行語句printf i);屏幕顯示。A)-1B)-32768C)1D)32768[1.11]已知longi=65539;執(zhí)行語句printfi);屏幕顯示。A)65539B)-3C)3D)程序不能執(zhí)行【1.12]在C語言中,整數(shù)-8在內(nèi)存中的存儲形式是。A)1111111111111000B)1000000000001000C)0000000000001000D)1111111111110111[1.13]C語言中字符型(char)數(shù)據(jù)在內(nèi)存中的存儲形式是一。A)原碼B)補(bǔ)碼C)反碼D)ASCII碼【1.14】將字符g賦給字符變量c,正確的表達(dá)式是。A)c=\147B)c="'147"C)c=''147'D)c='0147'轉(zhuǎn)義字符中錯誤的一個是—oA)''000'B))\0014*C)*\xllTD)''2'【1.16】將空格符賦給字符變量c,正確的賦值語句是—oA)c='\0'B)c=NULLC)c=0D)c=32[1.17]已知:chara-\70';則變量a中?A)包含1個字符B)包含2個字符C)包含3個字符D)說明非法串"\"E0F\n=-\61\”的長度是一。A)8B)9C)14D)非法字符串串”的長度是—oA)0B)1C)2D)非法字符串:chara;intb;floatc;doubled;執(zhí)行語句"c=a+b+c+d;”后,變量c的數(shù)據(jù)類型是。A)intB)charC)floatD)double華氏和攝氏的關(guān)系是:C=-(F-32)O已知:floatC,F;由華氏求攝氏的正確的賦值表達(dá)式是—oA)C=5/9(F-32)B)C=5*(F-32)/9C)C=5/9*(F-32)D)三個表達(dá)式都正確[1.22]逗號表達(dá)式"(a=3*5,a*4),a+15"的值是<,A)15B)60C)30D)不確定[1.23]如果inta=l,b=2,c=3,d=4;則條件表達(dá)式"a〈b?a:c〈d?c:d"的值是。A)1B)2C)3D)4出s=10!的值,則變量s的類型應(yīng)當(dāng)為。A)intB)unsigedC)longD)以上三種類型均可inti=10;表達(dá)式"20-0<=i<=9"的值是 。A)0B)1C)19D)20[1.26]已知intx=l,y;執(zhí)行下述語句后變量x的值是。y=++x>5&&++x<10;A)1B)2C)3D)4斷字符變量c的值不是數(shù)字也不是字母時,應(yīng)采用下述表達(dá)式—oc<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122!(c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122)c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122!(c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122)inta[3][2]={3,2,1);則表達(dá)式"a[0][0]/a[0][l]/a[0][2]”的值是A)0.166667B)1C)0D)錯誤的表達(dá)式[1.29]已知intx=l,y=l,z=l;表達(dá)式"x+++y+++z++”的值是?A)3B)4C)5D)表達(dá)式錯誤進(jìn)制表示表達(dá)式T2|012”的值是—?A)1B)0C)12D)14以下程序段:inta=3,b=4;a=ab;b=ba;a=ab;則執(zhí)行以上語句后a和b的值分別是—.A)a=3,b=4B)a=4,b=3C)a=4,b=4D)a=3,b=3【1.32】在位運(yùn)算中,操作數(shù)每右移一位,其結(jié)果相當(dāng)于—oA)操作數(shù)乘以2B)操作數(shù)除以2C)操作數(shù)除以16D)操作數(shù)乘以16[1.33]已知chara=222;執(zhí)行語句a=a&052;后,變量a的值是。A)222B)10C)244D)254[1.34]已知二進(jìn)制數(shù)a是00101101,如果想通過整型變量b與a做異或運(yùn)算,使變量a的高4位取反,低4位不變,則二進(jìn)制數(shù)b的值應(yīng)是oA)11110000B)00001111C)11111111D)00000000[1.35]已知inta=15,執(zhí)行語句a=a<<2以后,變量a的值是.A)20B)40C)60D)80[1.36]已知intx=5,y=5,z=5;執(zhí)行語句x%=y+z;后,x的值是.A)0B)1C)5D)6【1.37】使用語句scanf("x=%f,y=%f",&x,&y);輸入變量x、y的值(口代表空格),正確的輸入是oA)1.25,2.4B)1.25D2.4C)x=l.25,y=2.4D)x=1.25Qy=2.4循環(huán)語句中有語法錯誤的是-.A)while(x=y)5;B)while(O);C)do2;while(x==b);D)dox++while(x==10);intx=(l,2,3,4);變量x的值是。A)1B)2C)3D)4[1.40]表達(dá)式sizeof(double)是。A)函數(shù)調(diào)用B)double型表達(dá)式C)int型表達(dá)式D)非法表達(dá)式語句printf(*2:%d,",printf(*1:%d,z/,scanf(w%d*,&x)));以后的輸出結(jié)果是—OA)2:1,1:1,B)1:1,2:1,C)2:4,1:1D)1:1,2:4,[1.42]已知:intx,y;doublez;則以下語句中錯誤的函數(shù)調(diào)用是。A)scanf(*%d,%lx,%le*,&x,&y,&z);B)scanf(*%2d*%d%lf*,&x,&y,&z);C)scanfC%x%*d%o//,&x,&y);D)scanf("%x%o%6.2f",&x,&y,&z);件表達(dá)式"(0?匕++):((:一)''中的表達(dá)式(n)等價的表達(dá)式是—oA)(n==0)B)(n==l)C)(n!=0)D)(n!=l)[1.44]已知inti=l,j=0;執(zhí)行下面語句后j的值是。while(i)switch(i){case1:i+=l;j++;break;i+=2;j++;break;i+=3;j++;break;default:i—;j++;break;A)1B)2C)3D)死循環(huán)滿足式12+22+32+……+n2<1000的n,正確的語句是。for(i=l,s=0;(s=s+i*i)<=1000;n=i++);for(i=l,s=0;(s=s+i*i)<=1000;n=++i);for(i=l,s=0;(s=s+i*++i)<=1000;n=i);for(i=l,s=0;(s=s+i*i++)<=1000;n=i);[1.46]下面的for語句。for(x=0,y=10;(y>0)&&(x<4);x++,y—);A)是無限循環(huán)B)循環(huán)次數(shù)不定C)循環(huán)執(zhí)行4次D)循環(huán)執(zhí)行3次[1.47]已知inti=l;執(zhí)行語句while(i++<4);后,變量i的值為.A)3B)4C)5D)6intx=12,y=3;執(zhí)行下述程序后,變量x的值是。do{x/=y—;}while(x>y);A)1B)2C)3D)程序運(yùn)行有錯誤[1.49]已知chara[][20]={"Beijing","shanghai","tianjin","chongqing”};語句printf("枇”,a[30]);的輸出是。A)〈空格>B)nC)不定D)數(shù)組定義有誤維數(shù)組的正確說明是_C_oA)inta口口={1,2,3,4,5,6};B)inta[2][]={1,2,3,4,5,6};C)inta[][3]={1,2,3,4,5,6);D)inta[2,3]={1,2,3,4,5,6};符數(shù)組s賦值,不合法的一個是_C_。chars[]="Beijing”;chars[20]={"beijing”};chars[20];s="Beijing”;chars[20]={'B','e','i','j','i','n','g'};符數(shù)組str賦初值,str不能作為字符串使用的一個是_D_。charstrD="shanghai”;charstr[]={"shanghai”};charstr[9]={'s,,,h,,,a,,,n,,,g,,,h,,,a,,,i,};charstr[8]={,s,,,h,,,a,,,n,,,g,,,h,,,a,,,i,};一個變量在整個程序運(yùn)行期間都存在,但是僅在說明它的函數(shù)內(nèi)是可見的,這個變量的存儲類型應(yīng)該被說明為_A一A)靜態(tài)變量B)動態(tài)變量C)外部變量D)內(nèi)部變量個C源程序文件中,若要定義一個只允許在該源文件中所有函數(shù)使用的變量,則該變量需要使用的存儲類別是。DA)externB)registerC)autoD)static【1.57]在C語言中,函數(shù)的數(shù)據(jù)類型是指_A_。A)函數(shù)返回值的數(shù)據(jù)類型B)函數(shù)形參的數(shù)據(jù)類型0調(diào)用該函數(shù)時的實(shí)參的數(shù)據(jù)類型D)任意指定的數(shù)據(jù)類型如下定義的函數(shù):funl(a){printf("\n%d",a);}則該函數(shù)的數(shù)據(jù)類型是_A_。A)與參數(shù)a的類型相同B)void型0沒有返回值D)無法確定一個函數(shù)實(shí)現(xiàn)交換x和y的值,并將結(jié)果正確返回。能夠?qū)崿F(xiàn)此功能的是_C_OA)swapa(intx,inty)B)swapb(int*x,int*y){inttemp;{inttemp;temp=x;x=y;y=temp;temp=x;x=y;y=temp;})C)swapc(int*x,int*y)D)swapd(int*x,int*y){inttemp;{int*temp;temp=*x;*x=*y;*y=temp;temp=x;x=y;y=temp;個角的正弦函數(shù)值的平方。能夠?qū)崿F(xiàn)此功能的函數(shù)是一B.sqofsina(x)floatx;{return(sin(x)*sin(x));}doublesqofsinb(x)floatx;{return(sin((double)x)*sin((double)x));)doublesqofsinc(x){return(((sin(x)*sin(x));)sqofsind(x)floatx;{return(double(sin(x)*sin(x)));一個函數(shù)內(nèi)有數(shù)據(jù)類型說明語句如下:doublex,y,z(10);關(guān)于此語句的解釋,下面說法正確的是_D_。z是一個數(shù)組,它有10個元素。z是一個函數(shù),小括號內(nèi)的10是它的實(shí)參的值。0z是一個變量,小括號內(nèi)的10是它的初值。D)語句中有錯誤。函數(shù)定義如下:floatfunl(intx,inty){floatz;z=(float)x/y;return(z);主調(diào)函數(shù)中有inta=l,b=0;可以正確調(diào)用此函數(shù)的語句是_D_A)printf funl(a,b));B)printf(〃%f”,funl(&a,&b));C)printf funl(*a,*b));D)調(diào)用時發(fā)生錯誤函數(shù)的功能是_B_。a(sl,s2)charsi[],s2[];{while(s2++=sl++);)A)字符串比較B)字符串復(fù)制C)字符串連接D)字符串反向列結(jié)論中,只有一個是錯誤的,它是。CC語言允許函數(shù)的遞歸調(diào)用C語言中的continue語句,可以通過改變程序的結(jié)構(gòu)而省略0有些遞歸程序是不能用非遞歸算法實(shí)現(xiàn)的D)C語言中不允許在函數(shù)中再定義函數(shù)[1.65]已知:inta,*y=&a;則下列函數(shù)調(diào)用中錯誤的是。DA)scanf("/d”,&a);B)scanf("%d",y);printfa);D)printfy);語句"int(*p)();”的含義是。Cp是一個指向一維數(shù)組的指針變量p是指針變量,指向一個整型數(shù)據(jù)0p是一個指向函數(shù)的指針,該函數(shù)的返回值是一個整型D)以上都不對說明int(*p)[4];其中的標(biāo)識符p是。CA)4個指向整型變量的指針變量B)指向4個整型變量的函數(shù)指針0一個指向具有4個整型元素的一維數(shù)組的指針D)具有4個指向整型變量的指針元素的一維指針數(shù)組[1.68]已知:chars[10],*p=s,則在下列語句中,錯誤的語句是。BA)p=s+5;B)s=p+s;C)s[2]=p[4];D)*p=s[0];:chars[100];inti;則引用數(shù)組元素的錯誤的形式是.A)s[i+10]B)*(s+i)C)*(i+s)D)*((s++)+i)D[1.70]已知:chars[6],*ps=s;則正確的賦值語句是。CA)s=*12345*;B)*s=*12345*;C)ps="12345";D)*ps="12345";:chara[3][10]={"Beijing","ShangHai","Tianjin"},*pa=a;不能正確顯示字符串"ShangHai”的語句是。CA)printf(w%s*,a+1);B)printf(z/%s*,*(a+1));C)printf*a+l);D)printf&a[l][0]);[1.72]已知:inta[4][3]={l,2,3,4,5,6,7,8,9,10,11,12);int(*ptr)[3]=a,*p=aE0];則以下能夠正確表示數(shù)組元素a[l][2]的表達(dá)式是。AA)*(*(a+1)+2)B)*(*(p+5))C)(*ptr+l)+2D)*((ptr+l)[2]):inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a;則值為3的表達(dá)式是。AA)p+=2,*(p++)B)p+=2,*++pC)p+=2,*p++D)p+=2,++*p[1.74]已知:inta[]={l,2,3,4},y,*p=a;則執(zhí)行語句y=(*++p)—;之后,數(shù)組a各元素的值變?yōu)橐籅_oA)0,1,3,4B)1,1,3,4C)1,2,2,4D)1,2,3,3變量y的值是_B_。A)1B)2C)3D)4:inta[]={1,3,5,7},y*p=a;為使變量y的值為3,下列語句正確的是_D_。A)y=++*p++;B)y=++(*p++);C)y=(++*p)++;D)y=(*++p)++;[1.76]已知:intx[]={1,3,5,7,9,11),*ptr=x;則能夠正確引用數(shù)組元素的語句是。BA)xB)*(ptr-)C)x[6]D)*(-ptr)的功能是交換變量x和y中的值,且通過正確調(diào)用返回交換的結(jié)果。能正確執(zhí)行此功能的函數(shù)是。DA)funa(int*x,int*y)B)funb(intx,inty){int*p; {intt;p=x;*x=*y;*y=*p;t=x;x=y;y=t;C)func(int*x,int*y)D)func(int*x,int*y){*x=*y;*y=*x; (*x=*x+*y;*y=*x.*y;*x=*x-*y;義如下:Bstructsk{inta;floatb;}data,*p;如果p=&data;則對于結(jié)構(gòu)變量data的成員a的正確引用是A)(*).data,aB)(*p).aC)p->data.aD)p.data,a:structst{intn;structst*next;);staticstructsta[3]={l,&a[l],3,&a[2],5,&a[0]},*p;如果下述語句的顯示是2,則對p的賦值是_C_。printf++(p->next->n));A)p=&a[0];B)p=&a[l];C)p=&a[2];D)p=&a[3];:structperson{charname[10];intage;}class[10]={^LiMing^,29,“ZhangHong”,21,"WangFang”,22};下述表達(dá)式中,值為72的一個是_B_。class[0]->age+class[l]->age+class[2]->ageclass[1].name[5]person[1].name[5]clase->name[5]:{inti;charc;floata;}test;則sizeof(test)的值是。DA)4B)5C)6D)7:Aunion{inti;charc;floata;}test;則sizeof(test)的值是。A)4B)5C)6D)7:Cunionu_type{inti;charch;floata;}temp;現(xiàn)在執(zhí)行"temp,i=266;printf temp,ch)〃的結(jié)果是。A)266B)256C)10D)1以下程序段:Dstructdent{intn;int*m;};inta=l,b=2,c=3;structdents[3]={{101,&a},{102,&b},{103,&c}};structdent*p=s;則以下表達(dá)式中值為2的是。A)(p++)->mB)*(p++)->mC)(*p).mD)*(++p)->m以下說明語句,則對結(jié)構(gòu)變量pup中sex域的正確引用是。Dstructpupil{charname[20];intsex;}pup,*p;p=&pup;A)p.pup.sexB)p->pup.sexC)(*p).pup.sexD)(*p).sex對結(jié)構(gòu)變量stul中成員age的非法引用是。Bstructstudent{intage;intnum;}stul,*p;p=&stul;A)stul.ageB)student,ageC)p->ageD)(*p).age[L87]若有以下定義和語句:uniondata{inti;charc;floatf;}a;intn;則以下語句正確的是C。A)a=5;B)a={2/a,1.2};C)printf(〃%d\n”,a);D)n=a;:structsk{inta;intage;}date,*p;如果要使指針P指向data中的成員a,正確的賦值語句是_A_。A)p=(structsk*)&data.a;B)p=(structsk*)data,a;C)p=&data.a;D)*p=data,a;[1.89]已知enumweek{sun,mon,tue,wed,thu,fri,sat}day;則正確的賦值語句是_D_oA)sun=0;C)san=day;D)sun=mon;D)day=sun;[1.90]已知enumcolor{red,yellow=2,blue,white,black}ren;執(zhí)行下述語句的輸出結(jié)果是_D_。printf(繪d〃,ren二white);A)0B)1C)3D)4[1.91]已知enumname{zhao=l,qian,sun,li}man;執(zhí)行下述程序段后的輸出是—A_oman=0;switch(man){case0:printf("People'n");printf(z,Man\n,z);printf(//Woman\n,/);default:printf("Error'n");)A)PeopleB)ManC)WomanD)Error關(guān)于枚舉類型名的定義中,正確的是_B_oA)enema={one,two,three};B)enema{one=9,two=-l,three};C)enema={〃one","two","three”};D)enema{"one","two","three”};C語言中標(biāo)準(zhǔn)輸入文件stdin是指。AA)鍵盤B)顯示器C)鼠標(biāo)D)硬盤【1.94】要打開一個已存在的非空文件〃file〃用于修改,選擇正確的語句_DA)fp=fopen("file〃,"r");B)fp二fopen("file",〃a+");C)fp=fopen(z,filezz,"w");D)fp二fopen('file","r+〃);利執(zhí)行了文件關(guān)閉操作時,fclose函數(shù)的返回值是。CA)-1B)TRUEC)0D)1[1.96]fscanf函數(shù)的正確調(diào)用形式是。Dfscanf(文件指針,格式字符串,輸出列表);fscanf(格式字符串,輸出列表,文件指針);0fscanf(格式字符串,文件指針,輸出列表);D)fscanf(文件指針,格式字符串,輸入列表);宏定義#defineN3SdefineY(n)((N+l)*n)執(zhí)行語句z=2*(N+Y(5+l));后,變量z的值是oA)42B)48C)52D)出錯宏定義#defineSQ(x)x*x,執(zhí)行語句printf("肌I”,10/SQ(3));后的輸出結(jié)果是一.A)1B)3C)9D)10[1.100]已知宏定義如下:SdefinePRprintf#defineNL"\n"#defineD*%d*#defineDIDNL若程序中的語句是PR(DI,a);經(jīng)預(yù)處理后展開為—oA)printf(%d\n,a);B)printf("%d\n",a);C)printf("%d""\n",a);D)原語句錯誤二、閱讀程序題導(dǎo)讀:學(xué)會閱讀程序?qū)τ诔鯇W(xué)者來說很重要,一方面可以鞏固所學(xué)的語法知識,另一方面通過閱讀別人寫好的程序來打開自己的思路,就所謂見多識廣。讀者通過閱讀理解程序,從給出的四個備選參考答案中,選擇程序的正確輸出。如果選擇有誤,就要認(rèn)真分析原因,是概念方面的錯誤還是對程序邏輯理解不對,從而加深對語法規(guī)則的理解,提高程序設(shè)計(jì)能力。程序設(shè)計(jì)語言是開發(fā)程序的一個工具,學(xué)習(xí)語言的目的是為了編寫程序來解決實(shí)際問題,所以特別提倡通過實(shí)際上機(jī)來檢驗(yàn)備選答案,增強(qiáng)動手能力。習(xí)題基本上是按照教材的章節(jié)來安排的,讀者可以根據(jù)學(xué)習(xí)的進(jìn)度選擇部分習(xí)題。[2.1]以下程序的輸出結(jié)果是。main(D){floata;a=l/100000000;printfa);}A)0.00000e+00B)0.0C)1.00000e-07D)0[2.2]下面程序的輸出結(jié)果是_B_。#include<stdio.h>main()intx=10;intx=20;printf("%d,”,x);|printf("%d\n",x);)A)10,20B)20,10C)10,10D)20,20程序的輸出結(jié)果是_C_。main(){unsignedintn;inti=-521;n=i;printf("n=%u\n”,n);)A)n=-521B)n=521C)n=65015D)n=102170103程序的輸出結(jié)果是。main(D){intx=10,y=10;printf(線d%d\n”,x , y);)A)1010B)99C)910D)109程序的輸出結(jié)果是_B—。mainO{intn=l;printf(/z%d%d%d\n”,n,n++,n--);)A)111B)101C)110D)121程序的輸出結(jié)果是_A_omain(){intx=0x02ff,y=OxOffOO;printf("%d\n”,(x&y)>>4|0x005f);)A)127B)255C)128D)1程序的輸出結(jié)果是_A_。mainO{inta=l;charc=,a);floatf=2.0;printf(\d\n〃,(!(a=0),f!=0&&c='A'));}A)0B)1程序的輸出結(jié)果是_B_0mainO{inta=l,i=a+l;do{a++;}while(!~i++>3);printf("%d\n",a);}A)1B)2C)3D)4程序的輸出結(jié)果是_A_。main(){inta=lll;a二a00;printf("%d,%o\n〃,a,a);)A)111,157B)0,0C)20,24D)7,7[2.10]下面程序的輸出結(jié)果是omain(){chars[12]=book”;printf(,z%.4s”,s);)A)abook!B)abook!〈四個空格》C)aboD)格式描述錯誤,輸出不確定[2.11]下面程序的輸出結(jié)果是—omain(){inta,b;scanfC%2d%3d*,&a,&b);printf(,za=%db二%d\n”,a,b);)A)a=12b=34B)a=123b=45C)a=12b=345D)語句右錯誤[2.12]以下程序段的輸出結(jié)果是。inta=10,b=50,c=30;if(a>b)a二b;b=c;c=a;printf("a=%db=%dc=%d\nz,,a,b,c);A)a=10b=50c=10B)a=10b=30c=10C)a=50b=30c=10D)a=50b=30c=50[2.13]以下程序的輸出結(jié)果是。mainO{inta=0,b=l,c=0,d=20;if(a)d=d-10;elseif(!b)if(!c)d=15;elsed=25;printf(zzd=%d\nz,,d);)A)d=10B)d=15C)d=20D)d=25[2.14]下面程序的輸出結(jié)果為。main(){inta=l,b=O;switch(a){case1:switch(b){case0:printf("**0**〃);break;printf(〃**1**〃);break;}printf(〃**2**〃);break;})A)**0**B)**0****2**C)**0****l****2**D)有語法錯誤[2,15]以下程序的輸出結(jié)果是。main(){char*s=〃12134211〃;intvl=O,v2=0,v3=0,v4=0,k;for(k=0;s[k];k++)switch(s[k]){case'r:vl++;case'3':v3++;case'2':v2++;default:v4++;)printf(z/vl=%d,v2=%d,v3=%d,v4二%d\rT,vl,v2,v3,v4);A)vl=4,v2=2,v3=l,v4=lB)vl=4,v2=9,v3=3,v4=lC)vl=5,v2=8,v3=6,v4=lD)vl=4,v2=7,v3=5,v4=8[2.16]卜面程序的輸出是。main(){intx=l,y=O,a=O,b=O;switch(x){case1:switch(y){case0:a++;break;b++;break;)a++;b++;break;)printf(,za=%d,b=%d\n,z,a,b);)A)a=2,b=lB)a=l,b=lC)a=l,b=0D)a=2,b=2[2.17]下面程序的輸出是omain(){intnum=0;while(num<=2){num++;printfC%d\n',num);))A)1B)1C)1D)1223[2.18]下面程序的輸出結(jié)果是omain(){inta=l,b=0;do{switch(a){case1:b=l;break;case2:b=2;break;default:b=0;)b=a+b;}while(!b);printf(,za=%d,b=%d,z,a,b);)A)1,2B)2,1C)1,1D)2,2[2.19]從鍵盤上輸入〃446755〃時,下面程序的輸出是#include<stdio.h>main(){intc;while((c=getchar())!='\n)switch(c-'2'){case0:putchar(c+4);putchar(c+4);break;putchar(c+3);default:putchar(c+2);break;)printf('\n");)A)888988B)668966C)88898787D)66898787[2.20]下面程序的輸出結(jié)果是omain(){intk=0;charc=,A';do{switch(c++){case'A':k++;break;case'B':k-;case'C':k+=2;break;case'D':k=k%2;contiue;case'E':k=k+10;break;default:k=k/3;}k++;}while(c<'C');printf("k=%d\n〃,k);)A)k=lB)k=2C)k=3D)k=4程序的輸出結(jié)果是—omain(){intx,i;for(i=l;i<=100;i++){x=i;if(++x%2==0)if(++x%3==0)if(++x%7==0)printf(zz%d”,x);))A)3981B)4284C)2668D)2870[2.22]下面程序的輸出結(jié)果是o#include<stdio.h>main(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+l)];for(i=0;i<3;i++)k+=p[i]*2;printf(,z%d\nz\k);)A)20B)21C)22D)23[2.23]假定從鍵盤上輸入〃3.6,2.4<回車>〃,下面程序的輸出是#include<math.h>main(){floatx,y,z;scanf(/z%f,%f&x,&y);z=x/y;while(l){if(fabs(z)>1.0){x=y;y=z;z=x/y;)elsebreak;)printfy);)A)1.500000B)1.600000C)2.000000D)2.400000[2.24]下面程序的輸出結(jié)果是omain(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<-3;j++){if(j%2)continue;x++;)x++;)printf("x==%d\n”,x);}A)x=4B)x=8C)x=6D)x=12[2.25]下面程序的輸出結(jié)果是—main(){inti,j,k=10;for(i=0;i<2;i++){k++;{intk=0;for(j=0;j<=3;j++){if(j%2)continue;k++;})k++;)printf("k=%d\n",k);}A)k=4B)k=8C)k=14D)k=18[2,26]下面程序的輸出結(jié)果是一#include<stdio.h>main(){intn[3][3],i,j;for(i=0;i<3;i++)for(j=0;j<3;j++)n[i][j]=i+j;for(i=0;i<2;i++)for(j=0;j<2;j++)n[i+l][j+l]+=n[i][j];printf(Nd'rr,n[i][j]);)A)14B)0C)6D)不確定[2.27]下面程序的輸出結(jié)果是。#include<stdio.h>main(){inta[4][5]={1,2,4,-4,5,-9,3,6,-3,2,7,8,4};inti,j,n;n=9;i=n/5;j=n-i*5-l;printf("a[%d][%d]=%d\n”,i,j,a[i][j]);)A)6B)-3C)2D)不確定[2.28]下面程序的輸出結(jié)果是—ointm[3][3]={{1},⑵,⑶};intn[3][3]={1,2,3};main(){printf("%d\n",m[l][0]+n[0][0]);/*①*/printfm[0][l]+n[l][0]);/*②*/)①A)0B)1C)2D)3②A)0B)1C)2D)3【2.29]下面程序的輸出結(jié)果是—。^include<stdio.h>main(){charsi[50]={"somestring*〃},s2口={"test"};printf("%s\n”,strcat(si,s2));)A)somestring*B)testC)somestritestD)somestring*test[2.30]下面程序的輸出結(jié)果是—o#include<stdio.h>f(char*s){char*p=s;while(*p!=,\0,)p++;return(p-s);)main(){printf(級d\n〃,f("ABCDEF"));)A)3B)6C)8D)0程序的輸出結(jié)果是—。#include<stdio.h>Sinclude<string.h>main(){charstr[100]="Howdoyoudo”;strcpy(str+strlen(str)/2,“esshe");printf(\s\n〃,str);A)HowdoyoudoB)essheC)HowareyouD)Howdoesshe[2.32]下面程序的輸出結(jié)果是—ottinclude<stdio.h>func(inta,intb){intc;c=a+b;return(c);)mainO{intx=6,y=7,z=8,r;r=func((x-,y++,x+y),z一);printf(級d\n”,r);)A)11B)20C)21D)31[2.33]下面程序的輸出結(jié)果是—o#include<stdio.h>voidfun(int*s){staticintj=0;do{s[j]+=s[j+l]?}while(++j<2);)main(){intk,a[10]={l,2,3,4,5};for(k=l;k<3;k++)fun(a);for(k=0;k<5;k++)printf("%d",a[k]);A)35756B)23445C)35745D)12345程序的輸出結(jié)果是ottinclude<stdio.h>intk=l;main(){inti=4;fun(i);printf("\n%d,%d”,i,k);/*①*/)fun(intm){m+=k;k+=m;{chark=,B';printfC\n%d",k」A');/*②*/)printf("\n%d,%d”,m,k);/*③*/)①A)4,1B)5,6C)4,6D)A,B,C參考答案都不對②A)1B)-59C)-64D)A,B,C參考答案都不對③A)5,66B)1,66C)5,6D)A,B,C參考答案都不對[2.35]下面程序的輸出結(jié)果是_C_。Sinclude<stdio.h>fun(intn,int*s){intfl,f2;if(n==l||n==2)*s=l;else{fun(n-l,&fl);fun(n-2,&f2);*s=fl+f2;main(){intx;fun(6,&x);printf("%d\n",x);)A)6B)7C)8D)9[2.36]下面程序的輸出結(jié)果是_B_ointw=3;main()intw=10;printf(,z%d\nzz,fun(5)*w);)fun(intk)if(k==0)return(w);return(fun(k-l)*k);}A)360B)3600C)1080D)1200[2.37]下面程序的輸出結(jié)果是_D_ottinclude<stdio.h>funa(inta){intb=0;staticintc=3;a=c++,b++;return(a);)main(){inta=2,i,k;for(i=0;i<2;i++)k=funa(a++);printf(,z%d\nz\k);A)3B)0C)5D)4[2.38]下面程序的輸出結(jié)果是—B_。^include<stdio.h>voidnum(){externintx,y;inta=15,b=10;x=a-b;y=a+b;}intx,y;main(){inta=7,b=5;x=a-b;y=a+b;num();printf(〃%d,%d\n〃,x,y);)A)12,2B)5,25C)1,12D)輸出不確定[2,39]下面程序的輸出結(jié)果是_D_。main(){inta=2,i;for(i=0;i<3;i++)printf("%4d”,f(a));)f(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);A)777B)71013C)7911D)789【2.40]下面程序的輸出結(jié)果是_D_。Sinclude<stdio.h>try(){staticintx=3;x++;return(x);}main(){inti,x;for(i=0;i<=2;i++)x=try();printf("%d\n〃,x);)A)3B)4C)5D)6程序的輸出結(jié)果是_D_。#include<stdio.h>main(){intx=l;voidfl(),f2();fl();f2(x);printf("%d\n",x);)voidfl(void){intx=3;printf(/?%d〃,x);)voidf2(x)intx;{printf(/?%d",++x);}A)111B)222C)333D)321程序的輸出結(jié)果是_A_。Winclude<stdio.h>#defineSUB(X,Y)(X)*YmainO{inta=3,b=4;printf(組d\n”,SUB(a++,b++));}A)12B)15C)16D)20程序的輸出結(jié)果是_A_。main(){inta[]={1,2,3,4,5,6};int*p;p=a;printfC%d”,*p);printfC%d”,*(++p));printf("%d",*++p);printfC%d",*(p—));p+=3;printf(,?%d%d",*p,*(a+3));)A)123354B)123456C)122345D)123445[2,44]下面程序的輸出結(jié)果是—C_。main(){inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};int*p=a;p+=6;printf(*%d”,*p);/*①*/printf(*%d*,*(*(a+6)));/*②*/printf(/z%d",*(a[l]+=2));/*③*/printf*(&a[0][0]+6));/*④*/)A)7777B)②句語法錯誤C)③句語法錯誤D)④句語法錯誤[2.45]下面程序的輸出結(jié)果是—o#defineFMT"X\n”#include<stdio.h>main(){staticinta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};printf(FMT,a[2][2]);/*①*/printf(FMT,*(*(a+l)+l));/*②*/}①A)9B)11C)AD)B②A)6B)7C)8D)前面三個參考答案均是錯誤的程序的輸出結(jié)果是_B_。Sinclude<stdio.h>main(){inta[]={l,2,3,4,5);intx,y,*p;P=&a[0];x=*(p+2);y=*(p+4);printf(w%d,%d,%d\nz,,*p,x,y);}A)1,3,5B)1,2,3C)1,2,4D)1,4,5程序的輸出結(jié)果是_D_。voidive(x,n)intx口,n;{intt,*p;p=x+n-l;while(x<p){t=*x;*x++=*p;*p—=t;}return;)main(){inti,a[]={l,2,3,4,5,6,7,8,9,0);ive(a,10);for(i=0;i<10;i++)printf(//%dprintf("\n");)A)1234567890B)0987654321C)1357924680D)0864297531[2,48]下面程序的輸出結(jié)果是#include"string,h”fun(char*w,intn){chart,*sl,*s2;sl=w;s2=w+n-l;while(sl<s2){t=*sl++;*sl=*s2一;*s2=t;main(){staticchar*p=〃1234567”;fun(p,strlen(p));printf("%s”,p);)A)7654321B)1717171C)7171717D)1711717[2.49]下面程序的輸出結(jié)果是_D_。ttinclude<stdio.h>char*p="abcdefghijklmnopq”;main(){inti=0;while(*p++!='e);printf("祝\n〃,*p);)A)cB)dC)eD)f[2.50]下面程序的輸出結(jié)果是_A_。#include<stdio.h>f(intx,inty){return(y-x);)main(){inta=5,b=6,c;intf(),(*g)()=f;printf("%d\n",(*g)(a,b));)A)1B)2C)3D)前面三個參考答案均是錯誤的[2.51]下面程序的輸出結(jié)果是—C_oSinclude<stdio.h>main(){inta=l,*p,**pp;PP=&P;p=&a;a++;printf("%d,%d,%d\n”,a,*p,**pp);)A)2,1,1B)2,1,2C)2,2,2D)程序有錯誤[2.52]下面程序的輸出結(jié)果是_A_。main(){char*alpha[7]={〃ABCD〃,”EFGH〃,〃MNOP〃,〃QRS『,〃UVWX〃,〃YZ”};char**p;inti;p=alpha;for(i=0;i<4;i++)printf*(p[i]));printf("\n");}A)AEIMB)BFJNC)ABCDD)DHLP[2.53]下面程序的輸出結(jié)果是.#include<stdio.h>char*pp[2][3]={〃abc〃,〃defgh〃, 〃mnopqr〃,〃stuvw〃,〃xyz〃};main(){printf(,z%c\n,z,***(pp+1));/*①*/Dprintf(,z%c\n,z,**pp[0]);/*②*/printf("%c\n”,(*(*(pp+1)+1))[4]);/*③*/printf(,z%c\nz,,*(pp[l][2]+2));/*④*/printf("%s\rT,**(pp+1));/*⑤*/)TOC\o"1-5"\h\zA) a B) d C) i D) mA) a B) d C) i D) mA) h B) 1 C) q D) w(4)A)kB)oC)uD)z⑤A)ijklB)mnopqrC)stuvwD)xyz【2.54]下面程序的輸出結(jié)果是—?ttinclude"stdio.h〃structstrl{charc[5];char*s;);main(){structstrlsi[2]={{〃ABCD〃〃EFGH〃}, 〃LMN〃}};structstr2{structstrlsr;intd;}s2={〃OPQ〃,〃RST〃,32767);structstrl*p⑵;p[0]=&sl[0];p[l]=&sl[l];printf++p[l]->s);/*①*/printf("%c”,s2.sr.c[2]);/*②*/}A)LMNB)MNC)ND)IJKA)0B)PC)QD)R[2.55]以下程序的輸出結(jié)果是—ostructst{intx,*y;)*p;ints[]={10,20,30,40};structsta[]={l,&s[0],2,&s[1],3,&s[2],4,&s[3]};main(){p=a;printf("%d\n”,++(*(++p)->y));)A)10B)11C)20D)21[2,56]以下程序的輸出結(jié)果是—Sinclude<stdio.h>mainO{unionEXAMPLE{struct{intx,y;}in;inta,b;}e;a=1;e.b—2;in.x=e.a*e.b;in.y=e.a+e.b;printf("%d,%d\n,zse.in.x,e.in.y);)A)2,3B)4,4C)4,8D)8,8程序的輸出結(jié)果是—#include<stdio.h>mainO{union{inti[2];longk;charc[4];}r,*s=&r;s->i[0]=0x39;s->i[l]=0x38;printfs->c[0]);)A)39B)9C)38D)8程序的輸出是。main(){printf("%d\n",EOF);)A)-1B)0C)1D)程序是錯誤的三、程序填空題導(dǎo)讀:在程序填空題中,已經(jīng)給出了程序的主干,讀者首先要理解程序的思路,再選擇正確的內(nèi)容填入空白處,使程序完成既定的功能。這類習(xí)題的設(shè)計(jì)就是要引導(dǎo)讀者逐步掌握編程的方法。本節(jié)習(xí)題的難度適中,可能有些典型的程序在課堂上已經(jīng)有所接觸,讀者一定要獨(dú)立完成它,這樣就可以逐步提高自己的編程能力。在程序設(shè)計(jì)語言學(xué)習(xí)的中期,讀者對程序設(shè)計(jì)已經(jīng)有了初步的了解,而自己編寫程序又不知從何處入手,此時解答此類題目可以避免盲目性,從而提高學(xué)習(xí)的效率。程序的功能是不用第三個變量,實(shí)現(xiàn)兩個數(shù)的對調(diào)操作。#include<stdio.h>main(){inta,b;scanf(*%d%d*,&a,&b);printf(*a=%d,b=%d\n,z,a,b);a=①;b=②;a=③;printf("a=%d,b=%d\n”,a,b);}答:①a+b②a-b③a-b程序的功能是根據(jù)近似公式:“2/6-1/12+1/22+1/32+……+l/n2,求n值。Sinclude<math.h>doublepi(longn){doubles=0.0;longi;for(i=l;i<=n;i++)s=s+①;return(②);}答:①(float)(i*i)②sqrt(6*s)的程序的功能是求一維數(shù)組中的最小元素。findmin(int*s,intt,int*k){intp;for(p=0,*k=p;p<t;p++)if(s[p]<s[*k])①;)main(){inta[10],i,*k=&i;for(i=0;i<10;i++)scanf(〃%d",&a[i]);findmin(a,10,k);printf("%d,%d\n”,*k,a[*k]);)答:①*k=P程序的功能是計(jì)算1-3+5-7+……-99+101的值。main(){inti,t=l,s=0;for(i=l;i<=101;i+=2)(①;s=s+t;②;答:①t=t*i②t=t>0-1:1下程序段:s=l.0;for(k=l;k<=n;k++)s=s+l.0/(k*(k+1));printf("%f\rT,s);填空完成下述程序,使之與上述程序的功能完全相同。s=0.0;①;k=0;do{s=s+d;②;d=1.0/(k*(k+l));}while(③);printf("%f\n",s);答:①d=1②k++③k<=n程序的功能是將形參x的值轉(zhuǎn)換為二進(jìn)制數(shù),所得的二進(jìn)制數(shù)放在一個一維數(shù)組中返回,二進(jìn)制數(shù)的最低位放在下標(biāo)為0的元素中。fun(intx,intb[]){intk=0,r;do{r=x%①;b[k++]=r;x/=②;}while(x);答.①x>=0②x<amin程序的功能是輸出1到100之間每位數(shù)的乘積大于每位數(shù)的和的數(shù)。例如數(shù)字26,數(shù)位上數(shù)字的乘積12大于數(shù)字之和8omain(){intn,k=l,s=0,m;for(n=l;n<=100;n++){k=l;s=0;①;while(②){k*=m%10;s+=m%10;③;)if(k>s)printfn);))答:①mnn②m>0③m=m/10[3.9]下面程序的功能是統(tǒng)計(jì)用0至9之間的不同的數(shù)字組成的三位數(shù)的個數(shù)。main(){inti,j,k,count=0;for(i=l;i<=9;i++)for(j=0;j<=9;j++)if(①)continue;elsefor(k=0;k<=9;k++)if(②)count++;printfcount);答:①i=J②k!=i&&k!=j答:【3.10]下面程序的功能是輸出100以內(nèi)的個位數(shù)為6、且能被3整除的所有數(shù)。main(){inti,j;for(i=0;①;i++){j=i*10+6;if(②)countinue;printfj);))答:①iV9②J%3!二0[3.111下面程序的功能是用輾轉(zhuǎn)相除法求兩個正整數(shù)m和n的最大公約數(shù)。hcf(intm,intn){intr;if(m<n){r=m;①;)r=m%n;while(②){m=n;n=r;r=m%n;)③;)型:①m=n②r!=。③return(n)[3.12]下面程序的功能是使用冒泡法對輸入的10個浮點(diǎn)數(shù)從小到大進(jìn)行排序。排好序的10個數(shù)分兩行輸出。程序如下:^include<stdio.h>main(){①;inti,j;printf("Input10numbersplease'n");for(i=0;②;i++)scanf("%f”,&a[i]);printf('\n");for(i=2;③;i++)for(j=0;④;j++)if(⑤){x=a[j];⑥;a[j+l]=x;)printf("Thesorted10numbers;\n");for(i=0;⑦;i++){if(⑧)printf('\n");printf a[i]);)printf('\n");}[]答案:①floata[10],x②i<=9③i<=8④j<=9-i⑤a[j]>a[j+1]⑥a[j]=a[j+1]⑦i<=9⑧i%5=0【3.13]下面程序的功能是讀入20個整數(shù),統(tǒng)計(jì)非負(fù)數(shù)個數(shù),并計(jì)算非負(fù)數(shù)之和。Sinclude"sldio.h"main(){inti,a[20],s,count;s=count=0;for(i=0;i<20;i++)scanf(〃%d〃,①);for(i=0;i<20;i++){if(a[i]<0)②;s+=a[i];count++;}printf(,zs=%d\tcount二%d\n”,s,count);)答①&a[i]②continue程序的功能是刪除字符串s中的空格。#include<stdio.h>main(){char*s="Beijingligongdaxue”;inti,j;for(i=j=0;s[i]!='\0';i++)if(s[i]!=…)①;else②;s[j]='\0';printfs);)答:①s[j++]=s[i]②s[j]=s[i]程序的功能是將字符串s中所有的字符'c'刪除。請選擇填空。#include<stdio.h>main(){chars[80];inti,j;gets(s);for(i=j=O;s[i]?='\0';i++)if(s[i]!='c')①;s[j]='\0';puts(s);}答:①s[j++]=s[i]程序的功能是輸出兩個字符串中對應(yīng)相等的字符。請選擇填空。#include<stdio.h>charx口=“programming”;chary[]—Fortran”;main(){inti=0;while(x[i]!='\0'&&y[i]!='\0')if(x[i]==y[i])printf(*%c,z,①);elsei++;)卷①x[i++]合:【3.17】下面程序的功能是將字符串s中的每個字符按升序的規(guī)則插到數(shù)組a中,字符串a(chǎn)已排好序。#include<string.h>main(){chara[20]=/zcehiknqtwz/;chars[]="fbla";inti,k,j;for(k=0;s[k]!='\0';k++){j=o;while(s[k]>=a[j]&&a[j]!='\0')j++;for(①)②;a[j]=s[k];)puts(a);)答案是:①i=strlen(a);i>=j;i-②a[i+1]=a[i]程序的功能是對鍵盤輸入的兩個字符串進(jìn)行比較,然后輸出兩個字符串中第一個不相同字符的ASCII碼之差。例如:輸入的兩個字符串分別為〃abcdefg〃和“abceef〃,則輸出為T。#include<stdio.h>main(){charstrl[100],str2[100],c;inti,s;printf("Enterstring1:");gets(strl);printf("Enterstring2:〃);gets(str2);i=0;while((strl[i]==str2[i]&&strl[i]!=①))i++;s=②;printf(/z%d\n,/,s);}答案是:①的函數(shù)expand在將字符串s復(fù)制到字符串t時,將其中的換行符和制表符轉(zhuǎn)換為可見的轉(zhuǎn)義字符表示,即用‘\n'表示換行符,用‘\t'表示制表符。expand(chars[],chart[]){inti,j;for(i=j=O;s[i]!='\0';i++)switch(s[i]){case'\n':t[①]=②;t[j++]='n';break;case'\t':t[③]=④;t[j++]='t';break;default:t[⑤]=s[i];break;}t[j]=⑥;)答案是:①j++②[3.20]下面的函數(shù)index(數(shù)ars口,chart口)檢查字符串s中是否包含字符串t,若包含,則返回t在s中的開始位置(下標(biāo)值),否則送回-1。index(chars口,chart口){inti,j,k;for(i=0;s[i]!=>\0*;i++){for(j=i,k=0;①&&s[j]==t[k];j++,k++);if(②)return(i);}return(-1);)n答案是:①t[k]!=[3.21]下面程序的功能是計(jì)算$=k!ok=0longfun(intn){inti;longs;for(i=l;i①;i++)s*=i;return(②);)main(){intk,n;longs;scanf("%d”,&n);s=③;for(k=0;k<=n;k++)s+=(4);printf("%ld\n”,s);)答案是:①v=n②s③。④fun(k)[3.22]下面程序的功能是顯示具有n個元素的數(shù)組s中的最大元素。#defineN20main(){inti,a[N];for(i=0;i<N;i++)scanf&a[i]);printf①);)fmax(ints[],intn){intk,p;for(p=0,k=p;p<n;p++)if(s[p]>s[k])②;return(k);)答案是:①a[fmax(a,N)]②k=p[3.23]下面程序的功能是由鍵盤輸入n,求滿足下述條件的x、y:nx和ny的末3位數(shù)字相同,且xWy,x、y^n均為自然數(shù),并使x+y為最小。#include<stdio.h>pow3(intn,intx){inti,last;for(last=l,i=l;i<=x;i++)last=①;return(last);)main(){intx,n,min,flag=l;scanf(/z%dz/,&n);for(min=2;flag;min++)for(x=l;x<min&&flag;x++)if(②&&pow3(n,x)==pow3(n,min-x)){printf(,zx=%d,y=%d\nzz,x,min-x);③;))答案是:①last*n②x!=min-x③flag=O[3.24]下面的程序是用遞歸算法求a的平方根。求平方根的迭代公式如下:Sinclude<math.h>doublemysqrt(doublea,doublexO){doublexl,y;xl=①;if(fabs(xl-x0)>0.00001)y=mysqrt(②);elsey=xl;return(y);}main(){doublex;printf('"Enterx:");scanfr%lfz,,&x);printf(,zThesqrtof%lf=%lf\nzz,x,mysqrt(x,1.0));)答案是:①(x0+a/x0)/2②a,x1[3,25]以下程序是計(jì)算學(xué)生的年齡。已知第一位最小的學(xué)生年齡為10歲,其余學(xué)生的年齡一個比一個大2歲,求第5個學(xué)生的年齡。#include<stdio.h>age(intn){intc;if(n==l)c=10;elsec=①;return(c);)main(){intn=5;printf("age:%d\n",②);)答案是:①2+age(n-1)②age(5)[3.26]下面的函數(shù)sum(intn)完成計(jì)算1?n的累加和。sum(intn){if(n<=0)printfC'dataerror\nz,);if(n==l)①;else②;)答案是:①return(1)②return(sum(n-1)+n)的函數(shù)是一個求階乘的遞歸調(diào)用函數(shù)。facto(intn){if(n=1)①;elsereturn(②);)答案是:①retum(1)②n*facto(n-1)【3.28】組合問題,由組合的基本性質(zhì)可知:C(m,n)=C(n-m,n)C(m,n+1)=C(m,n)+C(m-1,n)公式(2)是一個遞歸公式,一直到滿足C(l,n)=n為止。當(dāng)n<2*m時,可先用公式(1)進(jìn)行簡化,填寫程序中的空白,使程序可以正確運(yùn)行。#include,zstdio.h"main(){intm,n;printf(zzInputm,n=z,);scanf("%d%d”,&m,&n);printf("Thecombinationnumbeersis%d\n”,combin(m,n));)combin(intm,intn){intcom;if(n<2*m)m=n-m;if(m==0)com=l;elseif(m==l)①;else②;return(com);#include"stdio.h"main(){intm,n;printf("lnputm,n=");scanf("%d%d",&m,&n);printf("Thecombinationnumbeersis%d\n",combin(m,n));)combin(intm,intn){intcom;if(n<2*m)m=n-m;if(m==0)com=1;elseif(m==1)com=n;elsecom=combin(m-1,n-1)+combin(m,n-1);return(com);[3.29]下列函數(shù)是求一個字符串str的長度。intstrlen(char*str){if(①)return(0);elsereturn(②);)參考代碼:include"stdio.h"intstrlen(char*s"〃求字符串長度函數(shù)intn;for(n=0;s[n]!='\0';n++);returnn;)intmain(){chara[100];gets(a);printf("%d\n",strlen(a));return0;運(yùn)行結(jié)果:wqerqew77[3.30]用遞歸實(shí)現(xiàn)將輸入小于32768的整數(shù)按逆序輸出。如輸入12345,則輸出5432U#include*stdio.h"main(){intn;printf("Inputn:");scanf①);r(n);printf("\

溫馨提示

  • 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

提交評論