C語言程序設(shè)計(jì)習(xí)題試題集2含答案_第1頁
C語言程序設(shè)計(jì)習(xí)題試題集2含答案_第2頁
C語言程序設(shè)計(jì)習(xí)題試題集2含答案_第3頁
C語言程序設(shè)計(jì)習(xí)題試題集2含答案_第4頁
已閱讀5頁,還剩137頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

ー、單項(xiàng)選擇題不正確的C語言標(biāo)識(shí)符是ー0A)intB)a_l_2C)ab1exeD)_x是正確的C語言標(biāo)識(shí)符是ー〇A)#defineB)_123C)%dD)\n四組字符串中都可以用作C語言程序標(biāo)識(shí)符的ー組是。A)printB)i\amC)PxqD)str_l_3done_halfMy->bookCppoodbstartSitline#powaBc3paiHis.agewhile各選項(xiàng)組中,均是C語言關(guān)鍵字的組是。A)auto,enum,includeB)switch,typedef,continueC)signed,union,scanfD)if,struct,type不屬于C語言關(guān)鍵字的是〇A)defaultB)registerC)enumD)externalC語言程序從main()函數(shù)開始執(zhí)行,所以這個(gè)函數(shù)要寫在ー〇A)程序文件的開始B)程序文件的最后C)它所調(diào)用的函數(shù)的前面D)程序文件的任何位置關(guān)于C語言的敘述錯(cuò)誤的是ーA)大寫字母和小寫字母的意義相同B)不同類型的變量可以在一個(gè)表達(dá)式中C)在賦值表達(dá)式中等號(hào)(=)左邊的變量和右邊的值可以是不同類型D)同一個(gè)運(yùn)算符號(hào)在不同的場合可以有不同的含義語言中,錯(cuò)誤的int類型的常數(shù)是。A)32768B)0C)037D)OxAF語句printf("%x",-l);屏幕顯示〇A)-lB)1C)-ffffD)fffflong如32768:執(zhí)行語句printf("%d",i);屏幕顯示, 〇A)-lB)-32768C)1D)32768[1.11]已知longi=65539:執(zhí)行語句printf("%d",i);屏幕顯示, 0A)65539B)-3〇3D)程序不能執(zhí)行語言中,整數(shù)一8在內(nèi)存中的存儲(chǔ)形式是.A)1111111111111000B)1000000000001000C)0000000000001000D)1111111111110111C語言中字符型(char)數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式是ー〇A)原碼B)補(bǔ)碼C)反碼D)ASCI!碼符g賦給字符變量c,正確的表達(dá)式是。A)c=\147B)c="\147"C)c=M47'D)c='O147'轉(zhuǎn)義字符中錯(cuò)誤的ー個(gè)是ー〇A)ヽ00〇,B)、〇014,C)Hl11'D)ヽ2'格符賦給字符變量c,正確的賦值語句是ー。A)c=、〇'B)c=NULLC)c=0D)c=32[1.17j已知:chara=ヽ70';則變量a中〇A)包含1個(gè)字符B)包含2個(gè)字符〇包含3個(gè)字符D)說明非法串"\"E0F\n=A6ハ""的長度是 。A)8B)9C)14D)非法字符串[1.19I字符串""的長度是。A)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)。己知:floatC,F,由華氏求攝氏的正確的賦值表達(dá)式是〇A)C=5/9(F-32)B)C=5*(F-32)/9C)C=5/9*(F-32)D)三個(gè)表達(dá)式都正確[1.22I逗號(hào)表達(dá)式"(a=3*5,a*4),a+15"的值是〇A)15B)60C)30D)不確定[1.231如果inta=l,b=2,c=3,d=4;貝リ條件表達(dá)式"a<b?a:c<d?cd'的值是0A)1B)2C)3D)4[1.241為求出s=10!的值,則變量s的類型應(yīng)當(dāng)為。A)intB)unsigedC)longD)以上三種類型均可[1.251已知inti=10;表達(dá)式"20?〇<=i<=9"的值是_A)0B)1C)19D)20intx=l,y:執(zhí)行下述語句后變量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>=l22B)!(c<=48llc>=57&&c<=65llc>=90&&c<=97llc>=122)C)c>=48&&c<=57llc>=65&&c<=90llc>=97&&c<=l22D)!(c>=48&&c<=57llc>=65&&c<=90llc>=97&&c<=122)inta[3][2]={3,2,l);則表達(dá)式"[〇][〇]/a[〇][1]間〇][2]"的值是〇A)0.166667B)1C)0D)錯(cuò)誤的表達(dá)式intx=l,y=l,z=l:表達(dá)式"x+++y+++z++”的值是〇A)3B)4C)5D)表達(dá)式錯(cuò)誤進(jìn)制表示表達(dá)式”121012"的值是ー〇A)1B)OC)12D)14以下程序段:inta=3,b=4;a=aAb;b=bAa;a=aAb;則執(zhí)行以上語句后a和b的值分別是ー〇A)a=3,b=4B)a=4,b=3C)a=4,b=4D)a=3,b=3運(yùn)算中,操作數(shù)每右移一位,其結(jié)果相當(dāng)于ー〇A)操作數(shù)乘以2B)操作數(shù)除以2C)操作數(shù)除以16D)操作數(shù)乘以16chara=222;執(zhí)行語句a=a&052;后,變量a的值是〇A)222B)10C)244D)254二進(jìn)制數(shù)a是00101101,如果想通過整型變量b與a做異或運(yùn)算,使變量a的高4位取反,低4位不變,則二進(jìn)制數(shù)b的值應(yīng)是ー〇A)11110000B)00001111〇11111111D)00000000inta=15,執(zhí)行語句a=avv2以后,變量a的值是 〇A)20B)40C)60D)80intx=5,y=5,z=5;執(zhí)行語句x%=y+z;后,x的值是〇A)0B)1C)5D)6語句scanf(”x=%f,y=%f”,&x,&y);輸入變量x、y的值(口代表空格),正確的輸入是〇A)1.25,2.4B)1.25D2.4C)x=1.25,y=2.4D)x=1.25Dy=2.4循環(huán)語句中有語法錯(cuò)誤的是ー〇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式sizeof(double)是〇A)函數(shù)調(diào)用B)double型表達(dá)式C)int型表達(dá)式D)非法表達(dá)式語句printf("2:%d「,printf("l:%d,”,scanf("%d”,&x)));以后的輸出結(jié)果是A)2:1,1:1,B)1:1,2:1,02:4,1:1D)1:1,2:4,:intx,y;doublez;則以下語句中錯(cuò)誤的函數(shù)調(diào)用是。A)scanf(M%d,%lx,%len,&x,&y,&z);B)scanf(H%2d*%d%lf',&x,&y,&z);C)scanf(n%x%*d%on,&x,&y);D)scanf("%x%〇%6.2F,&x,&y,&z);件表達(dá)式”(n)?(c++):(c?ヴ中的表達(dá)式(n)等價(jià)的表達(dá)式是〇A)(n==0)B)(n==l)〇(n!=0)D)(n!=l)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)IB)2C)3D)死循環(huán)滿足式12+22+32+……+n2く1000的n,正確的語句是〇A)for(i=l,s=0;(s=s+i*i)<=1000;n=i++);B)for(i=l,s=0;(s=s+i*i)<=1000;n=++i);C)for(i=l,s=0;(s=s+i*++i)<=1000;n=i);D)for(i=l,s=0;(s=s+i*i++)<=1000;n=i);的for語句。for(x=0,y=10;(y>0)&&(x<4);x-H-,y-);A)是無限循環(huán)B)循環(huán)次數(shù)不定C)循環(huán)執(zhí)行4次D)循環(huán)執(zhí)行3次inti=l;執(zhí)行語句while(i++v4);后,變量i的值為。A)3B)4C)5D)6intx=12,y=3;執(zhí)行下述程序后,變量x的值是〇do{x/=y-;}while(x>y);A)1B)2C)3D)程序運(yùn)行有錯(cuò)誤chara[][20]={"Beijing","shanghai","tianjin","chongqing"}:語句printf("%c",a[30]);的輸出是ー。A)く空格〉B)nC)不定D)數(shù)組定義有誤數(shù)組名作為函數(shù)調(diào)用時(shí)的實(shí)參,則實(shí)際上傳遞給形參的是〇A)數(shù)組首地址B)數(shù)組的第一個(gè)元素值C)數(shù)組中全部元素的值D)數(shù)組元素的個(gè)數(shù)維數(shù)組的正確說明是ー?A)intaロU={123,4,5,6};B)inta[2][]={1,2,3,4,5,6):C)inta[][3]={l,2,3,4,5,6};D)inta[2,3]={1,2,3,4,5,6};符數(shù)組s賦值,不合法的ー個(gè)是ー。A)chars[]="Beijing";B)chars[20]={"beijing"};C)chars[20];s="Beijing";D)chars[20]={'B','e','i','j','i','n','g');符數(shù)組str賦初值,str不能作為字符串使用的ー個(gè)是 〇charstr[J="shanghai";charstr[]={"shanghai"};charstr[9]={'s','h','a','n','g','h','a','i');charstr[8]={'s','h','a','n','g',h','a','i'};數(shù)形參的說明有錯(cuò)誤的是ー.A)inta(floatx[J,intn)B)inta(float*x,intn)C)inta(floatx[10],intn)D)inta(floatx,intn)ー個(gè)變量在整個(gè)程序運(yùn)行期間都存在,但是僅在說明它的函數(shù)內(nèi)是可見的,這個(gè)變量的存儲(chǔ)類型應(yīng)該被說明為ー。A)靜態(tài)變量B)動(dòng)態(tài)變量〇外部變量D)內(nèi)部變量個(gè)C源程序文件中,若要定義ー個(gè)只允許在該源文件中所有函數(shù)使用的變量,則該變量需要使用的存儲(chǔ)類別是。A)externB)registerC)autoD)static語言中,函數(shù)的數(shù)據(jù)類型是指ー。A)函數(shù)返回值的數(shù)據(jù)類型B)函數(shù)形參的數(shù)據(jù)類型C)調(diào)用該函數(shù)時(shí)的實(shí)參的數(shù)據(jù)類型D)任意指定的數(shù)據(jù)類型如下定義的函數(shù):fun1(a){printf("\n%d",a);}則該函數(shù)的數(shù)據(jù)類型是ー〇A)與參數(shù)a的類型相同B)void型C)沒有返回值D)無法確定ー個(gè)函數(shù)實(shí)現(xiàn)交換x和y的值,并將結(jié)果正確返回。能夠?qū)崿F(xiàn)此功能的是,A)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;}}個(gè)角的正弦函數(shù)值的平方。能夠?qū)崿F(xiàn)此功能的函數(shù)是ー〇A)sqofsina(x)floatx;{retum(sin(x)*sin(x));}doublesqofsinb(x)floatx;{retum(sin((double)x)*sin((double)x));)doublesqofsinc(x){retum(((sin(x)*sin(x));}sqofsind(x)floatx;{retum(double(sin(x)*sin(x)));ー個(gè)函數(shù)內(nèi)有數(shù)據(jù)類型說明語句如下:doublex,y,z(10);關(guān)于此語句的解釋,下面說法正確的是ー〇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)語句中有錯(cuò)誤。函數(shù)定義如下:floatfun1(intx,inty){floatz;z=(float)x/y;return(z);)主調(diào)函數(shù)中有inta=l,b=O:可以正確調(diào)用此函數(shù)的語句是.A)printf("%f',funl(a,b)); B)printf("%f',fun1(&a,&b));C)printf("%f',funl(*a,*b));D)調(diào)用時(shí)發(fā)生錯(cuò)誤函數(shù)的功能是?a(sl,s2)charsl[],s2[];{while(s2++=sl++);)A)字符串比較B)字符串復(fù)制〇字符串連接D)字符串反向列結(jié)論中,只有一個(gè)是錯(cuò)誤的,它是。C語言允許函數(shù)的遞歸調(diào)用C語言中的continue語句,可以通過改變程序的結(jié)構(gòu)而省略C)有些遞歸程序是不能用非遞歸算法實(shí)現(xiàn)的D)C語言中不允許在函數(shù)中再定義函數(shù):inta,*y=&a;則下列函數(shù)調(diào)用中錯(cuò)誤的是。A)scanf("%d",&a);B)scanf("%d",y);C)printf("%d",a);D)printf("%d",y);語句"int(*p)();"的含義是.A)p是ー個(gè)指向ー維數(shù)組的指針變量B)p是指針變量,指向一個(gè)整型數(shù)據(jù)C)p是一個(gè)指向函數(shù)的指針,該函數(shù)的返回值是ー個(gè)整型D)以上都不對(duì)說明int(*p)[4];其中的標(biāo)識(shí)符p是。A)4個(gè)指向整型變量的指針變量B)指向4個(gè)整型變量的函數(shù)指針C)ー個(gè)指向具有4個(gè)整型元素的ー維數(shù)組的指針D)具有4個(gè)指向整型變量的指針元素的ー維指針數(shù)組:charsH〇],*p=s,則在下列語句中,錯(cuò)誤的語句是。A)p=s+5;B)s=p+s;C)s[2J=p[4];D)*p=s[〇];:chars[100];inti;則引用數(shù)組元素的錯(cuò)誤的形式是。A)s[i+10]B)*(s+i)C)*(i+s)D)*((s++)+i);chars[6],*ps=s;則正確的賦值語句是〇A)s="12345";B)*s="12345";C)ps="12345";D)*ps="12345";[1.71]已知:chara[3][10]={uBeiJing",MShangHaiM,(Tianjin"),*pa=a;不能正確顯示字符串“ShangHai"的語句是〇A)printf(M%s",a+l);B)printf(M%sM,*(a+l));C)prinlf(”%s”,*a+l):D)printf(n%sn,&a[l][O]);:inta[4][3]={1,2,3,456,7,8,9,10,11,12);int(*ptr)[3]=a,*p=a[0];則以卜.能夠正確表示數(shù)組元素的表達(dá)式是。A)*(*(a+l)+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á)式是〇A)p+=2,*(p++)B)p+=2,*++pC)p+=2,*p++D)p+=2,++*p:inta[]={1,23,4),y,*p=a;則執(zhí)行語句y=(*++p)”:之后,數(shù)組a各元素的值變?yōu)锳)0,1,3,4B)1,1,3,4C)1,2,2,4D)1,2,3,3變量y的值是〇A)1B)2〇3D)4:inta[]={l,3,5,7),y*p=a;為使變量y的值為3,下列語句正確的是〇A)y=++*p++;B)y=++(*p++);C)y=(++*p)++;D)y=(*++p)++;:intx[]={1,3,5,7,9,11},*ptr=x;則能夠正確引用數(shù)組元素的語句是。A)xB)*(ptr-)〇x[6]D)*(-ptr)的功能是交換變量x和y中的值,且通過正確調(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)I*x=*y;*y=*x;I*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]={1,&a[1],3>&a[2],5,&a[0]},*p;如果下述語句的顯示是2,則對(duì)p的賦值是〇printf(n%d,\++(p->next->n));A)p=&a[0];B)p=&a[ll;C)p=&a[2];D)p=&a[3]::structperson{charname[10]:intage;}class[10]={1,LiMing',,29,,,ZhangHongM,21;,WangFang,',22);下述表達(dá)式中,值為72的ー個(gè)是ー.class[0]->age+classf1]->age+class[2]->ageclass[l].name[5]personfl].name[5]clase->name[5]:struct{inti;charc;floata;}test;則sizeof(test)的值是〇A)4B)5C)6D)7:union{inti;charc;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】若有以下說明語句,則對(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=&stu1;A)stuLageB)student.ageC)p->ageD)(*p).age以下定義和語句:uniondata{inti;charc;floatf;}a:intn;則以下語句正確的是〇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)p=(structsk*)&data.a;B)p=(structsk*)data.a;C)p=&data.a;D)*p=data.a;enumweek{sun,mon,tue,wed,thu,fri,sat}day;則正確的賦值語句是〇A)sun=0;C)san=day;D)sun=mon;D)day=sun;enumcolor{red,yellow=2,blue,white,black}ren5執(zhí)行下述語句的輸出結(jié)果是,printf(',%d',,ren=white);A)0B)1C)3D)4[1.91]已知enumname{zhao=1,qian,sun,li}man:執(zhí)行下述程序段后的輸出是man=0;switch(man){case0:printf(nPeople\nH);printf("Man\n*');printf(nWoman\nM);default:printf(',Error\n,');)PeopleB)ManC)WomanD)Error關(guān)于枚舉類型名的定義中,正確的是ー〇A)enema={one,two,three};B)enema{one=9,two=-1,three);C)enema={"one","two"Jthree”};D)enema{"one","two","three”};C語言中標(biāo)準(zhǔn)輸入文件stdin是指.A)鍵盤B)顯示器C)鼠標(biāo)D)硬盤開一個(gè)已存在的非空文件"file"用于修改,選擇正確的語句A)fp=fopen("file","r");B)fp=fopen("file","a+M);C)fp=fopen("file","w");D)fp=fopen('file,\"r+");利執(zhí)行了文件關(guān)閉操作時(shí),fclose函數(shù)的返回值是。A)-lB)TRUEC)0D)1fscanf函數(shù)的正確調(diào)用形式是。A)fscanf(文件指針,格式字符串,輸出列表);fscanf(格式字符串,輸出列表,文件指針);C)fscanf(格式字符串,文件指針,輸出列表);D)fscanf(文件指針,格式字符串,輸入列表);[1.97]使用fgetc函數(shù),則打開文件的方式必須是。A)只寫B(tài))追加〇讀或讀/寫D)參考答案B和C都正確[1.98I已知宏定義#defineN3#defineY(n)((N+l)*n)執(zhí)行語句z=2*(N+Y(5+l));后,變量z的值是。A)42B)48C)52D)出錯(cuò)[1.99I已知宏定義#defineSQ(x)x*x,執(zhí)行語句printf("%d",10/SQ(3));后的輸出結(jié)果是,A)1B)3C)9D)10(1.100)已知宏定義如下:#definePRprintf#defineNLM\nM#defineD"%d”#defineDlDNL若程序中的語句是PR(Dl,a):經(jīng)預(yù)處理后展開為A)printf(%d\n,a);B)printf("%d\n",a);C)printf("%d""\n",a);D)原語句錯(cuò)誤[單項(xiàng)選擇題參考答案]:A注釋:int是C語言的關(guān)鍵字:B:A:B注釋:include是預(yù)處理命令:scanf是函數(shù)名:type不是C語言的關(guān)鍵字。:D:D:A:A注釋:int型表示整數(shù)的范圍是ー32768?32767。:D注釋:整型常量一1在計(jì)算機(jī)中表示為補(bǔ)碼1111111111111111,用十六進(jìn)制顯示這個(gè)數(shù)時(shí),最左邊的1不會(huì)被解釋為符號(hào)位,而是與右邊其它位共同轉(zhuǎn)換為十六進(jìn)制數(shù)。:B注釋:長整型數(shù)32768在計(jì)算機(jī)內(nèi)的表示是1000000000000000?以一般整型進(jìn)行輸出時(shí),此數(shù)恰是ー32768的補(bǔ)碼。:C注釋:長整型數(shù)65539在計(jì)算機(jī)內(nèi)的表示是00010000000000000011,以一般整型進(jìn)行輸出時(shí),僅將右側(cè)16位二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)。:A注釋:C語言中,int型的負(fù)數(shù)是采用補(bǔ)碼表示的。:D:C注釋:變量c是字符型,可用字符常量為它賦值。字符常量必須用單引號(hào)括起來,所以B是錯(cuò)誤的;在單引號(hào)或雙引號(hào)內(nèi)的反斜線へ,用于表示轉(zhuǎn)義字符,A選項(xiàng)在無引號(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[1.16I答案:D注釋:空字符和空格符是不同的兩個(gè)字符,空格符的ASCH碼值是32,空字符的ASCH值是〇。:A:B:A:C:B注釋:單純從C語言語法來說,選項(xiàng)B、C都是正確的,但是選項(xiàng)C中第一個(gè)運(yùn)算的兩個(gè)對(duì)象都是整型常數(shù),其結(jié)果也是整型數(shù)〇,最后的運(yùn)算結(jié)果也就是0了。:C[1.23I答案: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)通過一個(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)的寫法似乎每行有3個(gè)元素,和定義時(shí)的3行2列不一致,但是C語言引用數(shù)組元素時(shí)是根據(jù)數(shù)組的首地址和給出的下標(biāo)進(jìn)行運(yùn)算決定元素的地址。題中表達(dá)式引用了數(shù)組前3個(gè)元素。[1.29I答案:A[1.30I答案:D[1.31I答案:B[1.321答案:B[1.331答案:B[1.34I答案:A:C:C:C:D[1.39I答案:D[1.40I答案:C1.41I答案:D注釋:scanf函數(shù)返回值是輸入數(shù)據(jù)的個(gè)數(shù),primf函數(shù)的返回值是輸出的字符個(gè)數(shù)。[1.42I答案:D[1.43I答案:C注釋:在C語言中,經(jīng)常用一個(gè)變量來作為邏輯表達(dá)式,其含義就是:當(dāng)變量的值不為。時(shí)關(guān)系成立。[1.441答案:D注釋:break語句僅可跳出switch語句,不會(huì)跳出while循環(huán),這是ー個(gè)死循環(huán)。[1.45I答案:A[1.461答案:C[1.471答案:C[1.48I答案:D注釋:當(dāng)除數(shù)y為0時(shí),程序發(fā)生溢出錯(cuò)誤。[1.49I答案:C[1.501答案:A[1.51I答案:C:C注釋:答案C的賦值號(hào)左側(cè)是數(shù)組s的首地址,是ー個(gè)常量,賦值號(hào)右側(cè)是一個(gè)字符串常量,不可能將一個(gè)字符串常量賦給ー個(gè)地址常量。[1.53I答案:D注釋:D選項(xiàng)缺少字符串結(jié)束標(biāo)志。[1.54I答案:C注釋:此處函數(shù)形參是ー個(gè)指針變量,接受實(shí)參的地址,而不是一個(gè)數(shù)組。[1.55I答案:A:D注釋:這里首先要明確ー些基本概念。在C語言中,程序與文件是不同的概念,ー個(gè)程序可以由一個(gè)文件組成,也可以由多個(gè)文件組成;一個(gè)文件中又可以包含多個(gè)函數(shù);函數(shù)是構(gòu)成C程序的基本單位。變量的作用域因變量的存儲(chǔ)類型不同而不同。auto和register類型的變量的作用域是說明變量的當(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[1.58I答案:A注釋:它和參數(shù)aー樣,數(shù)據(jù)類型說明被省略,按照C語言的規(guī)定,在這種情況下,表示它們是int型。:C注釋:函數(shù)swapa是值傳遞,函數(shù)的執(zhí)行結(jié)果不能返回;函數(shù)swapb中變量temp不是指針變量,所以它不能接受地址量,用指針變量X為它賦值是不對(duì)的;函數(shù)swap中雖然指針變量交換了地址,即它們的指向的目標(biāo)變量進(jìn)行了交換,但是目標(biāo)變量并沒有行值的交換。:B[1.61I答案:D[1.62I答案:D注釋:主調(diào)函數(shù)中b=0,在執(zhí)行funl函數(shù)里的除法時(shí)發(fā)生溢出錯(cuò)誤。[1.63I答案:B[1.64I答案:C:D注釋:在答案口中,正確的函數(shù)調(diào)用應(yīng)當(dāng)是:printf("%d",*y)o:C注釋:要注意與說明語句"int(*p)ロ;”的區(qū)別。說明語句"int(*p)ロ:"說明的是ー個(gè)指向數(shù)組的指針。[1.67I答案:C注釋:題干中由于?和p被小括號(hào)括起,所以p應(yīng)被解釋為ー個(gè)指針,而后的下標(biāo)運(yùn)算符。說明所指向的對(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.68I答案:B注釋:選項(xiàng)B有兩處錯(cuò)誤,一是數(shù)組名是常量,不能出現(xiàn)的賦值好的左側(cè),ニ是指針變量只能和整數(shù)做加,不能和作為地址常量的數(shù)組名相加。[1.69I答案:D注釋:s作為數(shù)組名是地址常量,而s++是s=s+l,C語言不允許對(duì)常量進(jìn)行賦值。[1.701答案:C[1.71I答案: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[l]的,*(a+1)就是取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ù)組來說,做一次?或口運(yùn)算的結(jié)果仍是地址量,做兩次才是取數(shù)值。[1.72I答案: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ù)類型的長度,所以(*ptr+l)+2是數(shù)組中數(shù)值4的地址。根據(jù)以上分析,選項(xiàng)D對(duì)ptr進(jìn)行了兩次地址操作(?和U),所以結(jié)果應(yīng)是數(shù)據(jù),但是它加1后指向數(shù)組第二行,根據(jù)后面口中2它的地址增加兩個(gè)ー維數(shù)組的長度,就指向數(shù)組的最后一行,再做?運(yùn)算就是數(shù)10,即a[3][0]?[1.73I答案:A:BB:D:B:D注釋:答案D是另ー種交換兩個(gè)變量值的算法。[1.78I答案:B:C注釋:使用C對(duì)p進(jìn)行賦值,則ponext是a[〇]的地址,引用其成員n再做前增1運(yùn)算,結(jié)果就是2。:B:D[1.82I答案:A:C注釋:聯(lián)合變量temp的成員是占用同一存儲(chǔ)單元,它的長度是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ù)是打開模式,"r”模式是只讀方式,不能寫文件;“a+”模式是讀/追加方式,允許從文件中讀出數(shù)據(jù),但所有寫入的數(shù)據(jù)均自動(dòng)加在文件的末尾;"w”模式是寫方式,允許按照用戶的要求將數(shù)據(jù)寫入文件的指定位置,但打開文件后,首先要將文件的內(nèi)容清空。"r+"模式是讀/寫方式,不但允許讀文件,而且允許按照用戶的要求將數(shù)據(jù)寫入文件的指定位置,且在打開文件后,不會(huì)將文件的內(nèi)容清空。本題的要求是"修改"文件的內(nèi)容,因此只能選擇答案Do:C:D:C:B注釋:語句z=2*(N+Y(5+l)引用了兩個(gè)宏定義。C語言是區(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)o:C二、閱讀程序題導(dǎo)讀:學(xué)會(huì)閱讀程序?qū)τ诔鯇W(xué)者來說很重要,一方面可以鞏固所學(xué)的語法知識(shí),另一方面通過閱讀別人寫好的程序來打開自己的思路,就所謂見多識(shí)廣。讀者通過閱讀理解程序,從給出的四個(gè)備選參考答案中,選擇程序的正確輸出。如果選擇有誤,就要認(rèn)真分析原因,是概念方面的錯(cuò)誤還是對(duì)程序邏輯理解不對(duì),從而加深對(duì)語法規(guī)則的理解,提高程序設(shè)計(jì)能力。程序設(shè)計(jì)語言是開發(fā)程序的ー個(gè)工具,學(xué)習(xí)語言的目的是為了編寫程序來解決實(shí)際問題,所以特別提倡通過實(shí)際上機(jī)來檢驗(yàn)備選答案,增強(qiáng)動(dòng)手能力。習(xí)題基本上是按照教材的章節(jié)來安排的,讀者可以根據(jù)學(xué)習(xí)的進(jìn)度選擇部分習(xí)題。[2.1]以下程序的輸出結(jié)果是。main(){floata;a=l/100000000;printf(n%gH,a);)A)0.00000e+00B)0.0C)1.00000e-07D)0[2.2]下面程序的輸出結(jié)果是ー〇#include<stdio.h>main(){intx=10;{intx=20;printf(H%d,x);}printf("%d\n",x);)A)10,20B)20,10C)10,10D)20,20[2.3I以下程序的輸出結(jié)果是,main(){unsignedintn;inti=-521;n=i;printf(,,n=%u\n,',n);【2.4】以下程序的輸出結(jié)果是。main(){intx=10,y=10;printf("%d%d\n",x , y);)A)1010B)99C)910D)109程序的輸出結(jié)果是ー〇main(){intn=l;printf("%d%d%d\n\n,n++,n--);)A)111B)101C)110D)121[2.6I以下程序的輸出結(jié)果是 〇main(){intx=0x02ff,y=0x0ff00;printf(n%d\nH,(x&y)?4IOxOO5f);)A)127B)255C)128D)1[27]以下程序的輸出結(jié)果是ー〇main(){inta=l;charc=’";floatf=2.0;printf(M%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\n';a);)A)1B)2C)3D)4程序的輸出結(jié)果是ー〇main(){inta=lll;a=aAOO;printf(,,%d,%o\n",a,a);}A)111,157B)O,OC)20,24D)7,7[2.10I下面程序的輸出結(jié)果是ー。main(){chars[12]=nabook',;printf(n%.4s",s);)A)abook!B)abook!く四個(gè)空格》C)aboD)格式描述錯(cuò)誤,輸出不確定程序的輸出結(jié)果是ー〇main(){inta,b;scanf("%2d%3d”,&a,&b);printf(Ha=%db=%d\n*',a,b);)A)a=12b=34B)a=123b=45C)a=12b=345D)語句右錯(cuò)誤程序段的輸出結(jié)果是。inta=lO,b=5O,c=3O;if(a>b)a=b;b=c;c=a;printf(',a=%db=%dc=%d\n",a,b,c);A)a=10b=50c=10B)a=10b=30c=10C)a=50b=30c=10D)a=50b=30c=50程序的輸出結(jié)果是〇main(){inta=0,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

[2.14Iド面程序的輸出結(jié)果為。main(){inta=l,b=0;switch(a){case1:switch(b)break;break;break;{case0:printf(M**0**M);casel:printf(”*?break;break;break;case2:printf(M**2**M);}A)**0**B)**o****2**C)**0****1****2**D)有語法錯(cuò)誤程序的輸出結(jié)果是。main(){char*sゴ1213421ド;intv1=0,v2=0,v3=0,v4=0,k;for(k=0;s[k];k++)switch(s[k]){caseT:vl++;case3*:v3++;case2:v2++;default:v4++;)printf("vl=%d,v2=%d,v3=%d,v4=%d\nM,v1,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程序的輸出是。main(){intx=l,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;b++;break;)a++;b++;break;)printf(',a=%d,b=%d\n,\a,b);A)a=2,b=lB)a=l,b=lC)a=l,b=0D)a=2,b=2[2.17I下面程序的輸出是〇main(){intnum=0;while(num<=2){num++;printf(,,%d\n,,,num);))A)1B)1C)1D)1222334[2.18I下面程序的輸出結(jié)果是ー〇main(){inta=l,b=0;do{switch(a){case1:b=1;break;case2:b=2;break;default:b=0;)b=a+b;}while(!b);printf(Ma=%d,b=%dH,a,b);)A)1,2B)2,1C)1,1D)2,2[2.19]從鍵盤上輸入"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(M\nH);A)888988B)668966C)88898787D)66898787【2.20]下面程序的輸出結(jié)果是ーmain(){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é)果是ーmain(){intx,i;for(i=l;i<=100;i++){x=i;if(++x%2==0)if(++x%3==0)if(++x%7==0)printf(n%d”,x);)}A)3981B)4284C)2668D)2870程序的輸HI結(jié)果是#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(M%d\n'\k);)A)20B)21C)22D)23從鍵盤上輸入”3.624〈回車ヅ,下面程序的輸岀是#include<math.h>main(){floatx,y,z;scanf(M%f,%r,&x,&y);z=x/y;while(l){if(fabs(z)>1.0){x=y;y=z;z=x/y;)elsebreak;)printf(1,%f\n,',y);)A)1.500000B)1.600000C)2.000000D)2.400000[2.24I下面程序的輸出結(jié)果是ー〇main(){inti,j,x=O;for(i=0;i<2;i++){x++;for(j=0;j<-3;j++){if(j%2)continue;x++;)x++;)printf(Hx=%d\nn,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+lj+=n[ijljj;printf("%d\n",n[i][j]);)A)14B)0C)6D)不確定[2.27I下面程序的輸出結(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(ha[%d][%d]=%d\nt',ij,a[i][j]):A)6B)-3C)2D)不確定【2.28]下面程序的輸出結(jié)果是〇intm[3][3]={{1},{2},{3}}:intn[3][3]=(1,2,3);main(){printf("%d\n",m[l][0]+n[0][0]):/*①*/printf("%d\n",m[O][l]+n[l][O]);/*②*/}A)0B)1C)2D)3A)0B)1C)2D)3程序的輸出結(jié)果是ー〇#include<stdio.h>main(){charsi150]={"somestring*"},s2[]={"tesゼ};printf(H%s\nH,strcat(sl,s2));)A)somestring*B)testC)somestritestD)somestring*test程序的輸出結(jié)果是ー?#include<stdio.h>f(char*s){char*p=s;while(*p!二、〇')p++;retum(p-s);)main(){printf(M%d\n",f("ABCDEF"));)A)3B)6C)8D)0[2.31I下面程序的輸出結(jié)果是ー〇#include<stdio.h>#include<string.h>main(){charstr[100]="Howdoyoudo";strcpy(str+strlen(str)/2,"esshe");printf("%s\nn,str);}A)HowdoyoudoB)essheC)HowareyouD)Howdoesshe【2.32]下面程序的輸出結(jié)果是#include<stdio.h>func(intajntb){intc;c=a+b;retum(c);)main(){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é)果是,#include<stdio.h>voidfun(int*s){staticintj=0;do{sU]+=sU+l];}while(++j<2);)main(){intk,a[10]={l,2,345};for(k=l;k<3:k++)fun(a);for(k=0;k<5;k++)printf("%d';a[k]);)A)35756B)23445C)35745D)12345【2.34]下面程序的輸出結(jié)果是^ー〇#include<stdio.h>intk=l:main(){inti=4;fun(i);printf("\n%d,%d",i,k);/*①*/fun(intm){m+=k;k+=m;{chark='B':printf("\n%d",k-'A');/*②*/}printf("\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){intfl,f2;if(n==llln==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é)果是intw=3;main(){intw=10;printf(M%d\nH,fun(5)*w);}fun(intk){if(k==O)retum(w);retum(fun(k-l)*k);A)360B)3600C)1080D)1200程序的輸出結(jié)果是ー〇#include<stdio.h>funa(inta){intb=0;staticintc=3;a=c++,b++;retum(a);)main(){inta=2,i,k;for(i=0;i<2;i++)k=funa(a++);printf("%d\n”,k);)A)3B)0C)5D)4[2.38I下面程序的輸出結(jié)果是〇#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é)果是ー〇main(){inta=2j;for(i=0;i<3;i++)printf(',%4d';f(a));)f(inta){intb=0;staticintc=3;b++;C++;retui*n(a+b+c);)A)777B)71013C)7911D)789程序的輸出結(jié)果是ー#include<stdio.h>try(){staticintx=3;x++;retum(x);)main(){inti,x;for(i=0;i<=2;i++)x=try();printf("%d\n",x);)A)3B)4C)5D)6程序的輸出結(jié)果是__#include<stdio.h>main(){intx=l;voidfl(),f2();fi();f2(x);printf("%d\n",x);)voidfl(void){intx=3;printf("%dゝx);)voidf2(x)intx;{printfC%d”,++x);)A)111B)222C)333D)321[2,42]下面程序的輸出結(jié)果是#include<stdio.h>#defineSUB(X,Y)(X)*Ymain(){inta=3,b=4;printf(n%d\nn,SUB(a++,b++));A)12B)15C)16D)20【2.43]下面程序的輸出結(jié)果是ー。main(){inta[冋123,456}:int*p;p=a;printf(M%dゝ?p);printf(M%d**(++p));printf(u%d”,*++p);printf(M%d”,*(p-));p+=3;printf(M%d%d",*p,*(a+3));)A)123354B)123456C)122345D)123445程序的輸出結(jié)果是ー〇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("%d",*(a[l]+=2));/*③*/printf("%d",*(&a[0][0]+6));/*④*/}A)7777B)②句語法錯(cuò)誤C)③句語法錯(cuò)誤D)④句語法錯(cuò)誤程序的輸出結(jié)果是ー.#defineFMT"%X\n"#include<stdio.h>main(){staticinta[J[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)前面三個(gè)參考答案均是錯(cuò)誤的【2.46]下面程序的輸出結(jié)果是ー。#include<stdio.h>main(){inta[]={l,2,3,4,5};inix,y,*p;p=&a[O]:x=*(p+2);y=*(p+4);primf("%d,%d,%d\n”,*p,x,y);)A)1,3,5B)1,2,3C)1,2,4D)1,4,5[2,47]下面程序的輸出結(jié)果是ー。voidive(x,n)intx[],n;{intt,*p?p=x+n-1;while(x<p){*x++=*p;*p-=t;)return;)main(){inti,a[]={1,2,3,4,56,7,8,9,0};ive(a,10);for(i=0;i<10;i++)printf("%dn,a[i]);printf(M\nM);)A)1234567890B)0987654321C)1357924680D)0864297531【2.48]下面程序的輸出結(jié)果是^ー〇#include"string.h"fun(char*w,intn){chart,*sl,*s2;sl=w;s2=w+n-1;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é)果是ー〇#include<stdio.h>char*p=,,abcdefghijklmnopqn;main(){inti=0;while(*p++!='e,);printf("%c\n",*p):}A)cB)dC)eD)f[2.50I下面程序的輸出結(jié)果是ー。#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)前面三個(gè)參考答案均是錯(cuò)誤的【2.5]】下面程序的輸出結(jié)果是^ー。#include<stdio.h>main(){inta=l,l5Jp,**pp;pp=&p;p=&a;a++;printf(^'%d,%d,%d\n,1,a,*p,**pp);)A)2,1,1B)2,1,2C)2,2,2D)程序有錯(cuò)誤【2.52]下面程序的輸出結(jié)果是〇main(){char*alpha[7]={1,ABCD,V'EFGH,,,nIJKL,V,MNOP,,,"QRST,\,,UVWXn:,YZM);char**p;inti;p=alpha;for(i=0:i<4;i++)printf(M%cM,*(p[i]));printf('^\n^,);)A)AEIMB)BFJNC)ABCDD)DHLP【2.53]下面程序的輸出結(jié)果是ー。#include<stdio.h>char*pp[2][3]={MabcM,MdefghM,nmnopqr'\MstuvwH,MxyzM);main(){printf(M%c\nM,***(pp+l));/*①*/printf(n%c\nH,**pp[O]);/*②*/printf(M%c\nM,(*(*(pp+l)+l))[4]);/*③*/printf(M%c\nM,*(pp[1][2]+2));/*④*/printf(M%s\nM,**(pp+1));/*⑤*/}A)aB)dC)iD)mA)aB)dC)iD)mA)hB)1C)qD)w(4)A)kB)oC)uD)zA)ijklB)mnopqrC)stuvwD)xyz[2.54I下面程序的輸出結(jié)果是ー〇include“stdio.h"structstrl{charc[5];char*s;);main(){structstrlsl[2]={{UABCD,"'EFGH"),{“UK",“LMN”}};structstr2{structstrlsr;intd;}s2={"OPQ\"RST”,32767};structstrl*p[2];p[O]=&sl[O];p[l]=&sl[l];printf("%s",++p[l]->s);/*①*/printf("%c",s2.sr.c⑵);/*②*/)A)LMNB)MNC)ND)IJKA)OB)PC)QD)R程序的輸出結(jié)果是ー〇structst{intx,*y;ドP;ints[]={10,20,30,40);structsta[]={l,&s[0]t2,&s[1],3T&s[2],4,&s[3]};main(){P=a;printf(M%d\nH,++(*(++p)->y));}A)10B)11C)20D)21程序的輸出結(jié)果是.#include<stdio.h>main(){unionEXAMPLE{struct{intx,y;}in;inta,b;}e;e.a=1;e.b=2;e.in.x=e.a*e.b;e.in.y=e.a+e.b;printf("%d,%d\n"ein.x,e.in.y);)A)2,3B)4,4C)4,8D)8,8【2.57]下面程序的輸出結(jié)果是#include<stdio.h>main(){union{inti⑵;longk;charc[4];}r,*s=&r:s->i[0]=0x39;s->i[l]=Ox38;printf(H%c\nH,s->c[0]);)A)39B)9C)38D)8[2.58]下面程序的輸岀是。main(){printf("%d\n二EOF);}A)-lB)0C)1D)程序是錯(cuò)誤的【閱讀程序題參考答案】答案:D注釋:程序中除法運(yùn)算的兩個(gè)操作數(shù)均是整型,運(yùn)算結(jié)果也是整型。答案:B注釋:C語言允許在程序塊(分程序)中說明變量。答案:C注釋:變量i中的負(fù)號(hào)傳送給變量n后,因n是無符號(hào)數(shù),已不作為負(fù)號(hào)處理。答案:D注釋:對(duì)變量x的ーー操作是后綴形式,變量x的減1操作要在執(zhí)行完printf函數(shù)之后オ進(jìn)行,所以變量x的值在輸出的時(shí)候仍然保持原值!0o[25]參考答案:B注釋:C語言在執(zhí)行printf。時(shí),對(duì)函數(shù)中的表達(dá)式表列的處理順序是從后向前,即先處理n--,再處理n++,最后處理n,而且每ー個(gè)表達(dá)式作為ー個(gè)處理単元,也就是說在不同的表達(dá)式中自增自減運(yùn)算是單獨(dú)考慮的。答案:A注釋:變量x和變量y做按位與,結(jié)果為0x0200,右移4位為0x0020,再與OxOO5f做按位或,最后結(jié)果為0x007fo答案:A注釋:逗號(hào)表達(dá)式的結(jié)果是用逗號(hào)分開的最后ー個(gè)表達(dá)式的值,此題由于c=A的值是〇,所以逗號(hào)表達(dá)式的值為0。答案:B答案:A答案:C注釋:在輸出格式描述"%m.ns"中,m是輸出總長度,n是實(shí)際字符的個(gè)數(shù),這里m沒有給出,則輸出總長度就是實(shí)際輸出字符的個(gè)數(shù)。答案:C答案:B答案:C答案:B答案:D答案:A答案:C答案:A答案:C注釋:在switch語句中,case本身僅起到語句標(biāo)號(hào)的作用,不會(huì)改變語句的流程,執(zhí)行break語句オ能退出當(dāng)前的switch語句。[2.20I參考答案:D注釋:siwtch語句的表達(dá)式中,變量c是后綴的增ー運(yùn)算,第一次執(zhí)行do-while循環(huán)時(shí),執(zhí)行caseTV后面的語句。答案:D答案:B答案:B注釋:fabs()是浮點(diǎn)數(shù)絕對(duì)值函數(shù)。[2.24I參考答案:A答案:C注釋:C語言允許在程序塊(分程序)內(nèi)說明變量,如果在程序塊內(nèi)說明的變量和程序塊外的變量同名,在塊外說明的變量在塊內(nèi)是不可見的??蓪⒋祟}和[2.11]進(jìn)行比較,加深理解。[2.26I參考答案:C答案:B答案:①D②A答案:D答案:B注釋:輸出結(jié)果為字符串長度。答案:D注釋:字符串拷貝函數(shù)strcpy()要求的兩個(gè)參數(shù)都是字符串首地址。本題中第二個(gè)參數(shù)是字符串常量,接受這個(gè)字符串的第一個(gè)參量不是直接給出字符數(shù)組名,而是進(jìn)行了地址運(yùn)算后的結(jié)果。由于str字符串的長度是13,除2取整后是6,第一個(gè)參數(shù)給出的地址是字符數(shù)組str的首地址加6,也就是原來字符串中第二個(gè)空格的位置,把“esshe"從該處放入,字符串str變?yōu)?Howdoesshe"=[2.32]參考答案: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。答案:C答案:①C②A③C答案:C答案:B注釋:函數(shù)fun進(jìn)行了遞歸調(diào)用,實(shí)際進(jìn)行的運(yùn)算是5X4X3X2X1X3X10。主函數(shù)內(nèi)說明的局部變量w屏蔽了外部變量w,所以在主函數(shù)中外部變量w是不可見的,在調(diào)用printf函數(shù)時(shí)表達(dá)式"fun⑸*w"中w的值是10。【2.37]參考答案:D注釋:main函數(shù)三次調(diào)用了函數(shù)funa,在funa函數(shù)中的靜態(tài)變量c僅在第一次調(diào)用時(shí)進(jìn)行了初始化,再次調(diào)用時(shí)不再對(duì)靜態(tài)變量賦初值。[2.38]參考答案:B注釋:main函數(shù)和num函數(shù)中都說明了變量a和b,由于它們是內(nèi)部變量,所以它們分別在說明它們的函數(shù)內(nèi)有效。外部變量x和y在函數(shù)num之后被說明,而在num函數(shù)中又要引用它們,所以在num函數(shù)中用關(guān)鍵字"extern"說明變量x和y是ー個(gè)外部變量,也就是通知計(jì)算機(jī)這兩個(gè)變量在fun函數(shù)以外被說明,此處不是定義兩個(gè)int型變量。[2.39I參考答案: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.40I參考答案:D答案:D注釋:程序中有三個(gè)"X"分別在三個(gè)不同的函數(shù)中,這三個(gè)“X"都是自動(dòng)變量,所以三個(gè)"X”分別局部于三不同的函數(shù),在三個(gè)函數(shù)中對(duì)"X"的操作互不影響。答案:A答案:A注釋:*(++p)和?++p都是指針變量值前加1,第一次指向a[l],第二次指向a[2];a+3是a[引的地址。答案:C注釋:②句沒有語法錯(cuò)誤,但是a+6指向數(shù)組之外,因?yàn)閍是a[0]的地址,a+1是a[l]的地址,a+2是a[2]的地址,顯然數(shù)組a沒有a[6]分量。③句錯(cuò)誤,因?yàn)閍[l]是地址常量,它是a[l][0]的地址,對(duì)于地址常量是不可以進(jìn)行賦值運(yùn)算的。答案:①D②A注釋:如果FMT定義為"%x\n",則輸出的16進(jìn)制數(shù)據(jù)用小寫字母表示。答案:A注釋:語句"p=&a[0]"表示將數(shù)組a中元素a[0]的地址賦給指針變量p,則p就是指向數(shù)組首元素a[0]的指針變量,"&a[0]"是取數(shù)組首元素的地址。對(duì)于指向數(shù)組首址的指針,p+i(或a+i)是數(shù)組元素a國的地址,*(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+1)是第二維第一個(gè)元素的內(nèi)容,所以,①的參考答案應(yīng)選Do*(pp+l)+l是第二維第二個(gè)元素的地址,*(*(pp+l)+l)是第二維第二個(gè)元素,(*(*(pp+1)+1))(4]則是第二維第二個(gè)元素所指字符串下標(biāo)為4的元素,即是字符w,故③應(yīng)當(dāng)選D。[2.54I參考答案:①B②C答案:D[2.56I參考答案:C注釋:聯(lián)合體成員的取值是最后一次給成員賦的值。[2.57I參考答案:B注釋:整型數(shù)組i和字符數(shù)組c共用存儲(chǔ)空間,給i賦值也等于給c賦值,所以s->c[0]=0x39,所以輸出9〇[2.58I參考答案:A注釋:基本概念。EOF是由C語言在頭文件stdio.h中定義的,用戶可以直接使用。三、程序填空題

溫馨提示

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

評(píng)論

0/150

提交評(píng)論