計(jì)算機(jī)二級(jí)C語(yǔ)言各類(lèi)題型試題及答案解析匯總_第1頁(yè)
計(jì)算機(jī)二級(jí)C語(yǔ)言各類(lèi)題型試題及答案解析匯總_第2頁(yè)
計(jì)算機(jī)二級(jí)C語(yǔ)言各類(lèi)題型試題及答案解析匯總_第3頁(yè)
計(jì)算機(jī)二級(jí)C語(yǔ)言各類(lèi)題型試題及答案解析匯總_第4頁(yè)
計(jì)算機(jī)二級(jí)C語(yǔ)言各類(lèi)題型試題及答案解析匯總_第5頁(yè)
已閱讀5頁(yè),還剩142頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

一、單項(xiàng)選擇題導(dǎo)讀:?jiǎn)雾?xiàng)選擇題要求從給出的四個(gè)備選答案中,選出一個(gè)最符合題意的答案。本類(lèi)習(xí)題主要檢查對(duì)C語(yǔ)言基本概念的掌握情況,讀者可根據(jù)學(xué)習(xí)進(jìn)度選做部分習(xí)題。在完成習(xí)題的過(guò)程中,不但要選出正確的答案,而且要清楚不正確的選項(xiàng)錯(cuò)在何處,以加深對(duì)概念的理解。對(duì)于掌握不準(zhǔn)的問(wèn)題,應(yīng)該通過(guò)上機(jī)實(shí)驗(yàn)來(lái)檢驗(yàn)。不正確的C語(yǔ)言標(biāo)識(shí)符是—.A)intB)a_l_2C)ablexeD)_x是正確的C語(yǔ)言標(biāo)識(shí)符是—.A)#defineB)_123C)%dD)\n[1.3]下列四組字符串中都可以用作C語(yǔ)言程序標(biāo)識(shí)符的一組是,A)printB)i\amC)PxqD)str」_3done_halfMy->bookCppoodbstart$itline#powaBc3paiHis.agewhile各選項(xiàng)組中,均是C語(yǔ)言關(guān)鍵字的組是。A)auto,enum>includeB)switch,typedef,continueC)signed,union,scanfD)if,struct,type【1.5】下列不屬于C語(yǔ)言關(guān)鍵字的是.A)defaultB)registerC)enumD)externalC語(yǔ)言程序從main。函數(shù)開(kāi)始執(zhí)行,所以這個(gè)函數(shù)要寫(xiě)在一。A)程序文件的開(kāi)始B)程序文件的最后C)它所調(diào)用的函數(shù)的前面D)程序文件的任何位置關(guān)于C語(yǔ)言的敘述錯(cuò)誤的是一A)大寫(xiě)字母和小寫(xiě)字母的意義相同B)不同類(lèi)型的變量可以在一個(gè)表達(dá)式中C)在賦值表達(dá)式中等號(hào)(二)左邊的變量和右邊的值可以是不同類(lèi)型D)同一個(gè)運(yùn)算符號(hào)在不同的場(chǎng)合可以有不同的含義語(yǔ)言中,錯(cuò)誤的int類(lèi)型的常數(shù)是。A)32768B)0C)037D)OxAF語(yǔ)句printf(M%xn,-l);屏幕顯示 。A)-lB)1C)-ffffD)ffff[L10]已知longi=32768;執(zhí)行語(yǔ)句prlntf("%d"J);屏幕顯示。A)-lB)-32768C)1D)32768[1.11]已知longi=65539;執(zhí)行語(yǔ)句printf(''%d",i);屏幕顯示.A)65539B)-3C)3D)程序不能執(zhí)行【1.12]在C語(yǔ)言中,整數(shù)-8在內(nèi)存中的存儲(chǔ)形式是.A)1111111111111000B)1000000000001000C)0000000000001000D)1111111111110111c語(yǔ)言中字符型(char)數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式是一。A)原碼B)補(bǔ)碼C)反碼D)ASCII碼符g賦給字符變量c,正確的表達(dá)式是。A)c=\147B)c="\147"C)c='\147'D)c='O147'轉(zhuǎn)義字符中錯(cuò)誤的一個(gè)是一.A)'\000'B)'\0014'C)'\xlll'D)'\2'【1.16]將空格符賦給字符變量c,正確的賦值語(yǔ)句是—.A)c='\0'B)c=NULLC)c=0D)c=32:chara='\70';則變量a中.A)包含1個(gè)字符B)包含2個(gè)字符C)包含3個(gè)字符D)說(shuō)明非法串“\"EOF\n=-\61\"”的長(zhǎng)度是.A)8B)9C)14D)非法字符串串””的長(zhǎng)度是一.A)OB)1C)2D)非法字符串:chara;intb;floatc;doubled;執(zhí)行語(yǔ)句"c=a+b+c+d;”后,變量c的數(shù)據(jù)類(lèi)型是。A)intB)charC)floatD)double【1.21]溫度華氏和攝氏的關(guān)系是:C=-(F-32)。已知:floatC,F;由華氏求攝氏的正確的賦值表達(dá)式是—=A)C=5/9(F-32)B)C=5*(F-32)/9C)C=5/9*(F-32)D)三個(gè)表達(dá)式都正確表達(dá)式”(a=3*5,a*4),a+15”的值是一.A)15B)60C)30D)不確定inta=l,b=2,c=3,d=4;則條件表達(dá)式“a<b?a:c<d?c:d"的值是 .A)1B)2C)3D)4出s=10!的值,則變量s的類(lèi)型應(yīng)當(dāng)為.A)intB)unsigedC)longD)以上三種類(lèi)型均可inti=10;表達(dá)式“20?0<=iv=9"的值是A)OB)1C)19D)20intx=l,y;執(zhí)行下述語(yǔ)句后變量x的值是 。y=++x>5&&++x<10;A)1B)2C)3D)4斷字符變量c的值不是數(shù)字也不是字母時(shí),應(yīng)采用下述表達(dá)式A)c<=48llc>=57&&c<=65llc>=90&&c<=97llc>=122B)!(c<=48llc>=57&&c<=65llc>=90&&c<=97llc>=122)C)c>=48&&c<=57llc>=65&&c<=90llc>=97&&c<=122D)!(c>=48&&c<=57llc>=65&&c<=90llc>=97&&c<=122)inta[3][2]={3,2,l);則表達(dá)式”a[0][0]/a[0][l]/a[0][2「的值是 ?A)0.166667B)1C)OD)錯(cuò)誤的表達(dá)式intx=l,y=l^=l;表達(dá)式“x+++y+++z++”的值是 oA)3B)4C)5D)表達(dá)式錯(cuò)誤進(jìn)制表示表達(dá)式“121012"的值是___。A)1B)0C)12D)14[131]已知以下程序段:inta=3,b=4;a=aAb;001101000111b=bAa;01000011Alli0100a=aAb;則執(zhí)行以上語(yǔ)句后a和b的值分別是—oA)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[133]已知chara=222;執(zhí)行語(yǔ)句a=a&052;后,變量a的值是 。A)222B)10C)244D)254二進(jìn)制數(shù)a是00101101,如果想通過(guò)整型變量b與a做異或運(yùn)算,使變量a的高4位取反,低4位不變,則二進(jìn)制數(shù)b的值應(yīng)是—OA)11110000B)00001111C)11111111D)00000000inta=15,執(zhí)行語(yǔ)句a=av<2以后,變量a的值是 。A)20B)40C)60D)80intx=5,y=5^=5;執(zhí)行語(yǔ)句x%=y+z;后,x的值是—OA)OB)1C)5D)6語(yǔ)句scanf(Hx=%f,y=%fM,&x,&y);輸入變量x、y的值(口代表空格),正確的輸入是—oA)1.25,24B)1.25D2.4C)x=1.25,y=2.4D)x=1.25Dy=2.4[138]下列循環(huán)語(yǔ)句中有語(yǔ)法錯(cuò)誤的是—oA)while(x=y)5;B)while(O);C)do2;while(x==b);D)dox++while(x==10);[139]已知intx=(l,23,4);變量x的值是0A)1B)2C)3D)4式sizeof(double)是。A)函數(shù)調(diào)用B)double型表達(dá)式C)int型表達(dá)式D)非法表達(dá)式語(yǔ)句printf(H2:%d,H,printf(Ml:%d,,,,scanf(H%d,,,&x)));以后的輸出結(jié)果是A)2:1,1:1,B)1:1,2:1,C)2:4,1:1D)1:1,2:4,:intx,y;doublez;則以下語(yǔ)句中錯(cuò)誤的函數(shù)調(diào)用是。A)scanf(H%d,%lx,%)eH,&x,&y,&z);B)scanf(M%2d*%d%lfM,&x,&y,&z);C)scanf(M%x%*d%on,&x,&y);D)scanf(H%x%o%6.2f,,,&x,&y,&z);件表達(dá)式”(n)?(c++):(c??)”中的表達(dá)式(n)等價(jià)的表達(dá)式是一。A)(n==0)B)(n==l)C)(n!=0)D)(n!=l)inti=lj=O;執(zhí)行下面語(yǔ)句后j的值是。while(l)switch(i)

{case1:i+=l;j++;break;case2:i+=2;j++;break;casej3:i+=3;++;break;default:i-;j++;break;A)1B)2C)3D)死循環(huán)+n2W1000的n,滿足式l2+2+n2W1000的n,正確的語(yǔ)句是___Ofor(i=l^=0;for(i=l,s=0;C)for(i=M=0for(i=l^=0;for(i=l,s=0;C)for(i=M=0;D)for(i=M=0;(s=s+i*i)<=1000;n=++i);(s=s+i*++i)<=1000;n=i);(s=s+i*i+4-)<=1000;n=i);【1.46]下面的for語(yǔ)句。for(x=0,y=10:(y>0)&&(x<4);x++,y-);A)是無(wú)限循環(huán)B)循環(huán)次數(shù)不定C)循環(huán)執(zhí)行4次D)循環(huán)執(zhí)行3次inti=l;執(zhí)行語(yǔ)句while(i++<4)后,變量i的值為 cA)3B)4C)5D)6intx=12,y=3;執(zhí)行下述程序后,變量X的值是__Odo{x/=y-;}while(x>y);A)1B)2C)3D)程序運(yùn)行有錯(cuò)誤chara[][20]={,,BeijingH/,shanghaiM,Mtianjm,\MchongqingH)語(yǔ)句printf("%c”,a[30]);的輸出是。人)<空格>8)110不定D)數(shù)組定義有誤【1.50]若用數(shù)組名作為函數(shù)調(diào)用時(shí)的實(shí)參,則實(shí)際上傳遞給形參的是。A)數(shù)組首地址B)數(shù)組的第一個(gè)元素值C)數(shù)組中全部元素的值D)數(shù)組元素的個(gè)數(shù)維數(shù)組的正確說(shuō)明是一oA)inta[][]={l,2,3,4,5,6): B)inta[2][]={l,23,4,5,6);C)inta[][3]={l,2,3,4,5,6};D)inta[2,3]={l,2J,4,5,6};符數(shù)組s賦值,不合法的一個(gè)是一ochars[>MBeijingM;chars[20]={HbeijingH};chars[20];s=HBeijingM;chars[20]={,B7e\,i7jVi,,*n,;g,};符數(shù)組str賦初值,str不能作為字符串使用的一個(gè)是。charstr[]=f'shanghai'*:charstr[]={"shanghai"};char 」'};charstr[8]={,s\,h,,'a\,nVg7h,,,a,;i,};數(shù)形參的說(shuō)明有錯(cuò)誤的是一.A)inta(floatx[],intn)B)inta(float*x,intn)C)inta(floatx[10],intn)D)inta(floatx,intn)【1.55]如果一個(gè)變量在整個(gè)程序運(yùn)行期間都存在,但是僅在說(shuō)明它的函數(shù)內(nèi)是可見(jiàn)的,這個(gè)變量的存儲(chǔ)類(lèi)型應(yīng)該被說(shuō)明為一.A)靜態(tài)變量B)動(dòng)態(tài)變量C)外部變量D)內(nèi)部變量【1.56]在一個(gè)C源程序文件中,若要定義一個(gè)只允許在該源文件中所有函數(shù)使用的變量,則該變量需要使用的存儲(chǔ)類(lèi)別是.A)externB)registerC)autoD)static【1.57]在C語(yǔ)言中,函數(shù)的數(shù)據(jù)類(lèi)型是指—.A)函數(shù)返回值的數(shù)據(jù)類(lèi)型B)函數(shù)形參的數(shù)據(jù)類(lèi)型C)調(diào)用該函數(shù)時(shí)的實(shí)參的數(shù)據(jù)類(lèi)型D)任意指定的數(shù)據(jù)類(lèi)型如下定義的函數(shù):funl(a){printf("\n%d",a);)則該函數(shù)的數(shù)據(jù)類(lèi)型是__.A)與參數(shù)a的類(lèi)型相同B)void型C)沒(méi)有返回值D)無(wú)法確定一個(gè)函數(shù)實(shí)現(xiàn)交換x和y的值,并將結(jié)果正確返回。能夠?qū)崿F(xiàn)此功能的是一oA)swapa(intx,inty)B)swapb(int*x,int*y){inttemp;{inttemp;temp=x;x=y;y=temp;temp=x;x=y;y=temp;HC)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;})個(gè)角的正弦函數(shù)值的平方。能夠?qū)崿F(xiàn)此功能的函數(shù)是一.sqofsina(x)floatx;{retum(sin(x)*sin(x)):)doublesqofsinb(x)floatx;{retum(sin((double)x)*sin((double)x));}doublesqofsinc(x){return(((sin(x)*sin(x)):)sqofsind(x)floatx;{return(double(sin(x)*sin(x)));[1.611一個(gè)函數(shù)內(nèi)有數(shù)據(jù)類(lèi)型說(shuō)明語(yǔ)句如下:doublex,y,z(10);關(guān)于此語(yǔ)句的解釋,下面說(shuō)法正確的是——。A)z是一個(gè)數(shù)組,它有10個(gè)元素。B)z是一個(gè)函數(shù),小括號(hào)內(nèi)的10是它的實(shí)參的值。C)z是一個(gè)變量,小括號(hào)內(nèi)的10是它的初值。D)語(yǔ)句中有錯(cuò)誤。函數(shù)定義如下:floatfunl(intx9inty){floatz;z=(float)x/y;return(z);}主調(diào)函數(shù)中有inta=l,b=0;可以正確調(diào)用此函數(shù)的語(yǔ)句是—oA)printf(n%fM,funl(a,b));B)printf(H%r\funl(&a,&b));C)printf(H%f,,,funl(*a,*b));D)調(diào)用時(shí)發(fā)生錯(cuò)誤函數(shù)的功能是—?a(sl,s2)charsl[],s2[];{while(s2++=sl++);}A)字符串比較B)字符串復(fù)制C)字符串連接D)字符串反向【1.64]在下列結(jié)論中,只有一個(gè)是錯(cuò)誤的,它是。C語(yǔ)言允許函數(shù)的遞歸調(diào)用C語(yǔ)言中的continue語(yǔ)句,可以通過(guò)改變程序的結(jié)構(gòu)而省略C)有些遞歸程序是不能用非遞歸算法實(shí)現(xiàn)的D)C語(yǔ)言中不允許在函數(shù)中再定義函數(shù):inta,*y=&a;則下列函數(shù)調(diào)用中錯(cuò)誤的是。A)scanf("%d",&a);B)scanf("%d",y):C)printfC'%d",a);D)printf("%d",y);【1.66]說(shuō)明語(yǔ)句“int(*p)();”的含義是.A)p是一個(gè)指向一維數(shù)組的指針變量B)p是指針變量,指向一個(gè)整型數(shù)據(jù)C)p是一個(gè)指向函數(shù)的指針,該函數(shù)的返回值是一個(gè)整型D)以上都不對(duì)說(shuō)明int(*p)[4];其中的標(biāo)識(shí)符p是.A)4個(gè)指向整型變量的指針變量B)指向4個(gè)整型變量的函數(shù)指針C)一個(gè)指向具有4個(gè)整型元素的一維數(shù)組的指針D)具有4個(gè)指向整型變量的指針元素的一維指針數(shù)組:chars[10],*p=s,則在下列語(yǔ)句中,錯(cuò)誤的語(yǔ)句是。A)p=s+5;B)s=p+s;C)s[2]=p[4];D)*p=s[0];:chars[100]:inti;則引用數(shù)組元素的錯(cuò)誤的形式是.A)s[i+10]B)*(s+i)C)*(i+s)D)*((s++)+i):chars[6],*ps=s;則正確的賦值語(yǔ)句是。A)s="12345";B)*s="12345";C)ps="12345";D)*ps="12345";:chara[3][10]={"BeiJing',,',ShangHai","Tianjin"},*pa=as不能正確顯示字符串"ShangHai"的語(yǔ)句是。A)printf("%s",a+l):B)printfC%s",*(a+l));C)printf("%s",*a+l);D)printf("%s",&a[l][O]);:inta[4][3]={l,2,3,456,7,8,9,10,U,12};int(*ptr)[3]=a,*p=a[0J:則以下能夠正確表示數(shù)組元素的表達(dá)式是oA)*(*(a+l)+2)B)*(*(p+5))C)(*ptr+l)+2D)*((ptr+l)[2]):inta[]={l,2Q,4,5,6,7,8,9,10,11,12},*p=a;則值為3的表達(dá)式是.A)p+=2,*(p++)B)p+=2,*++pC)p+=2,*p++D)p+=2,++*p:inta[]={l,2,3,4},y,*p=a;則執(zhí)行語(yǔ)句y=(*++p)r之后,數(shù)組a各元素的值變?yōu)?A)0,1,3,4B)1,13,4C)1,2,2,4D)1,233變量y的值是___。A)1B)2C)3D)4:inta[]={135,7},y*p=a;為使變量y的值為3,下列語(yǔ)句正確的是 。A)y=++*p++;B)y=++(*p++);C)y=(++*p)4-+;D)y=(*++p)++;:intx[]={1,3,5,7,9,11},*ptr=x;則能夠正確引用數(shù)組元素的語(yǔ)句是。A)xB)*(ptr—)C)x[6]D)*(—ptr)的功能是交換變量x和y中的值,且通過(guò)正確調(diào)用返回交換的結(jié)果。能正確執(zhí)行此功能的函數(shù)是。A)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;}}義如下:structsk{inta;floatb;}data,*p;如果p=&data;則對(duì)于結(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,&3[2],5,&a[0]},*p;如果下述語(yǔ)句的顯示是2,則對(duì)p的賦值是一。printf(H%dH,++(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]={HLiMingn,29,HZhangHongH,21,HWangFangH^2};下述表達(dá)式中,值為72的一個(gè)是—oclass[0]->age+class[l]->age+class[2]->ageclass[l].name[5]person[l].name[5]clase->name[5]:struct{inti;chare;floata;Jtest;則sizeof(te§t)的值是。A)4B)5C)6D)7:union{inti;chare;floata;}test;則sizeof(test)的值是。A)4B)5C)6D)7:unionu_type{inti;charch;floata;}temp;現(xiàn)在執(zhí)行"temp?i=266;printf("%d”,temp.ch)”的結(jié)果是。A)266B)256C)10D)1以下程序段:structdent{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【1.85】若有以下說(shuō)明語(yǔ)句,則對(duì)結(jié)構(gòu)變量pup中sex域的正確引用是。structpupil{charname[20];intsex;}pup,*p;p=&pup;A)p.pup.sexB)p->pup.sexC)(*p).pup.sexD)(*p).sex對(duì)結(jié)構(gòu)變量stul中成員age的非法引用是。structstudent{intage;intnum;}stul,*p;p=&stul;A)stul.ageB)student.ageC)p->ageD)(*p).age以下定義和語(yǔ)句:uniondata{inti;chare;floatf;}a;intn;則以下語(yǔ)句正確的是。A)a=5;B)a={2;a;1.2};C)printf(M%d\n,,,a);D)n=a;:structsk{inta;intage;}date,*p;如果要使指針p指向data中的成員a,正確的賦值語(yǔ)句是。A)p=(structsk*)&data.a;B)p=(structsk*)data.a;C)p=&data.a;D)*p=data.a;enumweek{sun,mon9tue,wed9thu,fri,sat}day;則正確的賦值語(yǔ)句是 。A)sun=0;C)san=day;D)sun=mon;D)day=sun;enumcolor{red,yellow=2,blue,white,black}ren;執(zhí)行下述語(yǔ)句的輸出結(jié)果是printf(H%dn,ren=white);A)OB)IC)3D)4enumname{zhao=1,qian,sunJi}man;執(zhí)行下述程序段后的輸出是。man=0;switch(man){case0:printf(MPeople\nH);printf(MMan\nH);printf(HWoman\nM);default:printf(nError\nM);}A)PeopleB)ManC)WomanD)Error【1.92】下述關(guān)于枚舉類(lèi)型名的定義中,正確的是一oA)enema={one,two,three};B)enema{one=9,two=-l,three);C)enema={HoneM,ntwoM,MthreeH};D)enema{MoneH,MtwoH,HthreeM};C語(yǔ)言中標(biāo)準(zhǔn)輸入文件stdin是指。A)鍵盤(pán)B)顯示器C)鼠標(biāo)D)硬盤(pán)開(kāi)一個(gè)已存在的非空文件“file”用于修改,選擇正確的語(yǔ)句A)fp=fopen("file","r");B)fp=fopen("file","a+");C)fp=fopen("file","w");D)fp=fopen('file","r+")s利執(zhí)行了文件關(guān)閉操作時(shí),fclose函數(shù)的返回值是。A)-lB)TRUEC)0D)1【1.96】fscanf函數(shù)的正確調(diào)用形式是。A)fscanf(文件指針,格式字符串,輸出列表);B)fscanf(格式字符串,輸出列表,文件指針):C)fscanf(格式字符串,文件指針,輸出列表);D)fscanf(文件指針,格式字符串,輸入列表);“.97】使用fgetc函數(shù),則打開(kāi)文件的方式必須是。A)只寫(xiě)B(tài))追加C)讀或讀/寫(xiě)D)參考答案B和C都正確宏定義#defineN3#defineY(n)((N+l)*n)執(zhí)行語(yǔ)句z=2*(N+Y(5+l));后,變量z的值是A)42B)48C)52D)出錯(cuò)宏定義#defineSQ(x)x*x,執(zhí)行語(yǔ)句printf("%d”,10/SQ(3));后的輸出結(jié)果是A)1B)3c)9D)10宏定義如下:#definePRprintf#defmeNL”\iT#defineDH%dM#defineDlDNL若程序中的語(yǔ)句是PR(Dl,a);經(jīng)預(yù)處理后展開(kāi)為一.A)printf(%d\n,a);B)printf("%d\n",a);C)printf("%d""\n",a);D)原語(yǔ)句錯(cuò)誤【單項(xiàng)選擇題參考答案】:A注釋:int是C語(yǔ)言的關(guān)鍵字:B[13]答案:A:B注釋:include是預(yù)處理命令;scanf是函數(shù)名;type不是C語(yǔ)言的關(guān)鍵字。:D:D:A:A注釋:int型表示整數(shù)的范圍是-32768?32767。[1.91答案:D注釋:整型常量-1在計(jì)算機(jī)中表示為補(bǔ)碼1111111111111111,用十六進(jìn)制顯示這個(gè)數(shù)時(shí),最左邊的1不會(huì)被解釋為符號(hào)位,而是與右邊其它位共同轉(zhuǎn)換為十六進(jìn)制數(shù)。:B注釋:長(zhǎng)整型數(shù)32768在計(jì)算機(jī)內(nèi)的表示是1000()00000000000,以一般整型進(jìn)行輸出時(shí),此數(shù)恰是-32768的補(bǔ)碼。:C注釋:長(zhǎng)整型數(shù)65539在計(jì)算機(jī)內(nèi)的表示是00010000000000000011,以一般整型進(jìn)行輸出時(shí),僅將右側(cè)16位二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)。:A注釋:C語(yǔ)言中,int型的負(fù)數(shù)是采用補(bǔ)碼表示的。[1.131答案:D:C注釋:變量c是字符型,可用字符常量為它賦值。字符常量必須用單引號(hào)括起來(lái),所以B是錯(cuò)誤的;在單引號(hào)或雙引號(hào)內(nèi)的反斜線、'用于表示轉(zhuǎn)義字符,A選項(xiàng)在無(wú)引號(hào)時(shí)使用反斜線是錯(cuò)誤的;C選項(xiàng)單引號(hào)內(nèi)出現(xiàn)反斜線表示它與后面的數(shù)字組成一個(gè)轉(zhuǎn)義字符;單引號(hào)只允許括起一個(gè)字符,D選項(xiàng)在單引號(hào)內(nèi)出現(xiàn)4個(gè)字符,是錯(cuò)誤的。:C:D注釋:空字符和空格符是不同的兩個(gè)字符,空格符的ASCH碼值是32,空字符的ASCII值是0。:A:B:A:C[1.211答案:B注釋:?jiǎn)渭儚腃語(yǔ)言語(yǔ)法來(lái)說(shuō),選項(xiàng)B、C都是正確的,但是選項(xiàng)C中第一個(gè)運(yùn)算的兩個(gè)對(duì)象都是整型常數(shù),其結(jié)果也是整型數(shù)0,最后的運(yùn)算結(jié)果也就是0了。:C:A注釋:將條件表達(dá)式增加一個(gè)括號(hào),此式變?yōu)閍<b?a:(c<d?c:d),它的運(yùn)算順序就清楚了。由于條件運(yùn)算符的結(jié)合性是從右向左,所以括號(hào)可以省略。它的運(yùn)算順序是先算出右邊的條件表達(dá)式"c<d?c:d”的值,然后求條件表達(dá)式a<b?a:3的值。:C:B:B注釋:當(dāng)通過(guò)一個(gè)運(yùn)算對(duì)象即可決定邏輯運(yùn)算&&的結(jié)果時(shí),則對(duì)另一個(gè)運(yùn)算對(duì)象不做處理,:D:B注釋:數(shù)組元素在內(nèi)存中按行排列,此數(shù)組的前3個(gè)元素的值分別是3、2、1,表達(dá)式中雖然數(shù)組下標(biāo)的寫(xiě)法似乎每行有3個(gè)元素,和定義時(shí)的3行2列不一致,但是C語(yǔ)言引用數(shù)組元素時(shí)是根據(jù)數(shù)組的首地址和給出的下標(biāo)進(jìn)行運(yùn)算決定元素的地址。題中表達(dá)式引用了數(shù)組前3個(gè)元素。[1.291答案:A:D:B:B:B:A:C:C:C:D:D:C1.41]答案:D注釋:scanf函數(shù)返回值是輸入數(shù)據(jù)的個(gè)數(shù),printf函數(shù)的返回值是輸出的字符個(gè)數(shù)。:D:C注釋:在C語(yǔ)言中,經(jīng)常用一個(gè)變量來(lái)作為邏輯表達(dá)式,其含義就是:當(dāng)變量的值不為0時(shí)關(guān)系成立。:D注釋:break語(yǔ)句僅可跳出switch語(yǔ)句,不會(huì)跳出while循環(huán),這是一個(gè)死循環(huán)。:A:C:C:D注釋:當(dāng)除數(shù)y為。時(shí),程序發(fā)生溢出錯(cuò)誤。:C:A:C:C注釋:答案C的賦值號(hào)左側(cè)是數(shù)組s的首地址,是一個(gè)常量,賦值號(hào)右側(cè)是一個(gè)字符串常量,不可能將一個(gè)字符串常量賦給一個(gè)地址常量。[1.531答案:D注釋:D選項(xiàng)缺少字符串結(jié)束標(biāo)志。:C注釋:此處函數(shù)形參是一個(gè)指針變量,接受實(shí)參的地址,而不是一個(gè)數(shù)組。:A:D注釋:這里首先要明確一些基本概念。在C語(yǔ)言中,程序與文件是不同的概念,一個(gè)程序可以由一個(gè)文件組成,也可以由多個(gè)文件組成;一個(gè)文件中又可以包含多個(gè)函數(shù);函數(shù)是構(gòu)成C程序的基本單位。變量的作用域因變量的存儲(chǔ)類(lèi)型不同而不同。aut。和ivgister類(lèi)型的變量的作用域是說(shuō)明變量的當(dāng)前函數(shù);外部變量的作用域是整個(gè)程序,即外部變量的作用域可以跨越多個(gè)文件;內(nèi)部靜態(tài)變量(定義在一個(gè)函數(shù)內(nèi)部的static型的變量)的作用域是當(dāng)前函數(shù),外部靜態(tài)變量(定義在函數(shù)外面的static型的變量)的作用域是當(dāng)前文件,即可以跨越同一文件中的不同函數(shù)。:A:A注釋:它和參數(shù)a一樣,數(shù)據(jù)類(lèi)型說(shuō)明被省略,按照C語(yǔ)言的規(guī)定,在這種情況下,表示它們是int型。:C注釋:函數(shù)swapa是值傳遞,函數(shù)的執(zhí)行結(jié)果不能返回;函數(shù)swapb中變量temp不是指針變量,所以它不能接受地址量,用指針變量x為它賦值是不對(duì)的;函數(shù)swap中雖然指針變量交換了地址,即它們的指向的目標(biāo)變量進(jìn)行了交換,但是目標(biāo)變量并沒(méi)有行值的交換。:B:D:D注釋:主調(diào)函數(shù)中b=0,在執(zhí)行funl函數(shù)里的除法時(shí)發(fā)生溢出錯(cuò)誤。:B:C:D注釋:在答案D中,正確的函數(shù)調(diào)用應(yīng)當(dāng)是:printf("%d",*y).:C注釋:要注意與說(shuō)明語(yǔ)句"int(*p)口;”的區(qū)別。說(shuō)明語(yǔ)句"int(*p)口;”說(shuō)明的是一個(gè)指向數(shù)組的指針。:C注釋:題干中由于*和p被小括號(hào)括起,所以p應(yīng)被解釋為一個(gè)指針,而后的下標(biāo)運(yùn)算符口說(shuō)明所指向的對(duì)象是一個(gè)有4個(gè)int型元素的一維數(shù)組;如果是int(*p)(),則是指向函數(shù)的指針。對(duì)于int*p[4],則根據(jù)運(yùn)算符的優(yōu)先級(jí),先考慮p和口運(yùn)算符的關(guān)系,所以它就是一個(gè)指針數(shù)組了。[1.68]答案:B注釋:選項(xiàng)B有兩處錯(cuò)誤,一是數(shù)組名是常量,不能出現(xiàn)的賦值好的左側(cè),二是指針變量只能和整數(shù)做加,不能和作為地址常量的數(shù)組名相加。[1.691答案:D注釋:S作為數(shù)組名是地址常量,而5++是5=5+1,C語(yǔ)言不允許對(duì)常量進(jìn)行賦值。:C:C注釋:a是二維數(shù)組名,a+1中的1不是1個(gè)字節(jié),而是數(shù)組的“一行“,即10個(gè)字節(jié),所以a+1是第二個(gè)字符串的首地址,A選項(xiàng)正確。在C編譯系統(tǒng)中對(duì)二維數(shù)組名可這樣理解(注意,這里僅是理解):a指向一個(gè)一維數(shù)組,故(a+1)是指向a⑴的,*(a+l)就是取a[l]的值,它保存第二個(gè)字符串"ShangHai”的首地址,所以選項(xiàng)B也正確。*a是第一個(gè)字符串的首地址,加1是第一個(gè)字符串中第二個(gè)字符的地址,選項(xiàng)C的輸出是“beijing”。選項(xiàng)D中的是對(duì)第二個(gè)字符串的第一個(gè)字符做取地址運(yùn)算,得到該地址就是字符串“ShangHai”的首地址。注意,對(duì)于二維數(shù)組來(lái)說(shuō),做一次*或[]運(yùn)算的結(jié)果仍是地址量,做兩次才是取數(shù)值。:A注釋:p是一個(gè)一級(jí)指針,選項(xiàng)B中對(duì)它進(jìn)行了兩次*運(yùn)算是錯(cuò)誤的。ptr是一個(gè)指向一維數(shù)組的指針,它所指向的數(shù)組有三個(gè)元素,對(duì)于這樣一個(gè)指針,對(duì)它進(jìn)行兩次**運(yùn)算才能取出地址單元中所存的數(shù)據(jù),C選項(xiàng)中*ptr表示數(shù)組第一行的首地址,該地址是一維數(shù)組的地址,+3表示加上三個(gè)它所指向的數(shù)據(jù)類(lèi)型的長(zhǎng)度,所以(*ptr+l)+2是數(shù)組中數(shù)值4的地址。根據(jù)以上分析,選項(xiàng)D對(duì)ptr進(jìn)行了兩次地址操作(*和口),所以結(jié)果應(yīng)是數(shù)據(jù),但是它加1后指向數(shù)組第二行,根據(jù)后面口中2它的地址增加兩個(gè)一維數(shù)組的長(zhǎng)度,就指向數(shù)組的最后一行,再做*運(yùn)算就是數(shù)10,即a[3][0]o[1.731答案:A:BB:D:B:D注釋:答案D是另一種交換兩個(gè)變量值的算法。:B:C注釋:使用C對(duì)p進(jìn)行賦值,則p->next是a[0]的地址,引用其成員n再做前增1運(yùn)算,結(jié)果就是2。:B:D:A:C注釋:聯(lián)合變量temp的成員是占用同一存儲(chǔ)單元,它的長(zhǎng)度是4個(gè)字節(jié)。266的二進(jìn)制表示是100001010,存放在存儲(chǔ)單元的低端兩個(gè)字節(jié),如下圖:高字節(jié)00000001低字節(jié)00001010引用temp.ch進(jìn)行輸出,只取最低的第一個(gè)字節(jié)。:D注釋:由于結(jié)構(gòu)指針指向了結(jié)構(gòu)數(shù)組的。號(hào)元素,所以表達(dá)式(p++)->m的含義是先取出m(變量a的地址),然后指針p加1。表達(dá)式*(p++)->m的含義是先取出m的內(nèi)容(變量a譴),然后指針p再加1°表達(dá)式(*p).m的含義是取出m(變量a的地址表達(dá)式*(++p)->m的含義是先將指針p加1,然后再取m的內(nèi)容(變量b的值)。:D:B:C:A:D:D:A:B:A:D注釋:函數(shù)fopen中的第二參數(shù)是打開(kāi)模式,“r”模式是只讀方式,不能寫(xiě)文件;“a+”模式是讀/追加方式,允許從文件中讀出數(shù)據(jù),但所有寫(xiě)入的數(shù)據(jù)均自動(dòng)加在文件的末尾;模式是寫(xiě)方式,允許按照用戶的要求將數(shù)據(jù)寫(xiě)入文件的指定位置,但打開(kāi)文件后,首先要將文件的內(nèi)容清空?!皉+”模式是讀與方式,不但允許讀文件,而且允許按照用戶的要求將數(shù)據(jù)寫(xiě)入文件的指定位置,且在打開(kāi)文件后,不會(huì)將文件的內(nèi)容清空。本題的要求是“修改”文件的內(nèi)容,因此只能選擇答案D.:C:D:C:B注釋:語(yǔ)句z=2*(N+Y(5+l)引用了兩個(gè)宏定義。C語(yǔ)言是區(qū)分字母大小的,第二個(gè)宏定義中的N直接用3替換,用5+1替換n,則有z=2*(3+(3+l)*5+l);結(jié)果是48。注意對(duì)于帶參數(shù)的宏亦是直接的文本替換,此例中n用5+1去替換,結(jié)果是(N+1)*5+1,而不是(N+l)*(5+l)。:C注釋:宏替換后的結(jié)果是printf("%d",10/3*3).:C二、閱讀程序題導(dǎo)讀:學(xué)會(huì)閱讀程序?qū)τ诔鯇W(xué)者來(lái)說(shuō)很重要,一方面可以鞏固所學(xué)的語(yǔ)法知識(shí),另一方面通過(guò)閱讀別人寫(xiě)好的程序來(lái)打開(kāi)自己的思路,就所謂見(jiàn)多識(shí)廣。讀者通過(guò)閱讀理解程序,從給出的四個(gè)備選參考答案中,選擇程序的正確輸出。如果選擇有誤,就要認(rèn)真分析原因,是概念方面的錯(cuò)誤還是對(duì)程序邏輯理解不對(duì),從而加深對(duì)語(yǔ)法規(guī)則的理解,提高程序設(shè)計(jì)能力。程序設(shè)計(jì)語(yǔ)言是開(kāi)發(fā)程序的一個(gè)工具,學(xué)習(xí)語(yǔ)言的目的是為了編寫(xiě)程序來(lái)解決實(shí)際問(wèn)題,所以特別提倡通過(guò)實(shí)際上機(jī)來(lái)檢驗(yàn)備選答案,增強(qiáng)動(dòng)手能力。習(xí)題基本上是按照教材的章節(jié)來(lái)安排的,讀者可以根據(jù)學(xué)習(xí)的進(jìn)度選擇部分習(xí)題。程序的輸出結(jié)果是。main(){floata;a=l/100000000;printf(M%gH,a);)A)0.00000e+00B)0.0C)1.00000e-07D)0程序的輸出結(jié)果是一o#include<stdio.h>main(){intx=10;{intx=20;printf("%d,M,x);)printf(M%d\nn,x);)A)10,20B)20,10C)10,10D)20,20程序的輸出結(jié)果是__omain(){unsignedintn;inti=-521;n=i;printf("n=%u\nH,n);}A)n=-521B)n=521C)n=65015D)n=102170103程序的輸出結(jié)果是。main(){intx=10,y=10;printf(M%d%d\nH,x , y);}A)1010B)990)910D)109程序的輸出結(jié)果是一。main(){intn=l;printf(H%d%dA)111B)101C)11OD)121程序的輸出結(jié)果是__。main(){intx=0x02ff,y=0x0ff00;printf(H%d\nn,(x&y)?4IOxOO5f);)A)127B)255C)128D)1程序的輸出結(jié)果是__omain(){inta=l;charc=,a,;floatf=2.0;printf(n%d\n,',(!(a==0),f!=0&&c==,A,));}A)0B)1程序的輸出結(jié)果是——。main(){inta=l?i=a+l;do{a++;}while(!-i++>3);printf(n%d\iin,a);}A)1B)2C)3D)4程序的輸出結(jié)果是—。main(){inta=lll;a=aA00;printf(H%d,%o\nn,a,a);)A)111,157B)0,0C)20,24D)7,7程序的輸出結(jié)果是一.main(){chars[12]=Mabook”:printf(H%.4sM,s);A)abook!B)abook!〈四個(gè)空格》C)aboD)格式描述錯(cuò)誤,輸出不確定程序的輸出結(jié)果是一。main(){inta,b;scanf(H%2d%3dM,&a,&b);printf(Ma=%db=%d\n**,a,b);)A)a=12b=34B)a=123b=45C)a=12b=345D)語(yǔ)句右錯(cuò)誤程序段的輸出結(jié)果是。inta=10,b=50,c=30;if(a>b)a=b;b=c;c=a;printf(Ha=%db=%dc=%d\nH^,b,c);A)a=10b=50c=10B)a=10b=30c=10C)a=50b=30c=10D)a=50b=30c=50程序的輸出結(jié)果是。main(){inta=O,b=1,c=0,d=20;if(a)d=d-10;elseif(!b)if(!c)d=15;elsed=25;printf(,,d=%d\n,,,d);}A)d=10B)d=15C)d=20D)d=25程序的輸出結(jié)果為。main(){inta=l,b=O;switch(a){case1:switch(b){case0:printf(M**O**n);break;break;}printf(M**2**M);break;A)**0**B)**o****2**C)**0****l****2**D)有語(yǔ)法錯(cuò)誤程序的輸出結(jié)果是。main(){char*s=,,121342ir,;intvl=0,v2=0,v3=0,v4=0,k;for(k=0;s[k];k++)switch(s[k]){caseT:vl++;case3:v3++;case'2':v2++;default:v4++;)printf(Hvl=%d,v2=%d,v3=%d,v4=%d\nH,vl,v2,v3,v4);JA)v1=4,v2=2,v3=1,v4=1B)vl=4,v2=9,v3=3,v4=lC)vl=5,v2=8,v3=6,v4=lD)vl=4,v2=7,v3=5,v4=8程序的輸出是。main(){intx=l,y=O^=O,b=O;switch(x){case1:switch(y){case0:a++;break;b++;break;}a++;b++;break;}printf(na=%d,b=%d\nn,a,b);}A)a=2,b=lB)a=l,b=lC)a=l,b=OD)a=2,b=2程序的輸出是一?main(){intnum=0;while(num<=2){num++;printf(H%d\n,,,num);)}A)1B)1C)1D)122233程序的輸出結(jié)果是一omain(){inta=l,b=O;do{switch(a){case1:b=l;break;case2:b=2;break;default:b=0;)b=a+b;}while(!b);printf(Ha=%d,b=%dn,a,b);)A)1,2B)2,1C)1,1D)2,2盤(pán)上輸入“446755”時(shí),下面程序的輸出是.#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(H\nH);}A)888988B)668966C)88898787D)66898787程序的輸出結(jié)果是一.main(){intk=0;charc=*A*;do{switch(c++){case*A*:k++;break;case*B*:k-;case'C':k+=2;break;case'D1:k=k%2;contiue;case'EYk=k+10;break;default:k=k/3;)k++;}while(c<*C*);printf(Hk=%d\nH,k);)A)k=lB)k=2C)k=3D)k=4[2.211下面程序的輸出結(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(M%d'\x);A)3981B)4284C)2668D)2870[2.22]下面程序的輸出結(jié)果是一o#include<stdio.h>inain(){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(H%d\nM,k);}A)20B)21C)22D)23[2.231假定從鍵盤(pán)上輸入“3.6,2.4<回車(chē)>”,下面程序的輸出是#include<math.h>main(){floatx,y,z;scanf(H%f,%fM,&x,&y);z=x/y;while(l){if(fabs(z)>1.0){x=y;y=z;z=x/y;)elsebreak;)printf(,,%f\n,\y):)A)1.500000B)1.600000C)2.000000D)2.400000程序的輸出結(jié)果是.main(){intiJ,x=0;for(i=0;i<2;i++){x++;for(j=0:j<-3;j++){if(j%2)continue;x++;)X++;}printf(Mx=%d\nH,x);)A)x=4B)x=8C)x=6D)x=12程序的輸出結(jié)果是一omain(){intij,k=10;for(i=0;i<2;i++){k++;{intk=0;for(j=0;j<=3;j++){if(j%2)continue;k++;k++;printf(Hk=%d\nH,k);}A)k=4B)k=8C)k=14D)k=18程序的輸出結(jié)果是#include<stdio.h>main(){intn[3][3],i,j;for(i=Osi<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]U+l]+=n[i][j]!printf("%d\n",n[i][j]);}A)14B)0C)6D)不確定程序的輸出結(jié)果是—o#include<stdio.h>main(){inta[4][5]={l,2,4,-4,5,-93,6,-3,2,7,8,4hintij,n;n=9;i=n/5;j=n-i*5-ljprintf("a[%d][%d]=%d\n",ij,a[i][j]);}A)6B)-3C)2D)不確定程序的輸出結(jié)果是一。intm[3][3]={{1},{2},{3});intn[3][3]={1,2,3};main(){printf("%d\n",m[l][O]+n[O][O]);/*①*/printfC^dXn",m[O][l]+ii[l][O])s/*②*/}①A)OB)1C)2D)3②A)OB)1C)2D)3程序的輸出結(jié)果是一o#include<stdio.h>main(){charsl[50]={"somestringprintf(n%s\n'\strcat(sl,s2));)A)somestring*B)testC)somestritestD)somestring*test【2.30]下面程序的輸出結(jié)果是—o#include<stdio.h>f(char*§){char*p=s;while(*p!=,\0,)P++;return(p-s);)main(){printf(H%d\n,7(HABCDEFH));)A)3B)6c)8D)0程序的輸出結(jié)果是—o#include<stdio.h>#include<string.h>main(){charstr[100]="Howdoyoudo”;strcpy(str+strlen(str)/2,*fesshe");printf(,,%s\n,\str);)A)HowdoyoudoB)essheC)HowareyouD)Howdoesshe【2.32]下面程序的輸出結(jié)果是一.#indude<stdio.h>func(inta,intb){intc;c=a+b;return(c);main(){intx=6,y=7,z=8,r;r=func((x-,y++,x+y),z-);printf(H%d\nH,r);A)11B)20C)21D)31【2.33]下面程序的輸出結(jié)果是一(#include<stdio.h>voidfun(int*s){staticintj=0;do{sU]+=s[j+l];}while(++j<2);)main(){intk,a[10]={l,23,4^J;for(k=l;k<3;k++)fun(a);for(k=0;k<5;k++)printf(H%dH,a[k]);)A)35756B)23445C)35745D)12345[2.34]下面程序的輸出結(jié)果是一.#include<stdio.h>intk=l;main(){inti=4;fun(i);printf(M\n%d,%dM,i,k);/*①*/}fun(intm){m+=k;k+=m;{chark=,B,;printf("\n%d",k-'A');/*②*/Iprintf("\n%d,%d",m.k);/*③*/}①A)4,1B)5,6C)4,6D)A,B,C參考答案都不對(duì)②A)1B)-59C)-64D)A,B,C參考答案都不對(duì)③A)5,66B)1,66C)5,6D)A,B,C參考答案都不對(duì)【2.35]下面程序的輸出結(jié)果是一。#include<stdio.h>fun(intn,int*s){intfigif(n==llln==2)*s=l;else{fun(n-l,&fl);fun(n-2,&f2);*s=n+f2;main(){intx;fun(6,&x);printf(,,%d\n,,,x);}A)6B)7C)8D)9程序的輸出結(jié)果是一。intw=3;main(){intw=10;printf(M%d\n,r,fun(5)*w);}fun(intk){if(k==O)retum(w);return(fun(k-l)*k);)A)360B)3600C)1080D)1200程序的輸出結(jié)果是一。#include<stdio.h>funa(inta){intb=0;staticintc=3;a=c++,b++;return(a);)main(){inta=2J,k;for(i=0;i<2;i++)k=funa(a++);printf(M%d\iin,k);}A)3B)0C)5D)4[238]下面程序的輸出結(jié)果是—o#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(M%d,%d\n*',x,y);)A)12,2B)5,25C)1,12D)輸出不確定[2.39]下面程序的輸出結(jié)果是一。main(){inta=2,i;for(i=0;i<3;i++)printf(n%4d1;f(a));}f(inta){intb=O;staticintc=3;b++?C++;return(a+b+c);)A)777B)71013C)7911D)789[2.401下面程序的輸出結(jié)果是一.#include<stdio.h>try(){staticintx=3;x++;return(x);)main(){inti,x;for(i=0;i<=2;i++)x=try();printf(M%d\nM,x);)A)3B)4C)5D)6[2.411下面程序的輸出結(jié)果是一。#include<stdio.h>main(){intx=l;voidH(),f2();no;f2(x);printf(M%d\nH,x);}voidf1(void){intx=3;printf(M%d*\x);}voidf2(x)intx;{printf("%dl\++x);}A)U1B)222C)333D)321[242]下面程序的輸出結(jié)果是一o#include<stdio.h>#defineSUB(X,Y)(X)*Ymain(){inta=3,b=4;printf(n%d\n”,SUB(a++,b++));}A)12B)15C)16D)20程序的輸出結(jié)果是一omainQ{inta[]={l,2Q,4,5,6};int*p;p二a;printf(H%dM,*p);printf(H%dH*(++p));printf(H%d,\*++p);printf(H%dH,*(p--));p+=3;printf(H%d%du,*p,*(a+3));}A)123354B)123456C)122345D)123445程序的輸出結(jié)果是一.main(){inta[3][4]={U3,4,5,6,73,9,10,ll,12};int*p=a;p+=6;printf("%d",*p);/*①*/printf("%d",*(*(a+6)));/*②*/printf("%d",*(a[l]+=2))s/*③*/printff"%d",*(&a(0][0]+6));/*④*/}A)7777B)②句語(yǔ)法錯(cuò)誤C)③句語(yǔ)法錯(cuò)誤D)④句語(yǔ)法錯(cuò)誤程序的輸出結(jié)果是一.#defineFMT"%X\n"#include<stdio.h>main(){staticinta[][4]={1,234,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)前面三個(gè)參考答案均是錯(cuò)誤的程序的輸出結(jié)果是一.#include<stdio.h>main(){inta[]={l,2,3,4,5);intx,y,*p;p=&a[0];x=*(p+2);y=*(p+4);printf(M%d,%d,%d\n'\*p,x,y);)A)1,3,5B)1,2,3C)1,2,4D)1,4,5程序的輸出結(jié)果是一。voidive(x擔(dā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("%d'\a[i]);printf(M\nM);)A)1234567890B)0987654321C)1357924680D)0864297531程序的輸出結(jié)果是—o#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=H1234567,,;fun(p,strlen(p));printf(H%sn,p);)A)7654321B)1717171C)7171717D)1711717程序的輸出結(jié)果是一o#include<stdio.h>char*p="abcdefghijklmnopq";main(){inti=0;while(*p++!=,e,);printf(H%c\nH,*p);}A)cB)dC)eD)f程序的輸出結(jié)果是一.#include<stdio.h>f(intx,inty){return(y-x);)main(){inta=5,b=6,c;intf(),(*g)()=f;printf(H%d\nM,(*g)(a,b));}A)IB)2C)3D)前面三個(gè)參考答案均是錯(cuò)誤的程序的輸出結(jié)果是一o#include<stdio.h>main(){inta=l,*p,**pp;pp=&p;p=&a;a++;printf(H%d,%d,%d\nM,a,*p,**pp);}A)2,1,1B)2,1,2C)2,2,2D)程序有錯(cuò)誤程序的輸出結(jié)果是一.main(){char*alpha[7]={“ABCD”JEFGH”JUKL”JMNOP”JQRST”JUVWXVYZ”};char**p;inti;p=alpha;for(i=0;i<4;i++)printf(H%cH,*(p[i]));printf(M\nH);)A)AEIMB)BFJNC)ABCDD)DHLP程序的輸出結(jié)果是一。#include<stdio.h>char*pp[2][3]={MabcH,HdefghM,Mijkr\nmnopqrH,MstuvwH,nxyzM);main(){printf("%c\n",***(pp+l));/*①*/printf("%c\n",**pp[O])s/*②*/printf("%c\n",(*(*(pp+l)+l))[4]);/*③*/printf("%c\n",*(pp[l][2]+2));/*④*/printf("%s\n",**(pp+l));/*⑤*/)A)aB)dC)iD)mA)aB)dC)iD)mA)hB)lC)qD)wA)kB)oC)uD)zA)ijklB)mnopqrC)stuvwD)xyz程序的輸出結(jié)果是一。#includeHstdio.hMstructstrl{charc[5];char*s;};main(){structstrlsl[2]={{MABCD,,MEFGHn),{HUKM,MLMNH)};structstr2{structstrlsr;intd;}s2={MOPQM,MRSTM,32767);structstrl*p[2];p[0]=&sl[0];p[l]=&sl[l]5printf(H%sM,++p[l]->s);/*①*/printf(H%cH>s2.sr.c[2]);/*②*/①A)LMNB)MNC)ND)UK②A)OB)PC)QD)R程序的輸出結(jié)果是一。structst{intx,*y;)*P;int§[]={10,20,30,40};structsta[]={l,&s[0],2,&s[l],3,&s[2],4,&$[3]};main(){P=a;printf(M%d\n*r,++(*(++p)->y));}A)10B)llC)20D)21[2,561以下程序的輸出結(jié)果是—o#include<stdio.h>main(){unionEXAMPLE{struct{intx,y;}in;inta,b;)e;e.a=l;e.b=2;e.in.x=e.a*e.b;e.in.y=e.a+e.b;printf(K%d,%d\nH,e.in.x,e.in.y);)A)2,3B)4,4C)4,8D)8,8程序的輸出結(jié)果是一o#include<stdio.h>main(){union(inti[2];longk;charc[4];}i;*s=&r;s->i[0]=0x39;s->i[l]=0x38;printf(H%c\nM,s->c[O]);)A)39B)9C)38D)8程序的輸出是。main(){printf(H%d\nH,EOF);A)-lB)OC)1D)程序是錯(cuò)誤的【閱讀程序題參考答案]答案:D注釋:程序中除法運(yùn)算的兩個(gè)操作數(shù)均是整型,運(yùn)算結(jié)果也是整型。答案:B注釋:C語(yǔ)言允許在程序塊(分程序)中說(shuō)明變量。[23]參考答案:C注釋:變量i中的負(fù)號(hào)傳送給變量n后,因n是無(wú)符號(hào)數(shù),已不作為負(fù)號(hào)處理。答案:D注釋:對(duì)變量x的一一操作是后綴形式,變量x的減1操作要在執(zhí)行完printf函數(shù)之后才進(jìn)行,所以變量x的值在輸出的時(shí)候仍然保持原值10.答案:B注釋:C語(yǔ)言在執(zhí)行printf()時(shí),對(duì)函數(shù)中的表達(dá)式表列的處理順序是從后向前,即先處理n--,再處理n++,最后處理n,而且每一個(gè)表達(dá)式作為一個(gè)處理單元,也就是說(shuō)在不同的表達(dá)式中自增自減運(yùn)算是單獨(dú)考慮的。答案:A注釋:變量x和變量y做按位與,結(jié)果為0x0200,右移4位為0x0020,再與0x005f做按位或,最后結(jié)果為0x007f.答案:A注釋:逗號(hào)表達(dá)式的結(jié)果是用逗號(hào)分開(kāi)的最后一個(gè)表達(dá)式的值,此題由于。==4,的值是0,所以逗號(hào)表達(dá)式的值為0。答案:B答案:A答案:C注釋:在輸出格式描述“%m.ns”中,m是輸出總長(zhǎng)度,n是實(shí)際字符的個(gè)數(shù),這里m沒(méi)有給出,則輸出總長(zhǎng)度就是實(shí)際輸出字符的個(gè)數(shù)。答案:C答案:B[2.131參考答案:C答案:B答案:D答案:A答案:C答案:A答案:C注釋:在switch語(yǔ)句中,case本身僅起到語(yǔ)句標(biāo)號(hào)的作用,不會(huì)改變語(yǔ)句的流程,執(zhí)行break語(yǔ)句才能退出當(dāng)前的switch語(yǔ)句。答案:D注釋:siwtch語(yǔ)句的表達(dá)式中,變量c是后綴的增一運(yùn)算,第一次執(zhí)行do-while循環(huán)時(shí),執(zhí)行case'A'后面的語(yǔ)句。答案:D答案:B答案:B注釋:fabs()是浮點(diǎn)數(shù)絕對(duì)值函數(shù)。答案:A答案:C注釋:C語(yǔ)言允許在程序塊(分程序)內(nèi)說(shuō)明變量,如果在程序塊內(nèi)說(shuō)明的變量和程序塊外的變量同名,在塊外說(shuō)明的變量在塊內(nèi)是不可見(jiàn)的??蓪⒋祟}和【2.11]進(jìn)行比較,加深理解。答案:C答案:B[2.281參考答案:①D②A答案:D答案:B注釋:輸出結(jié)果為字符串長(zhǎng)度。答案:D注釋:字符串拷貝函數(shù)stivpy()要求的兩個(gè)參數(shù)都是字符串首地址。本題中第二個(gè)參數(shù)是字符串常量,接受這個(gè)字符串的第一個(gè)參量不是直接給出字符數(shù)組名,而是進(jìn)行了地址運(yùn)算后的結(jié)果。由于str字符串的長(zhǎng)度是13,除2取整后是6,第一個(gè)參數(shù)給出的地址是字符數(shù)組str的首地址加6,也就是原來(lái)字符串中第二個(gè)空格的位置,把“esshe”從該處放入,字符串str變?yōu)椤癏owdoesshe",[232]參考答案:C注釋:main函數(shù)調(diào)用func函數(shù)時(shí),第一個(gè)實(shí)參使用的是逗號(hào)表達(dá)式的值,也就是x+y的結(jié)果。由于對(duì)變量x、y、z進(jìn)行的是后綴運(yùn)算,所以函數(shù)func的參數(shù)值是13和8?!?.33]參考答案:C答案:①C②A③C答案:C答案:B注釋:函數(shù)fun進(jìn)行了遞歸調(diào)用,實(shí)際進(jìn)行的運(yùn)算是5X4X3X2X1X3X10。主函數(shù)內(nèi)說(shuō)明的局部變量w屏蔽了外部變量w,所以在主函數(shù)中外部變量w是不可見(jiàn)的,在調(diào)用printf函數(shù)時(shí)表達(dá)式”fun(5)*w"中w的值是10。答案:D注釋:main函數(shù)三次調(diào)用了函數(shù)funa,在funa函數(shù)中的靜態(tài)變量c僅在第一次調(diào)用時(shí)進(jìn)行了初始化,再次調(diào)用時(shí)不再對(duì)靜態(tài)變量賦初值。答案:B注釋:main函數(shù)和num函數(shù)中都說(shuō)明了變量a和b,由于它們是內(nèi)部變量,所以它們分別在說(shuō)明它們的函數(shù)內(nèi)有效。外部變量x和y在函數(shù)num之后被說(shuō)明,而在num函數(shù)中又要引用它們,所以在num函數(shù)中用關(guān)鍵字"extern”說(shuō)明變量x和y是一個(gè)外部變量,也就是通知計(jì)算機(jī)這兩個(gè)變量在fun函數(shù)以外被說(shuō)明,此處不是定義兩個(gè)int型變量。答案:D注釋:函數(shù)f中的變量c是靜態(tài)變量,僅在第一次調(diào)用函數(shù)f時(shí)它被初始化為3,第二次調(diào)用函數(shù)f時(shí)c的值是4,第三次調(diào)用函數(shù)f時(shí)c的值是5。[2.401參考答案:D答案:D注釋:程序中有三個(gè)“X”分別在三個(gè)不同的函數(shù)中,這三個(gè)“X"都是自動(dòng)變量,所以三個(gè)“X"分別局部于三不同的函數(shù),在三個(gè)函數(shù)中對(duì)“X”的操作互不影響。答案:A[2.431參考答案:A注釋:*(++p)和*++p都是指針變量值前加1,第一次指向a⑴,第二次指向a[2];a+3是a[3]的地址。答案:C注釋:②句沒(méi)有語(yǔ)法錯(cuò)誤,但是a+6指向數(shù)組之外,因?yàn)閍是a[0]的地址,a+1是a[l]的地址,a+2是a[2]的地址,顯然數(shù)組a沒(méi)有a[6]分量。③句錯(cuò)誤,因?yàn)閍[l]是地址常量,它是a[l][0]的地址,對(duì)于地址常量是不可以進(jìn)行賦值運(yùn)算的。[2.451參考答案:①D②A注釋:如果FMT定義為“%x\n”,則輸出的16進(jìn)制數(shù)據(jù)用小寫(xiě)字母表示。答案:A注釋:語(yǔ)句“p=&a[0r'表示將數(shù)組a中元素a[0]的地址賦給指針變量p,則p就是指向數(shù)組首元素a[0]的指針變量,"&a[0]”是取數(shù)組首元素的地址。對(duì)于指向數(shù)組首址的指針,p+i(或a+i)是數(shù)組元素a[i]的地址,*(p+i)(或*(a+i))就是a[i]的值。答案:B答案:D答案:D答案:A注釋:變量g是指向函數(shù)的指針,(*g)(a,b)是調(diào)用指針g所指向的函數(shù)。答案:C注釋:p是指針,pp是指向指針的指針。答案:A注釋:對(duì)于指向數(shù)組的指針變量可以做下標(biāo)運(yùn)算,p[i]和alpha[i]都是指向字符串的首地址,*p[i]取出字符串的第一個(gè)字符。答案:①D②A③D④D⑤B注釋:pp是一個(gè)二維指針數(shù)組,pp+1指向數(shù)組的第二維,*(pp+l)是第二維的起始地址,**(pp+l)是第二維第一個(gè)元素的地址,***(pp+l)是第二維第一個(gè)元素的內(nèi)容,所以,①的參考答案應(yīng)選D.*(pp+l)+l是第二維第二個(gè)元素的地址,*(*(pp+l)+l)是第二維第二個(gè)元素,(*(*(pp+l)+l))[4]則是第二維第二個(gè)元素所指字符串下標(biāo)為4的元素,即是字符w,故③應(yīng)當(dāng)選D。答案:①B②C答案:D答案:C注釋:聯(lián)合體成員的取值是最后一次給成員賦的值。答案:B注釋:整型數(shù)組i和字符數(shù)組c共用存儲(chǔ)空間,給i賦值也等于給c賦值,所以s->c[0]=0x39,所以輸出9,答案:A注釋:基本概念。EOF是由C語(yǔ)言在頭文件stdio.h中定義的,用戶可以直接使用。三、程序填空題導(dǎo)讀:在程序填空題中,已經(jīng)給出了程序的主干,讀者首先要理解程序的思路,再選擇正確的內(nèi)容填入空白處,使程序完成既定的功能。這類(lèi)習(xí)題的設(shè)計(jì)就是要引導(dǎo)讀者逐步掌握編程的方法。本節(jié)習(xí)題的難度適中,可能有些典型的程序在課堂上已經(jīng)有所接觸,讀者一定要獨(dú)立完成它,這樣就可以逐步提高自己的編程能力。在程序設(shè)計(jì)語(yǔ)言學(xué)習(xí)的中期,讀者對(duì)程序設(shè)計(jì)已經(jīng)有了初步的了解,而自己編寫(xiě)程序又不知從何處入手,此時(shí)解答此類(lèi)題目可以避免盲目性,從而提高學(xué)習(xí)的效率。[3.11下面程序的功能是不用第三個(gè)變量,實(shí)現(xiàn)兩個(gè)數(shù)的對(duì)調(diào)操作。#include<stdio.h>main(){inta9b;scanf(H%d%dn,&a,&b);printf(na=%d,b=%d\nM,a,b);a=①;b=②;a=③;print*"a=%d,b=%d\nM,a,b);[3.2]下面程序的功能是根據(jù)近似公式:冗2/6*1/12+1/22+1/32+……+1'2,求冗值。#include<math.h>doublepi(longn){doubles=0.0;longi;for(i=l;i<=n;i++)s=s+①;return(②);[3.31下面的程序的功能是求一維數(shù)組中的最小元素。findmin(int*s,intt,int*k){intp;for(p=0,*k=p;p<t;p++)if(s[p]<s[*k])①;main(){inta[10]X*k=&i;for(i=0;i<10;i++)scanf(H%dM,&a[i]);findmin(a,10,k);printfC,%d,%d\nH,*k^[*k]);程序的功能是計(jì)算1-3+5-7+……-99+101的值。main(){inti,t=l,s=O;for(i=l;l<=101;i+=2){①;s=s+t;②;}printfC%d\n",s);下程序段:s=1.0;for(k=l;k<=n;k++)s=s+1.0/(k*(k+l));printf(H%f\n*\s);填空完成下述程序,使之與上述程序的功能完全相同。s=0.0;①;k=0;do{s=s+d;②;d=1.0/(k*(k+l));}while(③);printfC'%An”⑼;程序的功能是從鍵盤(pán)上輸入若干學(xué)生的學(xué)習(xí)成績(jī),統(tǒng)計(jì)并輸出最高成績(jī)和最低成績(jī),當(dāng)輸入為負(fù)數(shù)時(shí)結(jié)束輸入。main(){floatx,amax,amin;scanf(H%fM,&

溫馨提示

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

評(píng)論

0/150

提交評(píng)論