版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
..1.C語言規(guī)定,在一個(gè)源程序中main函數(shù)的位置______。<20XX春選擇題第21題>A.必須在最開始
B.必須在最后C.必須在預(yù)處理命令的后面
D.可以在其他函數(shù)之前或之后[解析]main函數(shù)也叫主函數(shù),是C語言編譯系統(tǒng)提供的特殊函數(shù),可以放在程序中的任何位置,但不能定義在其他函數(shù)體內(nèi)。C程序總是從main函數(shù)的第一條語句開始執(zhí)行。[答案]D2.以下敘述中正確的是________。<20XX秋選擇題第21題>A.C語言系統(tǒng)以函數(shù)為單位編譯源程序B.main函數(shù)必須放在程序開始C.用戶定義的函數(shù)可以被一個(gè)或多個(gè)函數(shù)調(diào)用任意多次D.在一個(gè)函數(shù)體內(nèi)可以定義另外一個(gè)函數(shù)[解析]C語言系統(tǒng)以程序?yàn)閱挝痪幾g源程序,程序由函數(shù)組成。main函數(shù)可以放在其他函數(shù)之前或之后。除了main函數(shù)外,函數(shù)可以被其他函數(shù)多次調(diào)用。函數(shù)不能定義在其他函數(shù)體內(nèi),即不能嵌套定義。[答案]C3.以下敘述中正確的是_________。<20XX秋選擇題第21題>A.在編譯時(shí)可以發(fā)現(xiàn)注釋中的拼寫錯(cuò)誤B.C語言程序的每一行只能寫一條語句C.main<>{}必須位于程序的開始D.C語言程序可以由一個(gè)或多個(gè)函數(shù)組成[解析]C程序的注釋不產(chǎn)生編譯代碼,編譯時(shí)跳過去,發(fā)現(xiàn)不了其中錯(cuò)誤。C程序書寫格式自由,一行內(nèi)可以寫幾個(gè)語句,一個(gè)語句可以分寫在多行上。main函數(shù)可以放在程序中的任何位置。C程序可以由一個(gè)或多個(gè)函數(shù)組成,函數(shù)可以為空函數(shù),包括main函數(shù)。[答案]D4.以下關(guān)于C語言源程序的敘述中錯(cuò)誤的是________。<20XX春選擇題第21題>A.一個(gè)C源程序由若干個(gè)函數(shù)定義組成,其中必須有且僅有一個(gè)名為main的函數(shù)定義B.函數(shù)定義由函數(shù)頭部和函數(shù)體兩部分組成C.在一個(gè)函數(shù)定義的函數(shù)體中允許定義另一個(gè)函數(shù)D.在一個(gè)函數(shù)定義的函數(shù)體中允許調(diào)用另一個(gè)函數(shù)或調(diào)用函數(shù)自身[解析]一個(gè)C語言源程序由若干個(gè)函數(shù)定義組成,其中必須有且僅有一個(gè)名為main的函數(shù)定義,函數(shù)定義由函數(shù)頭部和函數(shù)體兩部分組成。函數(shù)可以嵌套調(diào)用也可以遞歸調(diào)用,但不能嵌套定義。C的意思是嵌套定義,錯(cuò)誤,D的意思是嵌套調(diào)用和遞歸調(diào)用,正確。[答案]C3.1.2基本數(shù)據(jù)類型1.以下選項(xiàng)中,___________是C語言關(guān)鍵字。<20XX春選擇題第22題>
A.printf
B.include
C.fun
D.default[解析]default是關(guān)鍵字,用在switch語句中。printf和include屬于預(yù)定義標(biāo)識(shí)符,其中printf是輸出函數(shù)名,include用在預(yù)編譯處理命令中。fun是用戶自定義標(biāo)識(shí)符。[答案]D2.在以下各組標(biāo)識(shí)符中,均可以用作變量名的一組是_____。<20XX秋選擇題第22題>A.a01,IntB.table_1,a*.1C.0_a,W12D.for,point[解析]選項(xiàng)A中兩個(gè)都符合標(biāo)識(shí)符的命令規(guī)則,Int與關(guān)鍵字int是不同的標(biāo)識(shí)符,選項(xiàng)B的第2個(gè)標(biāo)識(shí)符中有*號(hào),不符合標(biāo)識(shí)符命名規(guī)則,選項(xiàng)C數(shù)字開頭,不允許,選項(xiàng)D中的for是關(guān)鍵字,不能做變量名。[答案]A3.以下定義和聲明中,語法均有錯(cuò)誤的是___________。<20XX春選擇題第21題>①int_f<intx>{}②intf<intf>{}③int2x=1;④structfor{intx;};A.②③B.③④C.①④D.①②③④[解析]本題考的是標(biāo)識(shí)符的命名規(guī)則。③定義的整型變量名數(shù)字開頭,不符合命名規(guī)則。④中定義的結(jié)構(gòu)體類型名for屬于關(guān)鍵字,不能作為結(jié)構(gòu)體類型名。②中使用的函數(shù)名和形式參數(shù)名相同,在語法上可以,但在實(shí)際編程時(shí)不提倡使用。[答案]B4.在C語言系統(tǒng)中,如果一個(gè)變量能正確存儲(chǔ)的數(shù)據(jù)范圍為整數(shù)-32768~32767,則該變量在內(nèi)存中占________個(gè)字節(jié)。
<20XX春填空題第3題>[解析]表示范圍為整數(shù)-32768~32767的屬于int型或short型的變量,它們?cè)趦?nèi)存占2個(gè)字節(jié)。[答案]25.若有聲明"intx;"且sizeof<x>的值為2,則當(dāng)x值為___________時(shí)"x+1>x"為假。<20XX春填空題第2題>[解析]x為int型,其表示范圍為-32768~+32767,當(dāng)x為32767時(shí),再加1就變成了-32768了,此時(shí),就是x+1>x"為假的情況。這是由int型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)情況決定的。int型數(shù)據(jù)在內(nèi)存中占2個(gè)字節(jié),以補(bǔ)碼的形式存放,32767的補(bǔ)碼為0111111111111111,加1以后就變成了1000000000000000,為-32768的補(bǔ)碼,這種情況為溢出,數(shù)處于邊界時(shí)會(huì)溢出。sizeof<x>是求字節(jié)數(shù)運(yùn)算符。[答案]327676.已知sizeof<int>的值為2,為將10!的值存儲(chǔ)到變量f中<10!=3628800>,變量f的類型應(yīng)聲明為___________。<20XX秋選擇題第23題>A.longintB.intC.shortintD.unsignedint[解析]10!=3628800,超過了int的范圍-32768~+32767,而長(zhǎng)整型在內(nèi)存占4個(gè)字節(jié),表示范圍大到-214748348~2147483647,應(yīng)該要用長(zhǎng)整型才可以存放3628800。[答案]A7.以下常量表示中正確的是__________。<20XX春選擇題第22題>[解析]選項(xiàng)A若想表示成十六進(jìn)制常量,正確的表示應(yīng)該是0xff,如果表示成轉(zhuǎn)義字符,應(yīng)該放在單引號(hào)內(nèi):'\0xff'。選項(xiàng)B表示的是長(zhǎng)整型常量,選項(xiàng)C是一個(gè)標(biāo)識(shí)符,不能表示常量,選項(xiàng)D表示的是無符號(hào)整數(shù),但無符號(hào)整數(shù)不應(yīng)該有小數(shù)。[答案]B8.以下表示中不能用作C語言常量表示的是____。<20XX春選擇題第22題>A.0ULB.<long>123C.1e0D.'\x2a'[解析]0UL意為將0以無符號(hào)長(zhǎng)整型存放,B為強(qiáng)制類型轉(zhuǎn)換,是表達(dá)式,表示長(zhǎng)整型常量應(yīng)該在123后加字母l或L。C是實(shí)常量,指數(shù)表示法,意為1乘以10的0次方,e前面必須有數(shù)字,后面的數(shù)字必須是整數(shù)。D是轉(zhuǎn)義字符,表示十六進(jìn)制數(shù)2a。[答案]B9.在C語言源程序中,不帶任何修飾的浮點(diǎn)數(shù)直接量〔例如:3.14都是按_________類型數(shù)據(jù)存儲(chǔ)的。<20XX春填空題第1題>[解析]實(shí)型常量的類型默認(rèn)為double類型,在內(nèi)存中占8個(gè)字節(jié)。帶f修飾即3.14f或3.14F,則認(rèn)為它是float型,在內(nèi)存中占4個(gè)字節(jié)。[答案]double10.已知有聲明"charch='g';",則表達(dá)式ch=ch-'a'+'A'的值為字符__________的編碼。<20XX春填空題第2題>[解析]本題的功能是將小寫字母轉(zhuǎn)換成大寫字母。-'a'+'A'實(shí)際上就是減去32,對(duì)于一個(gè)小寫字母來說,減去32就變成對(duì)應(yīng)的大寫字母。[答案]G11.若有程序段"charc=256;inta=c;",則執(zhí)行該程序段后a的值是______。<20XX秋選擇題第24題>A.256B.65536C.0D.-1[解析]將256轉(zhuǎn)換成二進(jìn)制,為100000000,占9位,而char在內(nèi)存只占一個(gè)字節(jié),即8位,截取低8位賦給字符變量c,得c=0,將c的值賦給a,結(jié)果為0。[答案]C3.1.3運(yùn)算符和表達(dá)式1.已知有聲明"inta=3,b=4,c;",則執(zhí)行語句"c=1/2*<a+b>;"后,c的值為_______。<20XX春選擇題第23題A.0
B.3
C.3.5
D.4[解析]本題考查的是兩整數(shù)相除,結(jié)果為整數(shù),截取的是整數(shù)部分,不是四舍五入。1/2等于0,0乘于任何一個(gè)整數(shù)結(jié)果還是0,最后結(jié)果為0。[答案]A2.已知有聲明"longx,y;"且x中整數(shù)的十進(jìn)制表示有n位數(shù)字<4<n<10>,若要求去掉整數(shù)x十進(jìn)制表示中的最高位,用剩下的數(shù)字組成一個(gè)新的整數(shù)并保存到y(tǒng)中,則以下表達(dá)式中能正確實(shí)現(xiàn)這一功能的是________。〔20XX秋選擇題第25題A.y=x/<10*<n-1>>B.y=x%<10*<n-1>>C.y=x%<long>pow<10,n-1>D.y=x%<10ù<n-1>>[解析]本類型的題目,拿一個(gè)具體的數(shù),放到四個(gè)選項(xiàng)中去計(jì)算,就能得到正確答案。假設(shè)x為1234,代入A中,為1234/<10*3>,肯定不是234,代入B中,為1234%<10*3>也不對(duì),代入C中為1234%<long>103,結(jié)果為234,正確,選C。而D中的"ù"在C語言中是指位運(yùn)算中的"異或"運(yùn)算,不是求指數(shù)。[答案]C3.若有聲明"floaty=3.14619;intx;",則計(jì)算表達(dá)式"x=y*100+0.5,y=x/100.0"后y的值是___________?!?0XX春填空題第3題[解析]x=y*100+0.5=3.14619*100+0.5=315,因?yàn)閤為int,截取整數(shù)部分賦給x。然后計(jì)算y=x/100.0=315/100=3.15,y是浮點(diǎn)數(shù)。[答案]3.154.若有聲明"inta=32767,b;",則在TurboC2.0系統(tǒng)中執(zhí)行語句"printf<"%d",b=++a>;"后輸出結(jié)果是_________。<20XX秋填空題第3題>[解析]本題有4個(gè)知識(shí)點(diǎn):一是printf語句,輸出%d格式,二是賦值運(yùn)算及賦值表達(dá)式的值,三是++運(yùn)算,四是int型數(shù)據(jù)的表示范圍及整數(shù)在內(nèi)存的存儲(chǔ)情況。b=++a是將a的值加1后賦給b,a、b是int型,處于-32768~32767范圍內(nèi),32767+1=-32768,整數(shù)在計(jì)算機(jī)中以補(bǔ)碼形式存儲(chǔ),32767的補(bǔ)碼為0111111111111111,加1后為1000000000000000,是-32768的補(bǔ)碼。對(duì)于int數(shù)據(jù),32767+1等于-32768。若是long型,滿足32767+1等于32768。[答案]-327685.已知有聲明"inta=3,b=4;",下列表達(dá)式中合法的是______。<20XX春選擇題第25題>
A.a+b=7
B.a=|b|
C.a=b=0
D.<a++>++[解析]本題考查的是賦值運(yùn)算符和"++"運(yùn)算符的左值要求。左值必須是變量,不能是常量和表達(dá)式。選項(xiàng)A左邊是表達(dá)式,不允許,選項(xiàng)D括號(hào)中的a++也是表達(dá)式,不能進(jìn)行++運(yùn)算。選項(xiàng)B是一個(gè)代數(shù)式,必須轉(zhuǎn)換成C語言合法的表達(dá)式,表示成a=abs<b>。選項(xiàng)C正確,將0賦給b,再賦給a,a和b的值不再是初始化的值,而變成0了。[答案]C6.已知有聲明"intn;floatx,y;",則執(zhí)行語句"y=n=x=3.89;"后,y的值為
________。<20XX春選擇題第28題>
A.3
B.3.0
C.3.89D.4.0[解析]本題考查的是不同類型間的賦值。賦值運(yùn)算符右結(jié)合。先將3.89賦給x,表達(dá)式的值也為3.89,再將3.89賦給n,n是int,自動(dòng)截取整數(shù)部分,將3賦給n。最后將3賦給y,y是float,將整數(shù)3轉(zhuǎn)換成實(shí)數(shù)3.0后賦給y,y值為3.0。[答案]B7.以下程序運(yùn)行時(shí)輸出到屏幕的結(jié)果是
___________
。<20XX春閱讀程序第7題>#include<stdio.h>voidmain<>
{inta=1,b=2;
a+=b;
b=a-b;
a-=b;printf<"%d,%d\n",a,b>;}[解析]本題的考點(diǎn)是復(fù)合賦值運(yùn)算符,程序功能是不用臨時(shí)變量,實(shí)現(xiàn)兩個(gè)變量的值的交換。計(jì)算過程如下:a=a+b=1+2=3,b=a-b=3-2=1,a=a-b=3-1=2。最后結(jié)果是a為2,b為1。變量的值在程序運(yùn)行過程中可能在不斷的變化,每次計(jì)算都要用最新得到的值。[答案]2,18.若有聲明"intx=2,y=1,z=0;",則下列關(guān)系表達(dá)式中有語法錯(cuò)誤的是_______。<20XX春選擇題第25題>A.x>y=2B.z>y>xC.x>y==1D.x==<x=0,y=1,z=2>[解析]賦值表達(dá)式的運(yùn)算數(shù)有左值要求,賦值號(hào)左邊必須是變量,不能是表達(dá)式,A錯(cuò)。B沒有語法錯(cuò)誤,z>y成立結(jié)果為1,不成立為0,再將1或0與x比較,判斷其是否成立。C先判斷x>y是否成立,得到0或1再與1比較是否相等,最后的結(jié)果要么是0要么是1。D先做括號(hào)中的逗號(hào)表達(dá)式,依次進(jìn)行賦值,最后一個(gè)表達(dá)式的值2是整個(gè)逗號(hào)表達(dá)式的值,將其與x的值進(jìn)行是否相等的比較。[答案]A9.已知有聲明"inta=12,b=15,c;",則執(zhí)行表達(dá)式"c=<a||<b-=a>>"后,變量b和c的值分別為____________。<20XX春選擇題第29題>
A.3,1
B.15,12
C.15,1D.3,12[解析]本題的考點(diǎn)是邏輯表達(dá)式的短路特性。a值為12,非零即為真,邏輯表達(dá)式的結(jié)果只能用1或者0表示,若為真則結(jié)果為1。只要有一個(gè)為真,邏輯或"||"的結(jié)果就為1,b-=a不用計(jì)算了,b的值不變,仍為15。而括號(hào)中邏輯表達(dá)式的值為1,1賦給c,故c的值為1。[答案]C10.已知有聲明"inta=3,b=4,c=5;",以下表達(dá)式中值為0的是________。<20XX秋選擇題第24題>A.a&&bB.a<=bC.a||b&&cD.!<!c||1>[解析]a&&b中a和b都是非0,A的結(jié)果為1。B中a<=b成立,結(jié)果為1。C中&&優(yōu)先級(jí)高于||,先做&&,b和c的值非0,b&&c的結(jié)果為1,因?yàn)槭莬|運(yùn)算,最后的結(jié)果肯定是1。D中c非0,!c為0,與1邏輯或?yàn)?,將括號(hào)中的1再邏輯非,結(jié)果為0。[答案]D11.C語言中有!、&&、||三個(gè)邏輯運(yùn)算符,其中優(yōu)先級(jí)高于算術(shù)運(yùn)算符的是________。<20XX秋填空題第1題>[解析]邏輯非"!"是單目運(yùn)算符,優(yōu)先級(jí)為2級(jí),高于3級(jí)的"*/%"和4級(jí)的"+"和"-"。"&&"的優(yōu)先級(jí)為11級(jí),"||"的優(yōu)先級(jí)為12,低于算術(shù)運(yùn)算符。[答案]!12.以下表示數(shù)學(xué)式"a<b<c"的邏輯表達(dá)式中,錯(cuò)誤的是_______。<20XX春選擇題24題>A.a<b<cB.a<b&&b<cC.!<a>=b>&&!<b>=c>D.!<a>=b||b>=c>[解析]最好的答案是B,但C、D與B的功能相同。C中!<a>=b>就是a<b,而D中將!放到外面,"&&"就變成了"||"。選項(xiàng)A先判斷a<b,成立結(jié)果為1,不成立結(jié)果為0,再將結(jié)果與c比較。[答案]A1x>013.以下選項(xiàng)中,不能表示函數(shù)sign<x>=0x=0功能的表達(dá)式是________。-1x<0<20XX春選擇題第23題>A.s=<x>0>?1:<x<0>?-1:0B.s=x<0?-1:<x>0?1:0>C.s=x<=0?-1:<x==0?0:1>D.s=x>0?1:x==0?0:-1[解析]本題考點(diǎn)是嵌套的條件表達(dá)式。仔細(xì)分析它們的邏輯關(guān)系,選項(xiàng)C的功能是當(dāng)x<=0時(shí)值為-1,否則即x>0再判斷x=0是否成立決定值為0還是1,不合題意。[答案]C14.若有聲明"inta=5,b=2;",則表達(dá)式"b+=<float><a+b>/2"運(yùn)算后b的值為________。<20XX秋填空題第1題>[解析]b+=<float><a+b>/2相當(dāng)于b=b+<<float><a+b>/2>。先執(zhí)行a+b得7,轉(zhuǎn)換成實(shí)數(shù)7.0除以2,得3.5,然后將原來的b=2加3.5得5.5,b是int,截取整數(shù)部分5賦給b。[答案]515.設(shè)指針變量占2個(gè)字節(jié)的內(nèi)存空間,若有聲明"char*p="123";intc;",則執(zhí)行語句"c=sizeof<p>;"后,c的值為_____。<20XX春選擇題第24題>
A.1
B.2
C.3D.4[解析]題目告訴我們指針變量占2個(gè)字節(jié),而sizeof的功能就是計(jì)算變量在內(nèi)存中所占的字節(jié)數(shù),c的值為指針變量p在內(nèi)存中占用的字節(jié)數(shù),為2。[答案]B16.若有聲明"intr=2;",則執(zhí)行語句"printf<"%d",sizeof<2*3.14*r>>;"時(shí)輸出________。<20XX秋填空題第2題>[解析]本題輸出表達(dá)式2*3.14*r的結(jié)果在內(nèi)存中占用的字節(jié)數(shù)。2*3.14*r的結(jié)果為實(shí)常量,其中有一個(gè)實(shí)常量3.14,C中實(shí)常量默認(rèn)為double型。根據(jù)類型轉(zhuǎn)換規(guī)則,其他類型的數(shù)據(jù)也要轉(zhuǎn)換成double型,最后結(jié)果為double型,在內(nèi)存占8個(gè)字節(jié)。一般情況,只要表達(dá)式中有一個(gè)數(shù)據(jù)為double型,最后的結(jié)果就是double型。[答案]817.數(shù)學(xué)式所對(duì)應(yīng)的c語言表達(dá)式為pow<x,________>。<20XX春填空題第1題>[解析]pow<x,y>是求x的y次方的函數(shù)。就是x的三分之一次方。此處注意的是1/3=0,要將其中一個(gè)轉(zhuǎn)換為浮點(diǎn)數(shù)。[答案]1.0/3或者1/3.0或者<double>1/318.數(shù)學(xué)表達(dá)式所對(duì)應(yīng)的C語言表達(dá)式為________。<20XX秋填空題第3題>[解析]求平方根的函數(shù)為sqrt,求絕對(duì)值的函數(shù)為abs或fabs,abs求整數(shù)的絕對(duì)值,fabs求實(shí)數(shù)的絕對(duì)值。"≠"用"!="表示。4a要用4*a表示,*表示乘號(hào),不能缺省。分母一定要加括號(hào),若不加括號(hào)得用除"/"不是用乘"*"。加括號(hào)的表示方式看起來更直觀。[答案]sqrt<fabs<x>!=4*a/<b*c>或sqrt<fabs<x>!=4*a/b/c3.2.1實(shí)現(xiàn)順序結(jié)構(gòu)的語句1.以下關(guān)于C語言語句的敘述中正確的是_________?!?0XX秋選擇題第27題A.所有語句都包含關(guān)鍵字B.所有語句都包含表達(dá)式C.所有語句都可以出現(xiàn)在源程序中的任何位置D.除復(fù)合語句外的其他所有語句都以分號(hào)結(jié)束[解析]關(guān)鍵字只有32個(gè),大多數(shù)用來進(jìn)行變量類型說明以及實(shí)現(xiàn)條件選擇和循環(huán)結(jié)構(gòu)的控制語句。很多語句中沒有關(guān)鍵字的,如賦值語句。表達(dá)式也不一定在所有的語句中出現(xiàn)的,如函數(shù)調(diào)用語句。語句是程序的執(zhí)行部分,放在函數(shù)內(nèi)部,而且在說明部分之后。C語言中復(fù)合語句中的各條語句都必須有分號(hào)";",但在"}"外沒有分號(hào)。[答案]D2.已知int類型數(shù)據(jù)在內(nèi)存中存儲(chǔ)長(zhǎng)度為2個(gè)字節(jié),以下語句中能正確輸出整數(shù)32768的是________?!?0XX秋選擇題第23題A.printf<"%d",32768>;B.printf<"%ld",32768>;C.printf<"%f",32768>;D.printf<"%c",32768>;[解析]本題考點(diǎn)是輸出格式。%d格式輸出int型整數(shù),范圍為-32768~32767,%f格式輸出浮點(diǎn)數(shù),%c格式輸出字符。%ld格式輸出長(zhǎng)整型整數(shù),范圍為-21億~21億。[答案]B3.以下語句中有語法錯(cuò)誤的是____________?!?0XX春選擇題第24題A.printf<"%d",0e>;B.printf<"%f",0e2>;C.printf<"%d",0x2>;D.printf<"%s","0x2">;[解析]本題考點(diǎn)為輸出格式及常量表示。A中的%d表示輸出int型整數(shù),0開頭為八進(jìn)制數(shù),只能為0~7共8個(gè)數(shù)字,不能為e。B是%f格式,輸出實(shí)數(shù),0e2是指數(shù)形式,即為0*102。C輸出int型整數(shù),0x是十六進(jìn)制形式,D用%s格式輸出字符串常量"0x2"。[答案]A4.已知有聲明和語句"inta;scanf<"a=%d",&a>;",欲從鍵盤上輸入數(shù)據(jù)使a中的值為3,則正確的輸入應(yīng)是_______
。〔20XX春填空題第5題[解析]"a="是原樣字符,要照輸。"%d"的位置輸入對(duì)應(yīng)的變量a的值3。就是將鍵盤輸入的值3存入變量a的地址單元,這樣a的值就為3。[答案]a=35.若有聲明"longa,b;"且變量a和b都需要通過鍵盤輸入獲得初值,則下列語句中正確的是________。〔20XX秋選擇題第23題A.scanf<"%ld%ld,&a,&b">;B.scanf<"%d%d",a,b>;C.scanf<"%d%d",&a,&b>;D.scanf<"%ld%ld",&a,&b>;[解析]a和b是long型,輸入時(shí)要用"%ld"格式。對(duì)于變量,scanf函數(shù)的地址表中必須有取地址運(yùn)算符"&",而且只在格式控制串上有雙引號(hào),地址表列上不應(yīng)有雙引號(hào)。滿足這些要求的只有選項(xiàng)D。[答案]D6.若有聲明"inti;floatx;chara[50];",為使i得到值1,x得到值3.1416,a得到值yz,當(dāng)執(zhí)行語句"scanf<"%3d%f%2s",&i,&x,a>;"時(shí),正確的輸入形式是_________。<20XX秋選擇題第23題A.1,3.1416,yzB.13.1416yzC.0013.1416yzD.i=001,x=3.1416,a=yz[解析]第一個(gè)輸入格式"%3d"對(duì)應(yīng)變量i,要輸入3位,而i值為1,只占1位,補(bǔ)足3位,輸入時(shí)在前面加00,輸完"001"后用空格或回車或TAB鍵分隔。第二個(gè)輸入格式"%f",對(duì)應(yīng)的數(shù)為實(shí)數(shù)3.1416,輸完加分隔符。第三個(gè)輸入格式"%2s",是2個(gè)字符的字符串,a為數(shù)組名,本身就已表示地址了,前面無"&"。選項(xiàng)C滿足要求。A用逗號(hào)分隔,逗號(hào)不是有效的分隔符,只有當(dāng)格式控制串中有原樣字符逗號(hào)時(shí)才需輸入逗號(hào),而且i不足3位。B在輸入數(shù)據(jù)時(shí)沒有分隔符,D在輸入時(shí)有"i="等字符,不需要。[答案]C7.已知有聲明"chars[80];",若需要將鍵盤輸入的一個(gè)不含空格的字符串保存到s數(shù)組中,則下列語句中正確的是________?!?0XX秋選擇題第28題A.scanf<"%s",s>;B.scanf<"%s",s[0]>;C.s=gets<>;D.s=getchar<>;[解析]A中的scanf函數(shù)中的s是數(shù)組名,本身就表示地址了,不用再加"&"。B中的s[0]表示一個(gè)元素,不是地址,C中應(yīng)該將s放入括號(hào)中作為gets函數(shù)的參數(shù),D中的getchar函數(shù)一次只能輸入一個(gè)字符。scanf函數(shù)不能輸入空格。[答案]A8.若有聲明"chars[l0]="remind";",執(zhí)行"puts<s+2>;"后的輸出結(jié)果是___________。〔20XX秋填空題第2題[解析]puts函數(shù)的功能是輸出一個(gè)字符串。s表示數(shù)組的起始地址,s+2表示數(shù)組元素的第2個(gè)元素的地址,所以從s[2]元素開始輸出,結(jié)果為mind。[答案]mind3.2.2實(shí)現(xiàn)選擇結(jié)構(gòu)的語句1.已知有聲明"intx,y;",若要求編寫一段程序?qū)崿F(xiàn)"當(dāng)x大于等于0時(shí)y取值1,否則y取值-1",則以下程序段中錯(cuò)誤的是________。<20XX秋選擇題第26題>A.if<x>=0>y=1;elsey=-1;B.y=x>=0?1:-1;C.switch<>D.switch<x-abs<x>>{casex>=0:y=1;break;{case0:y=1;break;default:y=-1;default:y=-1;}}[解析]本題考點(diǎn)為if語句和switch語句。選項(xiàng)A用if語句表示,正確。選項(xiàng)B用條件表達(dá)式表示,x大于等于0成立將1賦值給y,否則將-1賦值給y。選項(xiàng)C用switch語句,但不符合switch的語法規(guī)則,switch的括號(hào)中必須有一常量或表達(dá)式,不能為空。case后是一個(gè)常量表達(dá)式,其中只能有常量和運(yùn)算符,不能有變量。選項(xiàng)D中,當(dāng)x大于等于0時(shí),x-abs<x>為0,執(zhí)行y=1,否則就不是為0,執(zhí)行y=-1。[答案]C2.以下程序運(yùn)行時(shí)輸出到屏幕的結(jié)果是________。<20XX秋閱讀程序第7題>#include<stdio.h>voidmain<>{inti=1,m=0;switch<i>{case1:case2:m++;case3:m++;}printf<"%d",m>;}[解析]因?yàn)閏ase后無break語句,switch中的m++都要執(zhí)行,m的初值為0,執(zhí)行2次m++后m的值為2。[答案]23.2.3實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的語句1.程序段"intx=3;do{printf<"%d",x-->;}while<!x>;"的執(zhí)行結(jié)果是_________。<20XX秋選擇題第24題>A.321B.2C.3D.死循環(huán)[解析]本題的考點(diǎn)是do-while循環(huán)和自減運(yùn)算符。先執(zhí)行輸出語句,輸出x的值,x--,先用x的值3,再減1,為2。輸出一個(gè)3,然后判斷!x看是否繼續(xù)循環(huán),x為2,非0,!x就為0,循環(huán)結(jié)束。[答案]C2.若有聲明"inti,k=1;unsignedj;",則下列語句執(zhí)行時(shí)會(huì)出現(xiàn)無限循環(huán)的語句是____。<20XX春選擇題第27題>A.for<j=15;j>0;j-=2>k++;B.for<j=0;j<15;j+=2>k++;C.for<i=0;i<15;i+=2>k++;D.for<i=15;i>0;i-=2>k++;[解析]本題的考點(diǎn)是for循環(huán)的結(jié)束條件與無符號(hào)整數(shù)。j是無符號(hào)整數(shù),永遠(yuǎn)不會(huì)小于0,選項(xiàng)A中,j的初值為單數(shù),每次減2,還是單數(shù),j也不會(huì)等于0,即j>0永遠(yuǎn)滿足,A是無限循環(huán)。[答案]A3.設(shè)有變量聲明"charc;",執(zhí)行"for<;c=<getchar<>!='\n'>;>printf<"%c",c>;"時(shí),從鍵盤上輸入"ABCDEFG回車"之后,輸出的結(jié)果是_________。<20XX秋選擇題第28題>A.ABCDEFGB.AABBCCDDEEFFGGC.非字母數(shù)字字符D.語句不能執(zhí)行[解析]for語句中,先執(zhí)行條件判斷<getchar<>!='\n'>,若不是回車條件成立,結(jié)果為1,將之賦給變量c,輸出ASCII碼值為1的對(duì)應(yīng)的字符,肯定不是字母或者數(shù)字。[答案]C4.下面關(guān)于循環(huán)語句for、while、do_while的敘述中正確的是____。<20XX春選擇題26題>A.三種循環(huán)語句的循環(huán)體都必須放入一對(duì)花括號(hào)中B.三種循環(huán)語句中都可以缺省循環(huán)終止條件表達(dá)式C.三種循環(huán)語句的循環(huán)體都至少被無條件地執(zhí)行一次D.三種循環(huán)語句都可能出現(xiàn)無窮循環(huán)[解析]對(duì)于for和while循環(huán),當(dāng)循環(huán)體只有一個(gè)語句時(shí)可以不用花括號(hào)。只有for循環(huán)可以缺省循環(huán)終止條件表達(dá)式,其余兩種while<表達(dá)式>中的表達(dá)式不能缺省。do-while至少被無條件地執(zhí)行一次,其余兩種當(dāng)型循環(huán)條件為0時(shí)一次也不執(zhí)行。三種循環(huán)語句的無窮循環(huán)形式如下:while<1>{……}do{……}while<1>;for<;;>{……}[答案]D5.若在一個(gè)C語言源程序中"el"和"e3"是表達(dá)式,"s;"是語句,則下列選項(xiàng)中與語句"for<el;;e3>s;"功能等同的語句是_________。<20XX秋選擇題第25題>A.el;while<10>s;e3;B.el;while<10>{s;e3;}C.el;while<10>{e3;s;}D.while<10>{el;s;e3}[解析]本題主要考for循環(huán)的執(zhí)行過程,與while的比較。對(duì)于for,應(yīng)先執(zhí)行e1,只執(zhí)行一次,可以放在循環(huán)前面,不能放循環(huán)體內(nèi)。e3和s的執(zhí)行順序是先執(zhí)行循環(huán)體s,再執(zhí)行e3,C錯(cuò)。若將e3放在循環(huán)體內(nèi),循環(huán)體就有2個(gè)語句,必須用花括號(hào)括起來,A錯(cuò)。[答案]B6.以下程序運(yùn)行時(shí)輸出結(jié)果是___________。<20XX秋閱讀程序第6題>#include<stdio.h>main<>{ints=1,n=235;do{s*=n%10;n/=10;}while<n>;printf<"%d\n",s>;}[解析]本程序求整數(shù)n的各位數(shù)字之乘積。s初值為1,s*=n%10即s=s*n%10,n%10得到n的最低位,與原來的s相乘。n/=10即n=n/10,取整,去掉用過的最低位。這是典型的數(shù)字分離方法。若求n的各位數(shù)字之和,將s的初值置為0,并將乘號(hào)改成加號(hào)。[答案]307.以下程序運(yùn)行時(shí)輸出結(jié)果是___________。<20XX春閱讀程序第6題>#include<stdio.h>voidmain<>{intk=5,n=0;while<k>0>{switch<k>{case1:case3:n+=1;k--;break;default:n=0;k--;case2:case4:n+=2;k--;break;}printf<"%3d",n>;}}[解析]本題的考點(diǎn)是while語句與switch語句。當(dāng)k>0時(shí),執(zhí)行循環(huán)體中的語句。k初值為5,滿足>0的條件,執(zhí)行循環(huán)體。無匹配的case語句,執(zhí)行default后面的語句,n=0,k=4,因?yàn)闊obreak,繼續(xù)執(zhí)行下面的case語句,n=0+2=2,k=3,輸出n的值2。第2次循環(huán),k=3,執(zhí)行n+=1;k--;n為3,k為2,有break,跳出switch,輸出n的值,為3。第3次循環(huán),k=2,執(zhí)行n+=2;k--;break;后n為5,k為1,輸出5。第4次循環(huán),k=1,執(zhí)行n+=1;k--;break;后n為6,k為0,輸出6。此時(shí),k=0,不再滿足k>0的條件,循環(huán)結(jié)束。[答案]23568.以下程序運(yùn)行后的輸出結(jié)果的第一行是______________,第二行是_______________。<20XX春閱讀程序第8題>#include<stdio.h>main<>{inti,a=0,c=2;for<i=0;i<2;i++>switch<++a,a*c>{case1:printf<"1">;case2:printf<"2">;case3:printf<"3\n">;break;default:printf<"other\n">;}}[解析]本題執(zhí)行2次循環(huán)。switch后的括號(hào)中是逗號(hào)表達(dá)式,依次執(zhí)行,并將后面的表達(dá)式的值與case后的常數(shù)進(jìn)行匹配。第一次循環(huán):++a,值為1,a的值也為1,a*c為2,與case2匹配,輸出2,無break,接著輸出3并換行,遇break,跳出switch,進(jìn)行下一次循環(huán)條件的判斷。第二次循環(huán):++a,值為2,a的值也為2,a*c為4,無匹配的case,執(zhí)行default后面的語句,輸出other。[答案]第一行是23,第二行是other3.2.4其他語句1.若程序中已有相應(yīng)的聲明,下列語句中錯(cuò)誤的是_______。<20XX春選擇題第23題>A.printf<i==4?"%6d\n":"%6d",i>;B.i==4?printf<"%6d\n",i>:printf<"%6d",i>;C.for<i=10;;i-->if<i==1>break;D.for<i=10;;>if<i-->;break;[解析]本題的考點(diǎn)是條件表達(dá)式及break語句。選項(xiàng)A中輸出函數(shù)的參數(shù)是一個(gè)條件運(yùn)算符,當(dāng)i為4時(shí)換行輸出i值。選項(xiàng)B的功能與A相同。選項(xiàng)C是for循環(huán),沒有循環(huán)結(jié)束條件,跳出循環(huán)由if語句和break語句實(shí)現(xiàn)。選項(xiàng)D中的if語句只執(zhí)行條件判斷與循環(huán)變量減1的操作,后面是空語句,break語句不在for循環(huán)中,是一個(gè)獨(dú)立的語句,這在C語言中是不允許的。break語句只能用在switch語句和循環(huán)語句中。[答案]D2.以下程序運(yùn)行后輸出結(jié)果中第一行為____________,第二行為______________。<20XX春閱讀程序第9題>#include"stdio.h"voidmain<>{inti=5;do{switch<i%2>{case0:i--;break;case1:i--;continue;}i--;printf<"%d\n",i>;}while<i>0>;}[解析]本題的考點(diǎn)是do-while循環(huán)、switch語句、continue語句。直到型循環(huán),先執(zhí)行循環(huán)體內(nèi)的語句,循環(huán)體內(nèi)有三個(gè)語句:switch、i--、輸出。首先計(jì)算switch后括號(hào)中的i%2,為1,執(zhí)行case1后的i--,i變成4,接著continue結(jié)束本次循環(huán),繼續(xù)下次循環(huán)。再次計(jì)算switch后括號(hào)中的i%2,為0,執(zhí)行case0后的i--,i為3,break語句在switch中,跳出switch,不是跳出循環(huán),接著執(zhí)行循環(huán)內(nèi)switch下面的i--,i變成2,輸出i值,輸出的第一行為2。判斷i>0是否成立,成立,繼續(xù)下次循環(huán)。計(jì)算switch后括號(hào)中的i%2,為0,執(zhí)行case0后的i--,i=1,break后跳出switch,執(zhí)行i--,i為0,輸出i值,第二行的輸出為0。此時(shí),不滿足i>0的條件,循環(huán)結(jié)束。[答案]第一行為2,第二行為0。3.3.1數(shù)組1.以下聲明中錯(cuò)誤的是_________。<20XX秋選擇題第27題>A.inta[2]B.inta[]={0,1}C.inta[3]=0D.inta[3][4]={0}[解析]A定義了一個(gè)長(zhǎng)度為2的數(shù)組a,B在定義數(shù)組a的同時(shí)進(jìn)行了初始化,缺省長(zhǎng)度系統(tǒng)默認(rèn)為2。C在對(duì)數(shù)組初始化時(shí)沒有花括號(hào)。D只對(duì)二維數(shù)組中的第一個(gè)元素a[0][0]進(jìn)行了初始化,其余元素的值都為0。若數(shù)組沒有初始化,數(shù)組元素的值是隨機(jī)數(shù)。[答案]C2.已知有聲明"intm[]={5,4,3,2,1},i=0;",下列對(duì)m數(shù)組元素的引用中,錯(cuò)誤的是____。<20XX秋選擇題第27題>A.m[++i]B.m[5]C.m[2*2]D.m[m[4]][解析]定義數(shù)組m時(shí)進(jìn)行初始化,大括號(hào)中有5個(gè)數(shù)據(jù),數(shù)組長(zhǎng)度為5,其元素分別為m[0]~m[4],不存在m[5],B越界。選項(xiàng)A的m[++i]先將i加1,i為1,即m[1],選項(xiàng)C指m[4]。選項(xiàng)D中,m[4]的值為1,m[m[4]]就是m[1],數(shù)組的下標(biāo)可以為整型表達(dá)式,也可以為整型變量,但聲明的時(shí)候方括號(hào)中的表達(dá)式不能為變量。[答案]B3.下列C語言源程序的錯(cuò)誤中,通常不能在編譯時(shí)發(fā)現(xiàn)的是_____。<20XX秋選擇題第21題>A.括號(hào)不匹配B.非法標(biāo)識(shí)符C.數(shù)組元素下標(biāo)值越界D.程序結(jié)構(gòu)不完整[解析]數(shù)組元素的下標(biāo)越界,系統(tǒng)是不能發(fā)現(xiàn)的,編譯時(shí)不提示錯(cuò)誤,但運(yùn)行結(jié)果會(huì)出錯(cuò)。其余三種情況在編譯時(shí)系統(tǒng)會(huì)提示錯(cuò)誤,等修改正確以后程序才能運(yùn)行。[答案]C4.若有聲明"charss[8]="Red";",則sizeof<ss>的值是_______。<20XX秋選擇題第30題>A.8B.4C.3D.1[解析]sizeof是求字節(jié)數(shù)運(yùn)算符,計(jì)算數(shù)組ss在內(nèi)存中的字節(jié)數(shù),數(shù)組在定義時(shí)長(zhǎng)度為8,所占內(nèi)存為8個(gè)字節(jié),本題計(jì)算的不是字符串長(zhǎng)度,而是數(shù)組的長(zhǎng)度。若將聲明改為"charss[]="Red";",缺省數(shù)組長(zhǎng)度,那么sizeof<ss>的值為字符個(gè)數(shù)3加1,字符串都有一個(gè)結(jié)束標(biāo)志'\0'。若初始化方式為"charss[]={'R','e','d'};",則sizeof<ss>的值為3。[答案]A5.以下程序運(yùn)行時(shí)輸出結(jié)果中第一行是___________,第二行是___________,第三行是___________。<20XX秋閱讀程序第10題>#include<stdio.h>main<>{inti,j,a[3][3]={0};for<i=0;i<3;i++>for<j=0;j<3;j++>switch<i-j+2>{case0:case1:a[i][j]=1;break;case2:a[i][j]=2;break;case3:a[i][j]=3;break;case4:a[i][j]=5;break;}for<i=0;i<3;i++>{for<j=0;j<3;j++>printf<"%4d",a[i][j]>;printf<"\n">;}}[解析]本題通過switch語句對(duì)二維數(shù)組賦值。對(duì)于二維數(shù)組要注意行號(hào)與列號(hào)的變化,一般外循環(huán)表示行號(hào)的變化,內(nèi)循環(huán)表示列號(hào)的變化。每次循環(huán)要計(jì)算switch括號(hào)中表達(dá)式值,根據(jù)該值決定執(zhí)行哪個(gè)case,得出數(shù)組元素的值。最后輸出二維數(shù)組各元素值。i=0:j=0,i-j+2=2,a[0][0]=2;j=1,i-j+2=1,a[0][1]=1;j=2,i-j+2=0,a[0][2]=1i=1:j=0,i-j+2=3,a[1][0]=3;j=1,i-j+2=2,a[1][1]=2;j=2,i-j+2=1,a[1][3]=1i=2:j=0,i-j+2=4,a[2][0]=5;j=1,i-j+2=3,a[2][1]=3;j=2,i-j+2=2,a[2][2]=2[答案]第一行是211,第二行是321,第三行是5326.以下程序運(yùn)行時(shí)輸出到屏幕的結(jié)果第二行是___________,第四行是
___________。<20XX春閱讀程序第11題>#include<stdio.h>#defineN6voidmain<>{inti,j,a[N+1][N+1];for<i=1;i<=N;i++>
{a[i][i]=1;a[i][1]=1;}
for<i=3;i<=N;i++>
for<j=2;j<i;j++>
a[i][j]=a[i-1][j-1]+a[i-1][j];for<i=1;i<=N;i++>{
for<j=1;j<=i;j++>
printf<"%4d",a[i][j]>;
printf<"\n">;}}[解析]本題就是典型的楊輝三角形。注意本題只考慮從1開始的下標(biāo),下標(biāo)為0的不考慮,而且只求矩陣的一半,即斜三角形。第一個(gè)for循環(huán)給數(shù)組每行的最后一個(gè)元素即對(duì)角線元素賦值1,給數(shù)組的每行的第一個(gè)元素賦值1。第二個(gè)for循環(huán)從第三行起,除了第一個(gè)和最后一個(gè)元素,其余元素的值為上一行前一個(gè)元素和上一行同列元素之和。這是根據(jù)a[i][j]=a[i-1][j-1]+a[i-1][j]得出的。最后一個(gè)for循環(huán)輸出楊輝三角形。根據(jù)上述規(guī)律,很快寫出楊輝三角形:11211331寫四行就夠了,因?yàn)轭}目只問到第四行的輸出。[答案]第二行是11,第四行是
13317.以下程序運(yùn)行后輸出結(jié)果中第一行為_____________,第二行為______________,第三行為________________。<20XX春閱讀程序第11題>#include"stdio.h"#defineN3main<>{inta[N][N],b[N*N]={1,1},i,j;for<i=2;i<N*N;i++>b[i]=b[i-1]+b[i-2];for<i=0;i<N;i++>for<j=0;j<N;j++>a[j][i]=b[i*N+j];for<i=0;i<N;I++>{for<j=0;j<N;j++>printf<"%5d",a[i][j]>;printf<"\n">;}}[解析]先生成數(shù)組b,b[i]的值為前2個(gè)元素之和,得到b各元素的值為1,1,2,3,5,8,13,21,34。再將b數(shù)組元素的值賦給數(shù)組a,注意,a是按列的順序進(jìn)行賦值的。將b的前3個(gè)元素值1、1、2賦給a的第0列,接著的3個(gè)3、5、8賦給a的第1列,最后3個(gè)13、21、35賦給a的第2列,a的各元素值為1、3、13、1、5、21、2、8、34。[答案]第一行為1313,第二行為1521,第三行為28348.以下程序運(yùn)行后,輸出結(jié)果的第一行為____________,第二行為_________。<20XX秋閱讀程序第10題>#include<stdio.h>voidmain<>{chars[]="efgefgef",t[]="efg";inti,j,k;for<i=strlen<s>-strlen<t>;i>=0;i-->{for<j=i,k=0;s[j]==t[k]&&t[k]!='\0';j++,k++>;if<t[k]=='\0'>printf<"%d\n",i>;}}[解析]本程序的功能是從后往前找子串。函數(shù)strlen求字符串實(shí)際長(zhǎng)度,s的長(zhǎng)度為8,t的長(zhǎng)度為3,i的初值為8-3=5。從s的第5個(gè)字符開始,即倒數(shù)第3個(gè)開始,與t比較,若連續(xù)3個(gè)字符都相等,則輸出i的值。執(zhí)行下次循環(huán),i減1,即s往前移一個(gè)字符,繼續(xù)比較,找到相等的輸出s下標(biāo)i。本題當(dāng)i=3時(shí)和i=0時(shí)s的連續(xù)3個(gè)字符與t的字符相等。[答案]第一行為3,第二行為09.以下程序運(yùn)行時(shí)輸出結(jié)果中第一行是___________,第三行是___________。<20XX春閱讀程序第9題>#include<stdio.h>defineN5voidmain<>{staticchara[N][N];inti,j,t,start=0,end=N-1;charstr[]="123",ch;for<t=0;t<=N/2;t++>{ch=str[t];for<i=j=start;i<end;i++>a[i][j]=ch;for<j=start;j<end;j++>a[i][j]=ch;for<i=end;i>start;i-->a[i][j]=ch;for<j=end;j>start;j-->a[i][j]=ch;if<start==end>a[start][end]=ch;start++,end--;}for<i=0;i<N;i++>{for<j=0;j<N;j++>printf<"%c",a[i][j]>;printf<"\n">;}}[解析]本程序?qū)⒁痪S數(shù)組str的三個(gè)元素值'1'、'2'、'3'中的一個(gè)賦給一個(gè)5*5的二維數(shù)組。最后輸出的二維數(shù)組是%c格式,字符'1'的輸出就是1。第1個(gè)外循環(huán)是將外圍元素置為'1':第1個(gè)內(nèi)循環(huán)置a[0][0],a[1][0],a[2][0],a[3][0]為'1'第2個(gè)內(nèi)循環(huán)置a[4][0],a[4][1],a[4][2],a[4][3]為'1'第3個(gè)內(nèi)循環(huán)置a[4][4],a[3][4],a[2][4],a[1][4]為'1'第4個(gè)內(nèi)循環(huán)置a[0][4],a[0][3],a[0][2],a[0][1]為'1'可見,是從a[0][0]開始按逆時(shí)針方向進(jìn)行賦值。第2個(gè)外循環(huán)是將第二層元素置為'2':從a[1][1]開始也是按逆時(shí)針方向進(jìn)行賦值。第3個(gè)外循環(huán)只執(zhí)行if語句,將最后一個(gè)中間的元素a[2][2]置為'3'。最后得到的數(shù)組為:"11111","12221","12321","12221","11111"。[答案]第一行是11111,第三行是123213.3.2結(jié)構(gòu)體變量和結(jié)構(gòu)體數(shù)組1.以下結(jié)構(gòu)變量stu1的聲明中,錯(cuò)誤的是________。<20XX春選擇題第30題>A.typedefstructstu{charname[10];floatscore;}STU;STUstu1;B.#defineSTUstructstuSTU{charname[10];;floatscore;}stu1;C.structstu{charname[10];floatscore;}stu1;D.structstu{charname[10];floatscore;}STU;STUstu1;[解析]A用typedef給結(jié)構(gòu)體類型名起了一個(gè)別名STU,然后用類型名STU定義變量stu1,等價(jià)于structstustu1;。B用宏定義的方式將宏名STU替代字符串structstu,以后只要是STU全都用structstu替代。C在定義結(jié)構(gòu)體類型名的同時(shí)定義了結(jié)構(gòu)體變量名,是最常用的定義方式,其中的類型名stu也可缺省。D中定義結(jié)構(gòu)體類型stu的同時(shí)定義了一個(gè)結(jié)構(gòu)體變量STU,此處STU是變量名,不是類型名,后面的STUstu1;是錯(cuò)誤的。[答案]D2.以下程序運(yùn)行時(shí)輸出到屏幕的結(jié)果第一行是________,第二行是________。<20XX秋閱讀程序第14題>#include<stdio.h>typedefstructfact{intm,z;}FACT;FACTfun1<FACTt1,FACTt2>{FACTt3;t3.m=t1.m*t2.m;t3.z=t1.z*t2.m+t2.z*t1.m;returnt3;}FACTfun2<FACTt>{intm,n,k;m=t.m;n=t.z;while<k=m%n>{m=n;n=k;}t.m=t.m/n;t.z=t.z/n;returnt;}voidmain<>{FACTs,s1={8,4},s2={6,5};s=fun1<s1,s2>;printf<"%d,%d\n",s.z,s.m>;s=fun2<s>;printf<"%d,%d",s.z,s.m>;}[解析]函數(shù)fun1根據(jù)t1和t2的值計(jì)算結(jié)構(gòu)體變量t3的值并返回。函數(shù)fun2的功能是求最大公約數(shù)。注意輸出順序,將先計(jì)算得到的后輸出。t3.m=t1.m*t2.m=8*6=48t3.z=t1.z*t2.m+t2.z*t1.m;=4*6+5*8=64s={48,64},作為fun2的實(shí)際參數(shù)傳給t,求48與64的最大公約數(shù),為16,最后得到t.m=48/16=3,t.z=64/16=4。[答案]第一行是64,48,第二行是4,33.以下程序運(yùn)行時(shí)輸出至到屏幕的結(jié)果第一行是_________,第二行是_________。<20XX春閱讀程序第13題>#include<stdio.h>typedefstruct{intx,y;}direction;intvisible<directions,directionA,directionB,directionC>{directionp1,p2;
intd;
p1.x=B.x-A.x;
p1.y=B.y-A.y;
p2.x=C.x-A.x;
p2.y=C.y-A.y;
d=s.x*p1.x*p2.x+s.y*p1.y*p2.y;
printf<"%4d\n",d>;
returnd>0;}voidmain<>{char*ss[]={"invisible","visible"};
directions={1,1},T={1,1},A={0,0},B={2,1};
puts<ss[visible<s,T,A,B>]>;
}[解析]direction是結(jié)構(gòu)體類型名,屬于該結(jié)構(gòu)體類型的變量都有2個(gè)成員,主函數(shù)中初始化了4個(gè)結(jié)構(gòu)體變量,通過函數(shù)調(diào)用進(jìn)行輸出。子函數(shù)中的return語句返回一個(gè)邏輯值,其值為0或1,返回的0或者1是數(shù)組ss的下標(biāo),決定最后輸出的是ss[0]還是ss[1]。現(xiàn)在主要的任務(wù)是求visible<s,T,A,B>的值,將四個(gè)參數(shù)分別傳給子函數(shù)visible,得:s.x=1,s.y=1;A.x=1,A.y=1;B.x=0,B.y=0;C.x=2,C.y=1計(jì)算:p1.x=B.x-A.x=0-1=-1p1.y=B.y-A.y=0-1=-1p2.x=C.x-A.x=2-1=1
p2.y=C.y-A.y=1-1=0d=s.x*p1.x*p2.x+s.y*p1.y*p2.y=1*<-1>*1+1*<-1>*0=-1所以,輸出d的值為-1。返回d>0,因?yàn)閐為-1故d>0不成立,返回的值為0。ss的下標(biāo)為子函數(shù)的返回值0。最后執(zhí)行puts<ss[0]>,輸出的是前面的那個(gè)字符串"invisible"。[答案]第一行是-1,第二行是invisible4.程序功能:選票統(tǒng)計(jì)。二維數(shù)組s中保存了投票后10張有效選票上所填寫的候選人姓名,結(jié)構(gòu)數(shù)組stat中保存統(tǒng)計(jì)結(jié)果。程序運(yùn)行后的輸出結(jié)果是"liu:2wang:5zhao:3"。<20XX秋完善程序第15題>#include<stdio.h>#include<string.h>typedefstruct{charname[20];/*候選人姓名*/intcount;/*候選人得票數(shù)*/}COUNT;intcount<charx[][20],intn,_________________>{inti,j,k=0;/*k表示被選中的人數(shù)*/for<i=0;______________;i++>/*n張選票,循環(huán)n次*/{for<j=0;j<k;j++>if<strcmp<st[j].name,x[i]>==0>{__________________;break;}if<j>=k>{___________________;st[k].count++;k++;}}returnk;}main<>{chars[10][20]={"liu","wang","zhao","zhao","wang","liu","wang","zhao","wang","wang"};COUNTstat[5]={0};inti,n;n=count<s,10,stat>;for<i=0;i<n;i++>printf<"%s:%d\t",stat[i].name,stat[i].count>;}[解析]第一空填的是形式參數(shù),根據(jù)實(shí)際參數(shù)填,實(shí)際參數(shù)對(duì)應(yīng)位置為stat,是數(shù)組名,該數(shù)組屬于COUNT類型,第一空填數(shù)組類型及數(shù)組名,同時(shí)中括號(hào)不能漏掉。數(shù)組類型為COUNT,數(shù)組名是函數(shù)中用到的st。第二空填的是循環(huán)結(jié)束條件,i從0開始,i為多少結(jié)束,是循環(huán)次數(shù),本題是10次,這在main函數(shù)的實(shí)際參數(shù)的中間這個(gè)數(shù)體現(xiàn)出來,對(duì)應(yīng)的形式參數(shù)為n,填i<n。第三空是計(jì)數(shù),若為某個(gè)姓名,則相應(yīng)變量的值增1。第四空若票的姓名第一次出現(xiàn),用strcpy將該姓名復(fù)制到結(jié)構(gòu)體數(shù)組的一個(gè)成員中。[答案]第一空COUNTst[],第二空i<n,第三空st[j].count++,第四空strcpy<st[k].name,x[i]>3.4.1非遞歸函數(shù)的定義、聲明、調(diào)用及執(zhí)行過程1.以下選項(xiàng)均為fun函數(shù)定義的頭部,其中錯(cuò)誤的是____。<20XX春選擇題第29題>A.intfun<intx,inty[]>B.intfun<intx,inty[x]>C.intfun<intx,inty[3]>D.intfun<intx,int*y>[解析]數(shù)組作為函數(shù)的參數(shù)時(shí),可以只寫數(shù)組名及中括號(hào),中括號(hào)中的下標(biāo)可以有也可以沒有,也可以將數(shù)組表示成指針的形式,所以A、C、D都是正確的形式。B的問題是y數(shù)組的下標(biāo)用了動(dòng)態(tài)的變量。[答案]B2.若已定義一個(gè)有返回值的函數(shù),則以下關(guān)于調(diào)用該函數(shù)的敘述中錯(cuò)誤的是_____。<20XX春選擇題第28題>A.函數(shù)調(diào)用可以作為獨(dú)立的語句存在B.函數(shù)調(diào)用可以出現(xiàn)在表達(dá)式中C.函數(shù)調(diào)用可以作為一個(gè)函數(shù)實(shí)參D.函數(shù)調(diào)用可以作為一個(gè)函數(shù)形參[解析]函數(shù)調(diào)用語句由函數(shù)名、實(shí)參加分號(hào)";"組成,A正確。函數(shù)有返回值,函數(shù)調(diào)用可以作為表達(dá)式的一部分,可以作為函數(shù)的實(shí)參但不能作為形參。[答案]D3.以下程序運(yùn)行后輸出結(jié)果中第一行為_________,第二行為____________。<20XX春閱讀程序第10題>#include<stdio.h>intfun<inta[],intn,intb[]>{inti=0,j,m=0,c,x;for<i=0;i<n;i++>{x=a[i];c=1;for<j=i+1;j<n;j++>if<a[j]==x>c++;else{i=j-1;break;}if<j>=n>i=j;if<c==1>b[m++]=x;else{b[m++]=-c;b[m++]=x;}}returnm;}voidmain<>{intx[]={4,4,4,4,4,4,4,4,1,2},y[10],i,j,n=10;n=fun<x,n,y>;for<i=0;i<n;i++>{if<i%2==0>printf<"\n">;printf<"%5d",y[i]>;}}[解析]本題是求數(shù)組y,y根據(jù)數(shù)組x的情況得到,返回y的元素個(gè)數(shù)。本題要注意的是i的變化,i除了作為循環(huán)變量改變外還有在內(nèi)循環(huán)中對(duì)i的賦值語句。第1次外循環(huán):i=0,x=a[0]=4,c=1。內(nèi)循環(huán)是計(jì)算與a[0]元素相等的元素的個(gè)數(shù),共8個(gè),c=8,j=8,接著的內(nèi)循環(huán)因?yàn)閳?zhí)行else語句,i變?yōu)?,跳出內(nèi)循環(huán),執(zhí)行外循環(huán)下面的語句,將-c的值-8賦給b[0],x的值4賦給b[1],再執(zhí)行i++改變循環(huán)變量,i為8。第2次外循環(huán):i=8,x=a[8]=1,c=1,內(nèi)循環(huán)因?yàn)閍[8]后面的a[9]不為1,所以執(zhí)行else語句,i=j-1=8,跳出內(nèi)循環(huán)。c為1,將x賦給b[3],b[3]為1。此時(shí)執(zhí)行i++,i=9,進(jìn)行第3次循環(huán)是否執(zhí)行的判斷。第3次外循環(huán)與第2次類似,將a[9]的值2賦給b[4],循環(huán)結(jié)束。主函數(shù)輸出y數(shù)組各元素的值,輸2個(gè)換行。[答案]第一行為-84,第二行為124.以下程序運(yùn)行時(shí),若在鍵盤上輸入2<Enter>,則輸出是______________若在鍵盤輸入i<Enter>,則輸出是______________。<20XX春閱讀程序第13題>#include<stdio.h>#include<string.h>intstrch<char*s,charch>{inti;for<i=strlen<s>;i>=0;i-->if<s[i-1]==ch>returni;if<i<0>return0;}main<>{charch,s1[]="as123d2nfghjkm";intk;printf<"inputch:">;ch=getchar<>;k=strch<s1,ch>;if<k!=0>printf<"k=%d\n",k>;elseprintf<"notfound\n">;}[解析]本程序的功能是在字符串中查找字符,從字符串的末尾往前找某字符。如果鍵盤輸入2,將2與s1中的最后一個(gè)字符比較,不同,再往前一個(gè),直到找到相同的為止,返回的i是從后往前數(shù)的字符數(shù),從0開始算,找到最后找不到返回0。子函數(shù)中的形參*s可以看做s[],strlen函數(shù)的功能是求字符串的實(shí)際長(zhǎng)度。[答案]輸入2<Enter>則輸出k=7;輸入i<Enter>則輸出notfound。3.4.2函數(shù)調(diào)用時(shí)參數(shù)的傳遞1.若函數(shù)調(diào)用時(shí)的實(shí)參為變量,則以下關(guān)于函數(shù)形參和實(shí)參的敘述中正確的是____。<20XX秋選擇題第29題>A.實(shí)參和其對(duì)應(yīng)的形參占用同一存儲(chǔ)單元B.形參不占用存儲(chǔ)單元C.同名的實(shí)參和形參占用同一存儲(chǔ)單元D.形參和實(shí)參占用不同的存儲(chǔ)單元[解析]實(shí)參若為變量,傳遞的是值,與形參占用各自的內(nèi)存空間。就是同名的實(shí)參與形參也是占用不同的空間。形參在函數(shù)調(diào)用的時(shí)候給其分配內(nèi)存,調(diào)用結(jié)束系統(tǒng)收回內(nèi)存。實(shí)參若是數(shù)組,傳遞的是地址,實(shí)參和其對(duì)應(yīng)的形參共享內(nèi)存空間。[答案]D2.以下程序運(yùn)行后的輸出結(jié)果是______________。<20XX春閱讀程序第7題>#include<stdio.h>intfun<intw1,intw2>{returnw2-w1;}main<>{intw=1,k;k=fun<fun<w+1,w>,w>;printf<"%d\n",k>;}[解析]本題是函數(shù)的嵌套調(diào)用,盡管嵌套調(diào)用了自己,但是不能算遞歸。因?yàn)檫f歸調(diào)用有一個(gè)遞歸結(jié)束終止條件的,本調(diào)用不存在,只能算嵌套調(diào)用。先計(jì)算里面fun函數(shù)的參數(shù),fun<w+1,w>即fun<2,1>,將2傳給w1,1傳給w2,返回1-2=-1,所以外面的那個(gè)fun函數(shù)的參數(shù)fun<w+1,w>為-1,再次調(diào)用,即fun<-1,1>,返回1-<-1>=2。[答案]23.以下程序運(yùn)行時(shí)輸出結(jié)果是___________。<20XX春閱讀程序第8題>#include<stdio.h>intf<intx,inty>{returnx+y;}voidmain<>{doublea=5.5,b=2.5;printf<"%d",f<a,b>>;}[解析]本題的考點(diǎn)是不同類型的參數(shù)傳遞。將實(shí)數(shù)5.5傳給形參x,截取整數(shù)部分,為5,同樣y為2,返回整數(shù)x、y的和,為5+2=7,主函數(shù)"%d"格式輸出返回值,為整數(shù)7。如果要求按"%f"格式輸出,則結(jié)果應(yīng)為7.0。[答案]74.以下程序運(yùn)行時(shí)輸出到屏幕的結(jié)果是___________
。<20XX春閱讀程序第8題>#include<stdio.h>voidswap<inta,intb>{intt;
if<a>b>t=a,a=b,b=t;}voidmain<>{intx=13,y=11,z=12;
if<x>y>swap<x,y>;
if<x>z>swap<x,z>;
if<y>z>swap<y,z>;printf<"%d\t%d\t%d\n",x,y,z>;}[解析]函數(shù)swap的功能是當(dāng)a>b時(shí),實(shí)現(xiàn)兩個(gè)變量的值的交換,if后面是逗號(hào)表達(dá)式,盡管沒有花括號(hào),但認(rèn)為是一個(gè)語句,依次執(zhí)行每個(gè)賦值語句。因?yàn)闆]有返回語句,而且函數(shù)的值是單向傳遞的,主函數(shù)中的x,y,z的值沒有交換。[答案]1311125.以下程序運(yùn)行后的輸出結(jié)果是______________。<20XX秋題閱讀程序第7題>#include<stdio.h>voidfun<intx,inty,int*z>{y=x*x;*z=x*x*x;}voidmain<>{inta=2,b=0,c=0;fun<a,b,&c>;printf<"%d%d%d",a,b,c>;}[解析]本題的考點(diǎn)是參數(shù)的傳遞。a和b的值不變,實(shí)參a和b傳給子函數(shù)的形參x和y,是值傳遞,單向的,x和y的值改變了,不影響主函數(shù)中a和b的值,它們分別占用自己的內(nèi)存空間。而c傳給z的是地址,是地址傳遞,雙向的,z指向的地址單元的值改變,c也改變,z為x*x*x=2*2*2=8,c是8。[答案]2086.以下程序運(yùn)行時(shí)輸出到屏幕的結(jié)果中第一行是________,第二行是________。<20XX秋閱讀程序第8題>#
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 下半造價(jià)師工程計(jì)價(jià)知識(shí)點(diǎn)缺陷責(zé)任期考試試題
- 公開課英語單詞快速記憶
- 高中語文第3單元古思今賞第8課寡人之于國也課件新人教版必修
- 窗簾布藝:團(tuán)隊(duì)卓越之旅-項(xiàng)目管理能力與團(tuán)隊(duì)合作精進(jìn)之路
- 獨(dú)樹一幟的中國畫 課件 2024-2025學(xué)年人教版初中美術(shù)九年級(jí)上冊(cè)
- 高中語文10蜀道難登高課件蘇教版必修
- 2024至2030年中國控天線彈簧數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024至2030年中國引線式石英晶體振蕩器行業(yè)投資前景及策略咨詢研究報(bào)告
- 2024至2030年中國差速器十字軸行業(yè)投資前景及策略咨詢研究報(bào)告
- 2024至2030年中國大小鼠灌胃針行業(yè)投資前景及策略咨詢研究報(bào)告
- 武漢市企業(yè)(單位)就業(yè)人員登記冊(cè)
- 綱要上第12課遼宋夏金元的文化-課件(共32張PPT)
- (完整版)2017年上海高三語文一模匯編·文言文二
- 廣播電視經(jīng)營(yíng)管理完整版課件
- Q∕SY 01013-2017 氣田集輸系統(tǒng)水合物防治技術(shù)規(guī)范
- 2017年8月10日公安部遴選面試真題及答案解析(上午卷)
- 冀教版九年級(jí)上冊(cè)英語課件 Unit4 寫作能力提升練
- 藍(lán)色商務(wù)風(fēng)科研科技產(chǎn)品介紹PPT模板
- 培智生活語文一年級(jí)上冊(cè) 5 男生 女生 課件
- GB∕T 41426-2022 牙科學(xué) 一體式手柄牙線
- 【SY石油行業(yè)標(biāo)準(zhǔn)】SY-T 5862-1993 驅(qū)油用丙烯酰胺類聚合物性能測(cè)定
評(píng)論
0/150
提交評(píng)論