吉林省專升本C語言(內(nèi)部資料)_第1頁
吉林省專升本C語言(內(nèi)部資料)_第2頁
吉林省專升本C語言(內(nèi)部資料)_第3頁
吉林省專升本C語言(內(nèi)部資料)_第4頁
吉林省專升本C語言(內(nèi)部資料)_第5頁
已閱讀5頁,還剩177頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第一章概述【本節(jié)例題選編】1、選擇題【例1.1]一個(gè)C語言程序是由 A.一個(gè)主程序和若干子程序組成B.若干函數(shù)組成C.若干過程組成 D.若干子程序組成【例1.2】C語言規(guī)定,在一個(gè)源程序中,main函數(shù)的位置 A.必須在最開始 B.必須在系統(tǒng)調(diào)用的庫函數(shù)的后面C.可以任意 D.必須在最后【例1.3]一個(gè)C程序的執(zhí)行是從A.本程序的main函數(shù)開始,到main函數(shù)結(jié)束B.本程序文件的第一個(gè)函數(shù)開始,到本程序文件的最后一個(gè)函數(shù)結(jié)束C.本程序的main函數(shù)開始,到本程序文件的最后一個(gè)函數(shù)結(jié)束D.本程序文件的第一個(gè)函數(shù)開始,到本程序main函數(shù)結(jié)束【例1.4]以下是C程序的基本結(jié)構(gòu)單位A.文件 B.語句C.函數(shù) D.表達(dá)式【例1.5]以下不是C語言的特點(diǎn)。A.運(yùn)算符豐富 B.數(shù)據(jù)結(jié)構(gòu)豐富C.可以直接訪問物理地址D.C函數(shù)包含的語句數(shù)目沒有限制【例1.6】下列關(guān)于C語言標(biāo)識(shí)符的敘述中正確的是.A.標(biāo)識(shí)符中可以出現(xiàn)下劃線和中劃線(減號(hào))B.標(biāo)識(shí)符中不可以出現(xiàn)中劃線,但可以出現(xiàn)下劃線C.標(biāo)識(shí)符中可以出現(xiàn)下劃線,但不可以放在標(biāo)識(shí)符的開頭D.標(biāo)識(shí)符中可以出現(xiàn)下劃線和數(shù)字,它們都可以放在標(biāo)識(shí)符的開頭【例1.7】以下幾組選項(xiàng)中,均為不合法標(biāo)識(shí)符的是A.A,P_0,do B.float,laO._AC.b-a,goto,int D._123.temp,INT【例1.8】以下敘述不正確的是o一個(gè)C源程序可由一個(gè)或多個(gè)函數(shù)組成一個(gè)C源程序必須包含一個(gè)main函數(shù)C程序的基本結(jié)構(gòu)單位是函數(shù)D.在C程序中,注釋說明只能位于一條語句的后面【例1.9]以下敘述正確的是。A.在C程序中,main函數(shù)必須位于程序的最前面C程序的每行中只能寫一條語句C語言本身沒有輸入輸出語句D.在對(duì)一個(gè)C程序進(jìn)行編譯的過程中,可發(fā)現(xiàn)注釋中的拼寫錯(cuò)誤2、填空題1例1.10]一個(gè)C源程序中至少應(yīng)包括一個(gè)?!纠?.11】C程序編譯后生成程序,連接后生成程序?!纠?.12]C語言規(guī)定,標(biāo)識(shí)符只能由 、、三種字符組成,而且,第一個(gè)字符必須是或?!纠?.13】程序的3種基本控制結(jié)構(gòu)是結(jié)構(gòu)、結(jié)構(gòu)和結(jié)構(gòu)。第二章數(shù)據(jù)類型及其運(yùn)算符【本節(jié)例題選編】1、選擇題【例2.1]若x、i、j和k都是int型變量,則計(jì)算下面表達(dá)式后,x的值為—x=(i=4,j=16,k=32)A.4B.16C.32D.52【例2.2]若有代數(shù)式—,則不正確的C語言表達(dá)式是beA.a/b/c*e*3B.3*a*e/b/cC.3*a*e/b*cD,a*e/c/b*3【例2.3]已知各變量的類型說明如下:intk,a,b;unsignedlongw=5;doublex=1.42;則以下不符合C語法的表達(dá)式是A.x%(-3)B.w+=-2C.k=(a=2tb=3,a+b)D.a+=a-=(b=4)*(a=3)【例2.4】以下選項(xiàng)中不屬于C語言的類型的是oA.signedshortint B.unsignedlongintC.unsignedint D.longshort【例2.5】下列定義中合法的是oA.shor_a=l-.le-1; B. doubleb=1+5e2.5;C.longdo=0xfdaL; D. float2_end=l-e-3;【例2.6】-8在內(nèi)存中的存儲(chǔ)形式是。A.1111111111111000 B.1000000000001000C.0000000000001000 D.1111111111110111【例2.7]數(shù)值029是一個(gè)oA.八進(jìn)制數(shù) B.十六進(jìn)制數(shù)C.十進(jìn)制數(shù) D.非法數(shù)【例2.8】在C語言中,要求運(yùn)算數(shù)必須是整型的運(yùn)算符是A./B.++C.!—D.%【例2.9】以下符合C語言語法的賦值表達(dá)式是。A.d=9+e+f=d+9 B.d=9+e,f=d+9C.d=9+e,e++,d+9 D.d=9+e++=d+7【例2.10】C語言中,關(guān)于自增自減運(yùn)算符使用正確的是。A.10++B.(x+y)-- C.d+++d+++d++D.++(a-b)【例2.11]設(shè)有intx=ll;則表達(dá)式(x++*l/3)的值是oA.3B.4C.11D.12【例2.12]已知:inti=6,j;則語句j=(++i)+(i++)后的j值是°A.4B.14C.13D.15【例2.13】設(shè)x、y、t均為ini型變量,則執(zhí)行語句:x=y=3;t=++xII++y后,y的值為—A.不定值B.4C.3D.1【例2.14】當(dāng)c的值不為0時(shí),以下能將c的值賦給變量a,b的是oA.c=b=a B.(a=c)II(b=c)C.(a=c)&&(b=c)D.a=c=b【例2.15】已有定義:intx=3,y=4,z=5,則表達(dá)式!(x+y)+z-l&&y+z/2的值是。A.6B,0C.2D,1【例2.16】下列運(yùn)算符中,哪個(gè)運(yùn)算符的優(yōu)先級(jí)最高。A.<=B.+C.IID.>=【例2.17]在C語言中,int、char和short三種類型數(shù)據(jù)所占用的內(nèi)存是?A.均為2個(gè)字節(jié) B.由用戶自己定義C.由所用機(jī)器的機(jī)器字長決定的 D.是任意的【例2.18]若有說明語句:charc='\72,則變量cA.包含1個(gè)字符 B.包含2個(gè)字符C.包含3個(gè)字符 D.說明不合法,c的值不確定【例2.19】若有定義:inta=7;floatx=2.5,y=4.7;則表達(dá)式x+a%3*(int)(x+y)%2/4的值是_A.2.500000B.2.750000C.3.500000D.0.000000【例2.20】設(shè)有說明:charw;intx;floaty;doublez;則表達(dá)式w*x+z-y值的數(shù)據(jù)類型為 A.floatB.charC.intD.double【例2.21】以下程序的執(zhí)行結(jié)果是。#include<stdio.h>main()(inti=2;printf("%d,%d\n”,++i,—i);)A.1.1B.2,1C.1,2D.2,2【例2.22】當(dāng)接受用戶輸入的含空格的字符串時(shí),應(yīng)使用的函數(shù)是。A.scanf() B.gets()C.getchar()D.getc()【例2.231下列敘述中正確的是C語言中既有邏輯類型也有集合類型C語言中沒有邏輯類型但有集合類型C語言中有邏輯類型但沒有集合類型C語言中既沒有邏輯類型也沒有集合類型【例2.24】以下錯(cuò)誤的敘述是A.在C程序中,逗號(hào)運(yùn)算符的優(yōu)先級(jí)最低B.在C程序中,APH和aph是兩個(gè)不同的變量C.若a和b類型相同,在計(jì)算了賦值表達(dá)式a=b后b中的值將放入a中,而b中的值不變D.當(dāng)從鍵盤輸入數(shù)據(jù)時(shí),對(duì)于整型變量只能輸入整型數(shù)值,對(duì)于實(shí)型變量只能輸入實(shí)型數(shù)值[例2.25]長整型long數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式是ASCH碼B.原碼C.反碼D.補(bǔ)碼【例2.26】字符型常量在內(nèi)存中存放的是A.ASCH碼B.BCD碼C.內(nèi)部碼D.十進(jìn)制碼【例2.27】字符串常量“\\\22a,0\n”的長度是A.8 B.7 C.6 D.5【例2.281設(shè)intx=Ly=l;表達(dá)式(ixlly—)的值是A.0 B.1 C.2 D.-1【例2.29】己知:intx;則使用逗號(hào)表達(dá)式(x=4*5,x*5),x+25的結(jié)果是,變量x的值為。A.20B.100C.45D.表達(dá)式不合法【例2.30]邏輯運(yùn)算符兩側(cè)運(yùn)算對(duì)象的數(shù)據(jù)類型 。A.只能是0或1 B.只能是0或非0正數(shù)C.可以是整型或字符型數(shù)據(jù)D.可以是任何類型的數(shù)據(jù)【例2.31]以下程序的執(zhí)行結(jié)果是。#include<stdio.h>main(){printf("%f\iT25+1*7%2/4);)A.2.500000B.2.750000C.3.375000D,3.000000【例2.32]若給定條件表達(dá)式(M)?(a++):(a--),則其中表達(dá)式(M)A.和(M==0)等價(jià)B.和(M==I)等價(jià)C.和(M!=0)等價(jià)D.和(M!=1)等價(jià)【例2.33】有以下程序:#include<stdio.h>main(){unsignedchara,b,c;a=0x3;b=aI0x8;c=b?l;printf("%d%d\n”,b,c);)程序運(yùn)行后的輸出結(jié)果是。A.-1112B.-6-13C.1224D.11222、填空題【例2.34】若有以下定義,則計(jì)算表達(dá)式y(tǒng)+=y-=m*=y后的y值是。intm=5,y=2;【例2.35]已知intx=6;貝lj執(zhí)行x+=x-=x*x語句后,x的值是?!纠?.36]若w=l,x=2,y=3,z=4,則條件表達(dá)式w>x?w:y<z?y:z的結(jié)果是.【例2.37]在C語言中,一個(gè)int型數(shù)據(jù)在內(nèi)存中占2個(gè)字節(jié),則int型數(shù)據(jù)的取值范圍為?!纠?.38】要將一個(gè)16位二進(jìn)制的整型變量的高8位清零,只保其留低8位,可用的方法是?!纠?.39】若x和n均是int型變量,且x和n的初值均為5,則計(jì)算表達(dá)式后x的值為,n的值為。x+=n++【例2,40]已知字母a的ASCII碼為十進(jìn)制數(shù)97,且設(shè)ch為字符型變量,則表達(dá)式ch='a'+8-3的值為?!纠?.41】假設(shè)m是一個(gè)三位數(shù),從左到右用a,b,c表示各位的數(shù)字,則從左到右各個(gè)數(shù)字是bac的三位數(shù)的表達(dá)式是o【例2.42】設(shè)y為im型變量,描述“y是奇數(shù)”的表達(dá)式是?!纠?.43】在scanf()函數(shù)中格式符x用于輸入?【例2.44]若有定義:inta=2,b=3;floatx=3.5,y=2.5;則卜面表達(dá)式的值為(float)(a+b)/2+(int)x%(int)y【例2.45】若有定義:intb=7;floata=2.5,c=4,7;則下面表達(dá)式的值為。a+(int)(b/3*(int)(a+c)/2)%4【例2.46]若有以下程序:執(zhí)行后的輸出結(jié)果是。#include<stdio.h>main(){intk=2j=2,m;m=(k4-=i*=k);printf(4t%d,%d\n,\m,i);}【例2.47】有以下程序,輸入123456789,其輸出結(jié)果是。#include<stdio.h>main(){inta,b;floatf;scanf(tt%2d%*2d%2d%f\&a,&b,&0;printf(“%d,%d,%f\n”,a,b,f);}【例2.48】以下程序的執(zhí)行結(jié)果是。#include<stdio.h>main(){inta,b,c;a=b=1;c=a++-l;printf(it%d,%d/\a,c);c+=-a+++(++bII++c);printf("%d,%d\n,,,a,c);)【例2.49】以下程序的執(zhí)行結(jié)果是o#include<stdio.h>main(){inti=10;)【例2.50】以下程序的執(zhí)行結(jié)果是。#include<stdio.h>main()inta=-32768,b;b=a-l;printf("a=%d,b=%cT,a,b);)【例2.51】以下程序的執(zhí)行結(jié)果是。#include<stdio.h>main(){intx=042,y=067,z;z=(x?2)&(y?3);printf(u%d\n,,,z);)【例2.52】以下程序的執(zhí)行結(jié)果是。#include<stdio.h>main()(intn=O23;printf(t4%d\nM,-n);}【例2.53】以下程序的執(zhí)行結(jié)果是—#include<stdio.h>main()(intx=10,y=9;inta,b,c;a=(—x==y++)?—x:++y;b=x++;c=y;printf("%d,%d,%d\n'',a,b,c);第三章選擇語句和循環(huán)語句【本節(jié)例題選編】1、選擇題【例3.1]以下語句錯(cuò)誤的是A,if(x>y); B.if(x=y)&&(x!=O)x+=y;C.if(x!=y)scanf("%d”,&x);eslescanf("%d”,&y);D.if(x<y){x++;y++;}【例3.2】C語言的if語句中,用作判斷的條件表達(dá)式為A.任意表達(dá)式B.邏輯表達(dá)式 C.關(guān)系表達(dá)式 D.算術(shù)表達(dá)式【例3.3]為了避免在嵌套的條件語句ifelse中產(chǎn)生二義性,C語言規(guī)定:else子句總是與—配對(duì)。A.縮排位置相同的ifB.同一行上的ifC.其之后最近的ifD.其之前最近的if【例3.4】以下程序的輸出結(jié)果是#include<stdio.h>main()(inti=l,j=l,k=2;if((j++IIk++)&&i++)printf(u%d,%d,%d\n,,,i,j,k);)A.1,1,2 B.2,2,1C.2,2,2 D.2,2,3【例3,5]已知intx=10,y=20,z=30;以下語句執(zhí)行后x,y,z的值是。if(x>y)z=x;x=y;y=z;A.x=10,y=20,z=30 B.x=2O,y=3O,z=3OC.x=20,y=30,z=10 D.x=2O,y=3O,z=2O【例3.6】以下程序的運(yùn)行結(jié)果是omain(){intm=5;if(m++>5)printf(u%d\nv,m);elseprintf(u%d\nM,m-);)A.4 B.5C.6D.7【例3.7】以下程序的輸出結(jié)果是。main()(inta=100,x=10,y=20,okl=5?ok2=0;if(x<y)if(y!=10)if(!okl)a=l;else

if(ok2)a=10;if(ok2)a=10;a=-l;printfCt%d\n,,,a);)A.1B.0C.-1 D.值不確定【例3.8]若a,b均是整型變量,正確的switch語句是A.switch(a) B.switch(a)caseLO:printf("i\n'');case2:printf("you\rT);)caseLO:printf("i\n'');case2:printf("you\rT);)case b:printf(44i\nM);case 1:printf("you'n");C.switch(a+b)D.switch(a+b)C.switch(a+b)D.switch(a+b)case1:case1:printf(“i\n”);case2*a:printf(44you\nM);primf("i\n”);printf("you\n'');【例3.9】對(duì)for(表達(dá)式1;;表達(dá)式3),可理解為A.for(表達(dá)式1;0;表達(dá)式3) B.for(表達(dá)式1;表達(dá)式3;表達(dá)式3)C.for(表達(dá)式1;1;表達(dá)式3) D.for(表達(dá)式1;表達(dá)式1:表達(dá)式3)【例3.10】執(zhí)行以下程序段后,變量a,b,c的值分別是intx=10,y=9;inta,b,c;a=(—x==y++)?—x:++y;b=x++;c=y;A.a=9,b=9,c=9 B.a=8,b=8,c=10C.a=9,b=10,c=9 D.a=l,b=ll,c=10【例3.11】有以下程序段:intn=0,p;do{scnaf("%d",&p);n++;)while(p!=12345&&n<3);此處do-while循環(huán)的結(jié)束條件是。A.p的值不等于12345并且n的值小于3B.的值等于12345并且n的值大于等于3C.p的值不等于12345或者n的值小于3D.p的值等于12345或者n的值大于等于3【例3.12】下面程序中循環(huán)體的執(zhí)行次數(shù)是。a=10;b=0;do{b+=2;a-=2+b;)while(a>=0);A.1B.2 C.3D.4【例3.13】以下程序段ox=-l;do{x=x*x;}while(!x);A.是死循環(huán) B.循環(huán)執(zhí)行二次C.循環(huán)執(zhí)行一次 D.有語法錯(cuò)誤【例3.14】以下程序的執(zhí)行結(jié)果是#include<stdio.h>main()(inta=0,i;for(i=l;i<5;i++){switch(i)(case0:case3:a+=2;case1:case2:a+=3;default:a+=5;))printf("%d\n",a);}A.31B.13C.10D.20【例3.15】下面程序的運(yùn)行結(jié)果是#include<stdio.h>main(){inty=10;do{y—;}while(—y);printf("%d\n”,y--);}A.-1B.1C.8D.0【例3.16】下面程序的功能是輸出以下金字塔圖案的是:#include<stdio.h>main(){inti,j;for(i=1;i<=4;i++)for(j=l;j<=4-i;j++)printf(i4");

for(j=l;j<=;j++)printf—");printf(An");)}在下劃線處應(yīng)填入的是A.iB.2*i-lC.2*i+lD.i+2【例3.17】下面程序段ofor(t=1;t<=1OO;t++){scanfC'%d",&x);if(x<0)continue;printf(“%3d”,t);)A.當(dāng)x<0時(shí)整個(gè)循環(huán)結(jié)束 B.x>=0時(shí)什么也不做C.printf函數(shù)永遠(yuǎn)也不執(zhí)行D.最多允許輸出100個(gè)非負(fù)整數(shù)【例3.18]若w,x,y,z,m均為int型變量,則執(zhí)行以下語句后的m值是,w=l;x=2;y=3;z=4;m=(w<x)?w:x;m=(m<y)?m:y;D.4B.D.4B.可以通過編譯但不能通過連接D.輸出$$$A.1B.2C.3【例3.19】請(qǐng)讀以下程序:main()(inta=5,b=0,c=0;if(a=b+c)elseprintf("$$$\n“);)以上程序。A.有語法錯(cuò)誤不能通過編譯C.輸出***【例3.201下面程序段不是死循環(huán)的是A.inti=100;while(l){i=i%100+l;if(i>100)break;}for(;;);intk=0;do{++k;}while(k<=0);ints=36;While(s);-s;【例3.21】有一堆零件(100到200之間),如果分成4個(gè)零件一組的若干組,則多2個(gè)零件,若分成7個(gè)零件一組,則多3個(gè),若分成9個(gè)零件一組,則多5個(gè)零件,下面程序是求這堆零件總數(shù),請(qǐng)選擇填空。#include<stdio.h>main(){inti;for(i=100;i<200;i++)if((i-2)%4==0)if(!((i-3)%7))if()piimf("%d”,i);)A.i%9=5 B.i%9!=5C.(i-5)%9!=0 D.i%9==5【例3.22】下面程序的運(yùn)行結(jié)果是o#include<stdio.h>main(){inti;for(i=l;i<=5;i++)(if(i%2)printfC*");elsecontinue;printf('#');}printf("$\n");}A.*#*#*#$ B.#*#*#*$C.*#*#$ D.#*#*$【例3.23】下面程序的運(yùn)行結(jié)果是o#include<stdio.h>main()(inti,j,x=O;for(i=0;i<2;i++)x++;for(j=0;j<=3;j++)if(j%2)continue;x++;}X++;}printfCtx=%d\n,,,x);)A.x=4 B.x=8C.x=6D.x=122、填空題【例3.241C語言中,break語句只能用于語句和語句中?!纠?.25]當(dāng)a=3,b=2,c=I時(shí),表達(dá)式f=a>b>c的值是?!纠?.26]若a=6,b=4,c=2,則表達(dá)式!(a?b)+c-l&&b+c/2的值是0【例3.27】下列程序計(jì)算2?100的偶數(shù)的累加和,請(qǐng)?zhí)羁铡?include<stdio.h>main()(inti,sum=0;for()sum+=i;printf("sum=%d\n",sum);)【例3.28】以下程序的輸出結(jié)果是#include<stdio.h>main(){intx=15;while(x>10&&x<50)(X++;if(x/3){x-H-;break;}elsecontinue;)printf(tt%d\n,,,x);)【例3.29】下面程序段是找出整數(shù)的所有因子,請(qǐng)?zhí)羁?。scanf("%d”,&x);i=l;for(;;)(if(x%i==0)printf("%3d'',i);i++;)【例3.30】下面程序段是從鍵盤輸入的字符中統(tǒng)計(jì)數(shù)字字符的個(gè)數(shù),用換行符結(jié)束循環(huán)。請(qǐng)?zhí)羁铡ntn=0,c;c=getchar();while(c!=,\n,){if()n++;c=getchar();)【例3.31】等差數(shù)列的第一項(xiàng)a=2,公差d=3,下面程序的功能是在前n項(xiàng)和中,輸出能被4整除的所有的和。請(qǐng)?zhí)羁铡?include<stdio.h>main()(inta,d,sum;a=2;d=3;sum=O;do{sum+=a;a+=d;if()printf("%d\n”,sum);}while(sum<200);)【例3.32】請(qǐng)讀程序:#include<stdio.h>main()(intx=l,y=O,a=O,b=O;switch(x)(switch(y)(case0:a++;break;casel:b++;break;)a++;b++;break;)printf("a=%d,b=%d”,a,b);)上面程序的運(yùn)行結(jié)果是。【例3.33】以下程序?qū)斎氲囊粋€(gè)小寫字母,將字母循環(huán)后移5個(gè)位置后輸出,如‘a(chǎn)'變成‘f','w'變成'b'。請(qǐng)?zhí)羁铡?include<stdio.h>main()(charc;c=getchar();if(c>=,a,&&c<=,u,)elseif(c>=,v,&&c<=,z,)putchar(c);}【例3.34]下面程序的功能是求出用數(shù)字0至9可以組成多少個(gè)沒有重復(fù)的三位偶數(shù)。請(qǐng)?zhí)羁铡?include<stdio.h>main()(intnjj,k;n=O;for(i=l;i<=9;i++)for(k=O;k<=8;)if(k!=i)for(j=0;j<=9;j+4-)if( )n++;printf(un=%d\n,\n);}【例3.35】下面程序的功能是輸出1至100之間每位的乘積大于每位數(shù)的和的數(shù)。請(qǐng)?zhí)羁铡?include<stdio.h>main(){intn,k=l,s=O,m;for(n=l;n<=l(X);n++)(k=l;s=0;while()(k*=m%10;s+=m%10;)if(k>s)printf(“%d”,n);【例3.36】下面程序的功能是求1000以內(nèi)的所有完全數(shù)。請(qǐng)?zhí)羁铡?說明:一個(gè)數(shù)如果恰好等于它的因子之和(除自身外),則稱該數(shù)為完全數(shù),例如:6=1+2+3,6為完全數(shù))#include<stdio.h>main()(intfor(a=l;a<=1000;a++)(fbr(;i<=a/2;i++)if(!(a%i))if(m==a)printfCt%4d,\a);})【例3.37】下面程序的運(yùn)行結(jié)果是#include<stdio.h>main(){inti=l;while(i<=15)if(++i%3!=2)continue;elseprintf("%d”,i);printfC^);)【例3.38】下面程序的運(yùn)行結(jié)果是.#include<stdio.h>main(){inti,j,k=19;while(i=k-l)(k-=3;if(k%5=0)i++;continue;elseif(k<5)break;i++;)printf(€ti=%d,k=%d\n,\i?k);}【例3.39】下面程序的運(yùn)行結(jié)果是。#include<stdio.h>main()(inty,a;y=2;a=l;while(y-!=-1)(do{a*=y;a++;}while(y-);)printfC'%d,%d,\a,y);}【例3.40】以下程序的功能是根據(jù)公式e=l+L+,+L+…求e的近似值,精度要求為10:1!2!3!請(qǐng)?zhí)羁铡?include<stdio.h>main()(inti;doublee,new;new=1.0;for(i=1;;i++)(new/=(double)i;e+=new;)printf(ue=%f\n*\e);}【例3.41】下面程序的功能是打印100以內(nèi)個(gè)位數(shù)為6且能被3整除的所有數(shù)。請(qǐng)?zhí)羁铡?include<stdio.h>main()inti,j;for(i=0;;i++)(j=i*10+6;if( )continue;printf("%cT,j);)}【例3.42】下面程序的功能是計(jì)算100至U1000之間有多少個(gè)數(shù)其各位數(shù)字之和是5.請(qǐng)?zhí)羁铡?include<stdio.h>main()(inti,s,k,count=0;for(i=100;i<=1000;i++)(s=0;k=i;while()(s+=k%10;k=;)if(s!=5)elsecount++;}printf("%d'’,count);)【例3.43】下面程序的運(yùn)行結(jié)果是一#include<stdio.h>main()(inti=5;do{switch(i%2){case4:i-break;case6:i--;continue;)-;i--;printf("%d”,i);}while(i>0);

第四章數(shù)組【本節(jié)例題選編】1、選擇題【例4.1】以下有關(guān)C語言中數(shù)組的說法正確的是數(shù)組元素的數(shù)據(jù)類型可以不一致數(shù)組元素的個(gè)數(shù)可以不確定,允許隨機(jī)變動(dòng)可以使用動(dòng)態(tài)內(nèi)存分配技術(shù),定義元素個(gè)數(shù)可變的數(shù)組D.定義一個(gè)數(shù)組后,就確定了它所容納的具有相同數(shù)據(jù)類型元素的個(gè)數(shù)【例4.2]若有說明:inta[][3]={0,0};則下列所述正確的是數(shù)組a的每個(gè)元素都可得到初值0;二維數(shù)組a的第一維的大小為4:數(shù)組a的行數(shù)為2;D.只有元素a[0K。]和a[0Hl]可得到初值。,其余元素均得不到初值【例4.3】以下對(duì)?維數(shù)組a的正確說明是.A.inta(10);C.intn;B.A.inta(10);C.intn;#defineSIZE10scanf("%d”,&n); inta[SIZE];inta[n];【例4.4]若有說明:ima[3][4];則對(duì)a數(shù)組元素的正確引用是A.a[2][4] B.a[l,3]C.a[l+l][0]D.a(2)(l)【例4.5】以下錯(cuò)誤的語句是staticcharword[]={staticcharword[]={"China"};staticcharword[]=''China”;staticcharword|]=,China,;【例4.6]下面程序(每行程序前面的數(shù)字表示行號(hào))main(){floata[10]={0.0};inti;for(i=0;i<3;i++)scanf(tt%d,\&a[i]);for(i=l;i<10;i++) a[0]=a[0]4-a[i];printf("%nn”a。]);)A.沒有錯(cuò)誤 B.第3行有錯(cuò)誤C.第5行有錯(cuò)誤 D.第7行有錯(cuò)誤【例4.7]下面程序的運(yùn)行結(jié)果是omain()(inta[6],i;for(i=l;i<6;i++)a[i]=9*(i-2+4*(i>3))%5;)A.-4 0 4 0 4 B.-4 0 4 0 3C.-4 0 4 4 3 D.-4 0 4 4 0【例4.8]以下對(duì)C語言字符數(shù)組的描述錯(cuò)誤的是字符數(shù)組可以存放字符串字符數(shù)組中的字符串可以進(jìn)行整體輸入輸出可以在賦值語句中通過輸值運(yùn)算符“=”對(duì)字符數(shù)組整體賦值字符數(shù)組的下標(biāo)從。開始【例4.9】有下面的程序段chara[3],b[]=''China”;a=b;printf("%s”,a);則.A.運(yùn)行后將輸出China B.運(yùn)行后將輸出ChC.運(yùn)行后將輸出Chi D.編譯出錯(cuò)【例4.10】判斷字符串si是否大于字符串s2,應(yīng)當(dāng)使用。A.if(sl>s2) B.if(strcmp(sl,s2))C.if(strcmp(s2,sl)>0) D.if(strcmp(sl,s2)>0)【例4.11]已知:charcl[]={"abed”};charc2[]=ra','b:c','d'};則下所述正確的是數(shù)組cl和數(shù)組c2等價(jià)數(shù)組cl和數(shù)組c2的長度相同數(shù)組cl的長度大于數(shù)組c2的長度以上都不對(duì)【例4.12】下面程序的運(yùn)行結(jié)果是.#include<stdio.h>main(){charstr[]=,,SSSWLIA,\c;intk;for(k=2;(c=str[k])!=*\0,;k++)(switch(c){caseT:++k;break;case'L':continue;default:putchar(c);continue;)putcharC*');}}A.SSW*B.SW*C.SW*AD.SW【例4.13】已知:charstringl[10]="abcde”,string2[10]="xyz";則下列C語句輸出結(jié)果是_printf("%d”,strlen(strcpy(stringl,string2)));A.3 B.5C8 D.9【例4.14】有以下程序:#include<stdio.h>#include<string.h>main()(chars[]=Anl23\\";printf(st%d,%d\n”,strlen(s),sizeof(s));)執(zhí)行后的輸出結(jié)果是A,賦初值的安符串有錯(cuò) B.6,7C.5,6 D.6,6【例4.15】下面程序的功能是將字符串s中所有的字符c刪除。請(qǐng)選擇填空。#include<stdio.h>main()(chars[80];inti,j;gets(s);for(i=j=0;s[i]!=,\0,;i++)if(s[i]!=,c,)SUH'。';puts(s);}A.s[j++]=s[i] B.s[+4j]=s[i]C.s[j]=s[i];j++D.s[j]=s[i]【例4.16】以下程序的輸出結(jié)果是—#include<stdio.h>main()(intb[3][3]={0,l,2,0,ls2,0J,2},i,j,t=0;for(i=0;i<3;i++)for(j=l;j<=i;j4-+-)

t=t+b[i][b[j][j]];printf("%d\n'',t);)A.3 B.4C.1 D.9【例4.17】有如下程序:#include<stdio.h>main()staticinta[3][3]={{l,2},{3,4},{5,6}},i,j,s=0;for(i=0;i<3;i++)for(j=O;j<=i;j++)s+=a[i][j];printf(£t%d\n,\s);)該程序的輸出結(jié)果是A.18 B.19C.20 D.21【例4.181有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case1:printf(n%d';i);case2:printf("%d';i);default:printf("%d'\i);})執(zhí)行后輸出結(jié)果是oA)011122 B)012 0012020 D)1202、填空題【例4.19]若有定義:staticinta[3][4]={{1,2},{0},{4,6,8,10}};則初始化后,a[l][2]=a[2][l]=?!纠?.201在C語言中,二維數(shù)組元素在內(nèi)存中的存放順序是?!纠?.21]若二維數(shù)組a有m列,則在a[i][j]前的元素個(gè)數(shù)為。【例4.22】判斷字符串a(chǎn)和b是否相等,應(yīng)當(dāng)使用。【例4.23】以下程序可求出矩陣a的兩條對(duì)角線上的元素之和,請(qǐng)?zhí)羁铡?include<stdio.h>main()(inta[3][3]={1,3,6,7,911,14,15,17),sum1=0,sum2=0,i,j;for(i=0;i<3;i++)for(j=0;j<3;j++)if(i==j)suml=suml+a[i][j];for(i=0;i<3;i++)for(;;j-)if((i+j)==2)sum2=sum2+a[i][j];printf(t4suml=%d,sum=%d\n,,,suml,sum2);【例4.24】麒組a包括10個(gè)整型元素,下面程序的功能是求出a中各相鄰兩個(gè)元素的和,并將這些和存在數(shù)組b中,按每行3個(gè)元素的形式輸出。請(qǐng)?zhí)羁?。main()(inta[10],b[10],i;for(i=0;i<10;i++)scanf("%d”,&a[i]);for(;i<10;i++)for(i=l;i<10;i++)(printf("%3d”,b「]);if(==0)printf(“\n”);【例4.25】下面程序中的數(shù)組a包括10個(gè)整數(shù)元素,從a中第二個(gè)元素起,分別將后項(xiàng)減前項(xiàng)之差存入數(shù)組b,并按每行3個(gè)元素輸出數(shù)組b,請(qǐng)?zhí)羁?。main()(inta[10],b[10],i;for(i=0;;i++)scanf("%d”,&a[i]);for(i=1;;i++)b[i]=a[i]-a[i-l];for(i=l;i<10;i-H-){printf("%3d'',b[i]);if()printf("\n”);【例4.26】以下程序可求出所有的水仙花數(shù),(提示:所謂水仙花數(shù)是指一個(gè)三位正整數(shù),其各位數(shù)字的立方之和等于該正整數(shù)。例如:407=4*4*4+0*0*0+7*7*7,故407是一個(gè)水仙花數(shù))請(qǐng)?zhí)羁?。main()(intx,y,z,a[8],m,i=0;printfCThespecialnumbersare(inthearrangeof1000:\n)M);for(;m++){x=m/100;y=;z=m%10;if(x*100+y*10+z=x*x*x+y*y*y+z*z*z)i++;})for(x=0;x<i;x++)printf("%6d'',a[x]);I【例4.27】下面程序的功能是生成并打印某數(shù)列的前20項(xiàng),該數(shù)列第1,2項(xiàng)分別為0和1,以后每個(gè)奇數(shù)編號(hào)的項(xiàng)是前兩項(xiàng)之和,偶數(shù)編號(hào)的項(xiàng)是前兩項(xiàng)差的絕對(duì)值。生成的20個(gè)數(shù)存在維數(shù)組x中,并按每行4項(xiàng)的形式輸出,請(qǐng)?zhí)羁?。main()(intx[21],i,j;x[l]=0;x⑵=1;i=3;do{x[i]=?x[i+l]=;}while(i<=20);for(i=l;i<=20;i++){printf("%5d5x[i]);if(i%4==0)printf(4W);【例4.28】下.面程序的功能是輸入5個(gè)整數(shù),找出最大數(shù)和最小數(shù)所在的位置,并把二者對(duì)調(diào),然后輸出調(diào)整后的5個(gè)數(shù)。請(qǐng)?zhí)羁铡ain()(inta[5],max,min,i,j,k;for(i=0;i<5;i++)scanf("%d”,&a「]);min=a[0];for(i=l;iv5;i++)if(a[i]<min)(min=a[i];max=a[0];for(i=l;i<5;i+4-)if(a[i]>nax)(max=a[i];printfC'XnThepositionofminis:%3d\nM,k);printf(t4\nThepositionofmaxis%3d\n,\j);for(i=0;i<5;i++)printf("%5d”,a[i]);}【例4.29】下面程序的運(yùn)行結(jié)果是main()(inti,f[10];f[O]=f[l]=l;for(i=2;i<10;i++)f[i]=f[i-2]+Hi.l];for(i=0;i<10;i++){if(i%4==0)printfC4%3d,\f[i]);})【例4.30】設(shè)數(shù)組a中的元素均為整數(shù),以下程序是求a中偶數(shù)的個(gè)數(shù)和偶數(shù)的平均值。請(qǐng)?zhí)羁铡ain()(inta[10]={1,2,3,4,5,6,7,8,9,10};intk,s,i;floatave;for(k=s=i=0;i<IO;i++)(if(a[i]%2!=0)s+=;k++;)if(k!=O)(ave=s/k;printf("%d,%f\n'',k,ave);})【例4.31】當(dāng)從鍵盤輸入18并回車后,下面程序的運(yùn)行結(jié)果是。main()(intx,y,i,a[8],j,u,v;scanf("%d",&x);y=x;i=0;do{u=y/2;a[i]=y%2;i++;y=u;}while(y>=l);for(j=i-l;j>=0;j-)printf("%d”,a|j]);)【例4.32]下面程序的功能是檢查一個(gè)二維數(shù)組是否對(duì)稱(即:對(duì)所有i和j都有a[i][j]=a[j][i]).請(qǐng)?zhí)羁?。main()(inta[4][4]={1,2,342,2,5,6,3,5,3,7,4,674};intij,found=0;for(j=0;j<4;j++)fbr(;i<4;i++)if(a[j][i]!=a[i]O])break;)if(found)printf(“NCT);elseprintf("YES”);}【例4.33】以下程序是求矩陣a,b的乘積,結(jié)果存入矩陣c中并按矩陣形式輸出。請(qǐng)?zhí)羁?。main()(inta[3][2]={2,-1,-4,0,3,1);intb⑵⑵={7,-9,-8,10};intij,k,s,c[3][2];for(i=0;i<3;i++)for(j=0;j<2;j++)for(;k<2;k++)s+=;c[i][j]=s;)for(i=0;i<3;i++)(for(j=0;j<2;j++)printf("%6d”,c[i皿);【例4.34】下面程序的功能是求出矩陣x的上三角元素之積,其中矩陣x的行、列數(shù)和元素值均由鍵盤輸入,請(qǐng)?zhí)羁铡?defineM10main()(intx[M][M];intn,i,j;longs=l;printf(i4Enterainteger(<=10):\nM);scanf("%d”,&n);printf(ktEnter%ddataoneachlineforthearrayx\n,\n);for()for(j=0;j<n;j++)scanf("%d'',&x[i][jD;for(i=0;i<n;i++)M)printf(,,%ld\n,,,s);}【例4.35】下面程序的運(yùn)行結(jié)果是o#include<stdio.h>main()(chara[2][6]={,,SunVMoon,,J;intij,len[2];for(i=0;i<2;i++)(for(j=0;j<6;j-H-)if(a[i][j]=='\O')(len[i]=j;break;printf(M%6s:%d\n”,a[i],len[i]);))【例4.36】下面程序的運(yùn)行結(jié)果是o#include<stdio.h>main()(inti=5;charc[6]=?abcd,,jdo{c[i]=c[i-l];}while(—i>0);puts(c);)【例4.37】下面程序的運(yùn)行結(jié)果是0#include<stdio.h>#defineLEN4main()(intj,c;staticcharn[2][LEN+l]={"8980”「9198”};for(j=LEN-l;j>=0;j—)(c=n[0][j]+n[l][j]-2*'05;n[0][j]=c%10+,0,;)for(j=0;j<=l;j++)puts(n[j]);}【例4.38】下面程序的功能是將字符串a(chǎn)中下標(biāo)值為偶數(shù)的元素由小到大排序,其它元素不變。請(qǐng)?zhí)羁铡?include<stdio.h>main()(chara[]=,,labchmfye,,,t;inti,j;for(i=();i<7;i4-=2)for(j=i+2;j<9;)if(){t=a[i];a[i]=a[j];a[j]=t;}puts(a);【例4.39】有十個(gè)字符串,下面程序的功能是在每個(gè)字符串中,找出最大字符按一一對(duì)應(yīng)的順序存入一維數(shù)組a中,即第i個(gè)字符串中的最大字符放入a[i]中,輸出每個(gè)字符串中的最大字符。請(qǐng)?zhí)羁铡?include<stdio.h>main(){chars[10||20|;inta[10],i,j;for(i=0;i<10;i++)gets(s[i]);for(i=0;i<10;i++)}for(i=0;i<10;i++)printf("%d%c”,i,a[i]);)【例4.40]若從鍵盤輸入52,則下面程序的運(yùn)行結(jié)果是main()(inta[8]={6,12,18,42,44,52,67,94);intlow=0,high=7,mid,found=0,x;scnaf("%d",&x);while((low<=bigh)&&(found=0))(mid=(low+high)/2;if(x>a[mid])low=mid+l;elseif(x<a[mid|)high=mid-l;else(found=l;break;)}if(found=l)printf("Searchsuccessful!Theindexis%d:\nM,mid);elseprintf("Can'tsearch!\n>,);)【例4.41】下面程序的運(yùn)行結(jié)果是。#include<stdio.h>main(){charc,s[]=,,ABCCDA>>;intk;for(k=l;(c=s[k])!=,\0,;k++)(switch(c)(case'A':putchar('%');continue;case'B':++k;break;default:putchait***);case'C':putchar('&');continue;)putchar('#');))【例4.42]下面程序的運(yùn)行結(jié)果是o#include<stdio.h>main()(inti=0;chara[]="abm'',b[]="aqid'',c[10];while(a[i]!=,\0,&&b[i]!=>\0,)(if(a[i]>=b[i])c[i]=a[i]-32;elsec[i]=b[i]-32;++i;)c[i]='\0';puts(c);)【例4.43】程序填空,以下程序用于統(tǒng)計(jì)字符串中最長單詞的長度及其在字符串中的位置,其中單詞全由字母組成。#include<stdio.h>intalph(charc)(if((c>='a'&&c<='z')II(c>='A'&&c<='Z'))elsemain()staticcharstring[]={4iamhappy."};intlen=O,i,length=O,flag=l,p,p1;for(i=0;;i++)if(alph(string[i]))if(flag)(pl=i;; /*將取位置標(biāo)記flag置為0*/len++;)else; /*單詞長度增1*/else(flag=l;if(len>length)/*將最大單詞長度放入length*/{length=len;p=pl;)Len=0;}printf("最長的單詞:”);for(i=p;i<p+length;i++)printf(44%cM,string[i]);printiV'n");}【例4.44】有以下程序,執(zhí)行后輸出結(jié)果是o#include<stdio.h>main(){inta[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0});inti,j,s=0;for(i=0;i<4;i++)(for(j=0;j<4;j++){if(a[i][j]<0)continue;if(a[i]U>=0)break;s+=a[i皿;})printf("%d\n”,s);)【例4.45】下面程序?qū)⒍S數(shù)組a的行和列元素互換后存到另一個(gè)二維數(shù)組b中,請(qǐng)?zhí)羁?。main()(inta[2][3]=]]l,2,3},{4,5,6}};intb[3][2],ij;printf("arraya:\rT);for(i=0;i<=l;i++)(for(j=0;;j++){printf("%5d”,a[i皿);print—");}printf("arrayb:\n");for(i=0;;i++)(for(j=0;j<=l;j++)printf(**%5d-,b[i]|j]);printf('n");})[例4.46]下面程序的運(yùn)行結(jié)果是 main(){inta[6||6|,i,j;for(i=l;i<6;i++)for(j=l;j<6;j++)a[i][j]=(i/j)*(j/i);for(i=l;i<6;i++)(for(j=l;j<6;j++)primf(“%2d”,a[i皿);printf(tt\nM);【例4.47】下面程序的功能是從鍵盤上輸入一個(gè)大寫字母,要求按字母的順序打印出3個(gè)相鄰的字母,指定的字母在中間.若指定的字母為Z,則打印YZA;若指定的字母為A則打印ZAB.請(qǐng)?zhí)羁?#include<stdio.h>main()(chara(3],c;inti;c=getchar();a|l]=c;if(c==Z)(a[2]=A\elseif(c=,A,){a[O]=Z;else}for(i=0;i<3;i++)putchar(a[i]);)【例4.48】下面程序的運(yùn)行結(jié)果是.#include<stdio.h>main()(inti,r;charsl[80]="bus'';chars2[80]="book”;for(i=r=0;s1[i]!=,\0,&&s2[i]!=*\0*;i++)if(sl[i]==s2[i])i++;else(r=sl[i]-s2[i];break;)primfC'%d”,r);)【例4.49】下面程序的運(yùn)行結(jié)果是.#include<stdio.h>main()inta[9]={0,6,12,18,42,44,52,67,94);intx=52,i,m,n=9;i=n/2+l;m=n/2;while(m!=0){if(x<a[i]){i=i-m/2-l;m=m/2;}elseif(x>a[i]){i=i+m/2+l;m=m/2;}elsebreak;)printfC'Theindexis:%dM,i);}【例4.50]下面程序的運(yùn)行結(jié)果是.#include<stdio.h>main()Ichara[]=,,morning,,,t;intij=0;for(i=l;i<7;i++)if(a[j]<a[i])j=i;t=a[j];a[j]=a[7];a[7]=t;puts(a);}【例4.51】下面程序的功能是將二維數(shù)組a中每個(gè)元素右移一列,最右一列換到最左一列,移后的數(shù)組存到另一數(shù)組b中,并按矩陣形式輸出b。清填空。main(){inta[2][3]={4,5,6,l,2,3},b[2][3];inti,j;printf(llarraya:\n");for(i=0;i<=l;i++)for(j=l;j<3;j++)for(i++)b[i][0]=a[i][2];printf("arrayb:\n");for(i=0;i<2;i++){for(j=0;j<3;j++)printf(M%5d,\b[i]|j]);})【例4.52]從鍵盤輸入一行句子,統(tǒng)計(jì)其中單詞的個(gè)數(shù),補(bǔ)充程序使之完整。#include<stdio.h>main(){chars[80];inti,num=O;gets(s);while(s[i]!=,\O,)|if((i==O)&&(s[i]!=,4))num++;elseif(&&)num++;i++;}printf(k4num=%d,\num);)【例4.53]下列count函數(shù)用于計(jì)算子串substr在母串str中出現(xiàn)的次數(shù)。intcount(char*str,char*substr)(intx,y,z;intnum=0;for(x=O;str[x]!=;x-h-)for(y=,z=0;substr[z]==str[y];z++,y++)if(substr[1==3(F){num++;break;)return();)【例4.54]下面程序的運(yùn)行結(jié)果是o#include<stdio.h>main(){inti,j;staticinta|10]={ };for(i=0;i<10;i++)for(j=0;j<i;j++)a[i]=a[i]+a[j];for(i=0;i<10;i++)printf("%d”,a[i]);printf("\n");)第五章指針【本節(jié)例題選編】1、選擇題【例5.1]變量的指針,其含義是指該變量的。A.值B.地址C.名D.一個(gè)標(biāo)志【例5.2]若有語句int*point,a=4;和point=&a;下面均代表地址的一組選項(xiàng)是。A.a,point,*&a B.&*a,&a,*pointC.*&point,*point,&aD.&a,&*point,point【例5.3]若已定義a為int型變量,則是對(duì)指針p的正確說明和初始化。A.int*p=a; B.int*p=*a;C.intp=&a; D.int*p=&a;【例5.4]下面判斷正確的是ochar*a="china”;等價(jià)于char*a;*a="china”;charstr[10]={"china");等價(jià)于charstr[10];str[]={"china"};char*s="china”;等價(jià)于char*s;s="china”;charc[4]="abc”,d[4]="abc";等價(jià)于charc[4]=d[4]="abc”;【例5.5]若有以下定義和賦值語句,則對(duì)s數(shù)組的第i行第j列(假設(shè)i,j已正確說明并賦值)元素地址的合法引用為_ 0ints[2][3]={0},(*p)[3];P=s;A.*(*(p+i)+j)B.*(p[i]+j)C.(p+i)+j D.(*(p4-i))|j]【例5.6]語句int(*ptr)();的含義是。ptr是指向一維數(shù)組的指針變量ptr是指向int型數(shù)據(jù)的指針變量ptr是指向函數(shù)的指針,該函數(shù)返回一個(gè)int型數(shù)據(jù)ptr是一個(gè)函數(shù)名,該函數(shù)的返回值是指向int型數(shù)據(jù)的指針【例5.7]下面程序段中,for循環(huán)的執(zhí)行次數(shù)是ochar*s=,,\ta\018bc”;for(;*s!=,\0,;s++)A.9B.5C.6D.7【例5.8]下面程序段的運(yùn)行結(jié)果是ochar*s=,,abcde,\s+=2;printf(44%d,,,s);A.cde B.字符<c,C.字符'c'的地址D.無確定的輸出結(jié)果【例5.9]有以下程序:#include<stdio.h>main()chara,b,c,*d;

b=,\xbc,;c=,\xab,;d6017”;printf(tt%c%c%c%c\n,,,a,b,c,*d);)編譯時(shí)出現(xiàn)錯(cuò)誤,以下所述中正確的是.A.C.【例5.10】A.C.程序中只有a=T;A.C.【例5.10】A.C.程序中只有a=T;語句錯(cuò)誤d="\017”;語句錯(cuò)誤以下合法的定義是—staticstr[]={>,china,,J;char*p;strcpy(p,"china");B.D.B.b=\xbc,;語句錯(cuò)誤a='〈和c=,\xbc:語句錯(cuò)誤char*p="china”;D.charstr[13];str[]=''china";【例5.11]若有定義:inta[4]⑹測能正確表示a數(shù)組中任一元素(此處0WiV4,0Wj<6)地址的表達(dá)式是=A.&a[0H0]+6%+j B.&a[0]L0J+4*j+iC.&a[0][0]+4*i+j D.&a[0][0]+6*j+i【例5.12】若有以下定義,則數(shù)值不為3的表達(dá)式是ointx[10]={0,l,2,3,4,5,6,7,8,9),*pl;A.x[3] B.pl=x+3,*pl++C.pl=x+2,*(pl++)D.pl=x+2,*++pl【例5.13]若有以下說明:int(*p)[3];則以下是正確的敘述。A.p是一個(gè)指針數(shù)組p是一個(gè)指針,它只能指向一個(gè)包含3個(gè)int類型元素的二維數(shù)組p是一個(gè)指針,它可以指向一個(gè)一維數(shù)組中的任一元素(*p)[3]與*p[3]等價(jià)【例5.14]若有說明語句:intx[3][4];則以下關(guān)于x,*x,x[0],&x⑼⑼的正確描述是A.x,*x,x[0],&x[0]⑼均表示元素x[0]⑼的地址B.只有x,x[0|,&x[0||0]表示的是元素x|0||0]的地址C.只有x⑼和&x[0][0]表示的是元素x⑼⑼的地址D.只有&x[0H01表示的是元素x[0][0]的地址【例5.15]若有以下說明語句:staticinti,a[2][3]={1,3,5,7,9,11);intn,n;且OWmWl,0<n<2,則是對(duì)數(shù)組元素的正確引用。A.a[m]+n B.*(a+5)C.*(*(a+m)+3) D.*(*(a+m)+n)【例5.16】以下程序運(yùn)行的結(jié)果是。#include<stdio.h>main()(charstr[]=Mcdalb";abc(str);puts(str);abc(char*p)inti,j;for(i=j=0;*(p+i)!=\O,;i++)if(*(p+i)>='d')(*(p+j)=*(p+i);j++;)*(p+j)=、(F;)A.dalbB.cdC.dlD.c【例5.17]下面程序的運(yùn)行結(jié)果是omain(){intx[5]={2,4,6,8,10),*p,**pp;p=x;pp=&p;printf("%d”,*(p++));printf(44%d\n,\**pp);)A.44B.2 4C.2 2D.4 6【例5.18]閱讀以下程序:main(){inta[l0]={2,4,6,8,10,12,14,16,18,20},*p;p=a;printf("%姑n”,p);printf("%x\n”,p+9);)若第一個(gè)printf語句輸出的是ffca,則第二個(gè)printf語句輸出的是A.ffddB.ffdcC.ffdeD.ffcd【例5.19】以下程序運(yùn)行的結(jié)果是o#include<stdio.h>#include<string.h>main()|char*pl,*p2,str[50]="abc”;pl="abc";p2="abc";strcpy(str+1,strcat(pl,p2));printf(4t%s\n,\str);}A.abcabcabcB.bcabcabcC.aabcabcD.cabcabc【例5.20]以下程序運(yùn)行的結(jié)果是o#include<stdio.h>sub(intx,inty,int*z)*z=y-x;)main(){inta,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf(<<%4d,%4d,%4d\n,,,a,b,c);)A.5,2,3B.-5,-12,-7C.-5,-12,-7D.5,-2,-7【例5.21]執(zhí)行以下程序后,a的值為【1】 ,b的值為【2】main(){inta,b,k=4,m=6,*pl=&k,*p2=&m;a=pl==&m;b=(-*pl)/(*p2)+7;printf("a=%d\n”,a);printfCtb=%d\n,\b);)A. -1 B. 1 C.0 D.4A. 5 B. 6 C.7 D.10【例5.22]下面程序的運(yùn)行結(jié)果是。#include<stdio.h>main(){intb,a=28;chars[10],*p;p=s;do{b=a%16;if(b<10)*p=b+48;else*p=b+55;P++;a=a/5;}wliile(a>0);*p=''0';puts(s);

A.10B.2C.C51A.10B.2C.C51D.\0【例5.23]下面程序的運(yùn)行結(jié)果是o#include<stdio.h>main()(staticchara[]=''Language",b[]=''programe”;char*pl,*p2;intk;pl=a;p2=b;for(k=0;k<=7;k++)if(*(pl+k)==*(p2+k))printf(u%cM,*(p1+k));)A.gaeB.gaC.LanguageD.有語法錯(cuò)誤【例5.24】以下程序中調(diào)用scanf函數(shù)給變量a輸入數(shù)值的方法是錯(cuò)誤,其錯(cuò)誤原因是.main()(int*p,*q,a,b;p=&a;printf(**inputa:");scanf(44%d,,,*p);)*p表示的是指針變量p的地址*p表示的是變量a的值,而不是變量a的地址*p表示的是指針變量p的值*p只能用來說明p是一個(gè)指針變量【例5.25]以下程序運(yùn)行的結(jié)果是.#include<stdio.h>main()(inta[]={2,4,6,8,10),y=l,x,*p;p=&a[l];for(x=0;x<3;x++)y+=*(p+x);printf("%d\n",y);)A.17 B.18C.19 D.20【例5.26]有如下程序:#include<stdio.h>main()charch⑵[5]={"6937”,"8254”},*p⑵;inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i]U]!=A0*;j+=2)s=10*s+p[i][j]-,0,;printf(M%d\nM,s);)該程序的輸出結(jié)果是OA.69825 B.63825C.6385 D.693825【例5.27]以下程序運(yùn)行的結(jié)果是o#include<stdio.h>#include<string.h>fiin(char*w,intn)(chart,*sl,*s2;sl=w;s2=w+n-l;while(sl<s2)(t=*sl++;*sl=*s2—;*s2=t;})main(){char*p;p="1234567”;fun(p,strlen(p));puts(p);}A.7654321B.1714171C.1711717D.7177171【例5.28】下面程序應(yīng)能對(duì)兩個(gè)整型變量的值進(jìn)行交換。以下正確的說法是main()|inta=10,b=20;printf(u(1)a=%d,b=%d\nM,a,b);swap(&a,&b);printfCt(2)a=%d,b=%d\n,,,a,b);}swap(intp,intq)inti;t=p;p=q;q=t;}A.該程序完全正確B,該程序有錯(cuò),只要將語句swap(&L&b);中的參數(shù)改為Lb即可一;C該程序有錯(cuò),只要將swap()函數(shù)中的形參p和q以及t均定義為指針(執(zhí)行語句不變)即可。D.以上說法都不對(duì)?!纠?.29]已有定義:intk=2;int*ptrl,*ptr2;且ptrl和ptr2均已指向變量k,下面不能正確執(zhí)行的賦值語句是Ok=*ptrl+*ptr2;ptr2=k;ptrl=ptr2k=*ptrl*(*ptr2);【例5.30]若有說明:int*pl,*p2,m=5,n;以下均是正確賦值語句的選項(xiàng)是。pl=&m;p2=&p1;pl=&m;p2=&n;*pl=*p2;pl=&m;p2=pl;pl=&m;*p2=*pl;【例5.31]以下正確的程序段是oA.charstrl[]=v12345,\sti2[]=,,abcdef,;strcpy(strl,st「2);charstr[ ="abcde”;strcat(str,st);charstr[10]=,*st=,,abcde??;strcat(str,st);D.char*stl="12345”產(chǎn)st2="abcde";strcat(stl,s⑵;【例5.32】下面程序段的運(yùn)行結(jié)果是。char求p="abcdefgh”;p+=3;printf(u%d\n,,,strlen(strcpy(p,MABCDM)));8 B.12C.4 D.7【例5.33】下面程序段的運(yùn)行結(jié)果是ocharaUFlanguage",*p;p=a;while("p!='u')(printf("%c”,*p-32);P++;}A.LANGUAGElanguageLANGlangUAGE【例5.34]以下與庫函數(shù)strcpy(char*phchar*p2)功能不相等的程序段是。strcpyl(char*pl,char*p2)while((*pl++=*p2++)!=*\0,);strcpyl(char*pl,char*p2)(while((*pl=*p2)!=,\0,){pl++;p2++;}}strcpyl(char*pl,char*p2)(while(*p1++=*p2++);)Strcpyl(char*pl,char*p2){while(*p2)*pl++=*p2++;}【例5.35]設(shè)有以下定義:char*cc[2]={"1234”,"5678”};則正確的描述是。A.cc數(shù)組的兩個(gè)元素中各自存放了字符串“1234”和“5678”的首地址cc數(shù)組的兩個(gè)元素分別存放的是含有4個(gè)字符的一維字符數(shù)組的苜地址cc是指針變量,它指向含有兩個(gè)數(shù)組元素的字符型一維數(shù)組D.cc數(shù)組元素的值分別是“1234”和“5678”【例5.36]若有以下說明和語句:char*language[]={"FORTRAN","BASIC","PASCAL","JAVA","C”};char**q;q=language+2;則語句printf("%o\n”,*q);A.輸出的是language⑵元素的地址B.輸出的是字符串PASCALC.輸出的是language⑵元素的值,它是字符串PASCAL的首地址D.格式說明不正確,無法得到確定的輸出【例5.37]下面程序的運(yùn)行結(jié)果是?#include<stdio.h>#include<string.h>fun(char*s)|chara[7];s=a;strcpy(a,,,lookM);)main()(char*p;fun(p);purs(p);)look (說明:_代表空格)looklook D.不確定的值【例5.38】當(dāng)運(yùn)行以下程序時(shí):從鍵盤輸入MyBooK,則下面程序的運(yùn)行結(jié)果是°#include<stdio.h>charfun(char*s)(if(*sv='Z'&&*s>=,A,)*s+=32;retum(*s);)main(){charc[80],*p;p=c;scanf("%s”,p);while(*p){*p=fun(p);putchar(*p);p++;}printf(4\n,);)mYbOOkmybookmyMyBook【例5.39】下面程序的運(yùn)行結(jié)果是o#include<stdio.h>#include<string.h>main()(char*sl="AbDeG”;char*s2="AbdEg";sl+=2;s2+=2;printf("%d\n",strcmp(sl,s2));)A.正數(shù) B.負(fù)數(shù)C.零 D.不確定的值2、填空

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論