版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
新視野教育二級(jí)C語(yǔ)言教程課后習(xí)題詳解
(以修訂版教材為準(zhǔn))
第一章c語(yǔ)言的基礎(chǔ)知識(shí)
第二節(jié)熟悉VisualC++
LC語(yǔ)言源程序名的后綴是B
A).exeB).cC).objD).cp
*C語(yǔ)言源程序的拓展名為.C
2.下列敘述中錯(cuò)誤的是D
A)計(jì)算機(jī)不能直接執(zhí)行用C語(yǔ)言編寫的源程序
B)C程序經(jīng)C編譯后,生成后綴為.obj的文件是一個(gè)二進(jìn)制文件
C)后綴為.obj的文件,經(jīng)連接程序生成后綴為.exe的文件是一個(gè)二進(jìn)制文件
D)后綴為.obj和.exe的二進(jìn)制文件都可以直接運(yùn)行
*后綴為.obj的目標(biāo)文件不能直接運(yùn)行
3.用C語(yǔ)言編寫的代碼程序B
A)可立即執(zhí)行B)是一個(gè)源程序
C)經(jīng)過(guò)編譯即可執(zhí)行D)經(jīng)過(guò)編譯解釋才能執(zhí)行
第三節(jié)標(biāo)識(shí)符
1.按照C語(yǔ)言規(guī)定的用戶標(biāo)識(shí)符命名規(guī)則,不能出現(xiàn)在標(biāo)識(shí)符中的是B
A)大寫字母B)連接符C)數(shù)字字符D)下劃線
*標(biāo)識(shí)符的命名中不能出現(xiàn)連接符
2.以下選項(xiàng)中不合法的標(biāo)識(shí)符是C
A)printB)FORC)&aD)_00
*標(biāo)識(shí)符中不能出現(xiàn)“&”
3.以下敘述中錯(cuò)誤的是A
A)用戶所定義的標(biāo)識(shí)符允許使用關(guān)鍵字
B)用戶所定義的標(biāo)識(shí)符應(yīng)盡量做到“見(jiàn)名知意”
C)用戶所定義的標(biāo)識(shí)符必須以字母或下劃線開(kāi)頭
D)用戶定義的標(biāo)識(shí)符中,大、小寫字母代表不同標(biāo)識(shí)
*用戶自定義標(biāo)識(shí)符不允許使用關(guān)鍵字
4.可在C程序中用作用戶標(biāo)識(shí)符的一組標(biāo)識(shí)符是A
A)andB)DateC)HiD)case
_2007y-m-dDr.TomBigl
*B答案出現(xiàn)了連接符、C答案出現(xiàn)小數(shù)點(diǎn)、D答案出現(xiàn)關(guān)鍵字
5.以下不合法的用戶標(biāo)識(shí)符是C
A)j2_KEYB)DoubleC)4dD)_8_
*開(kāi)頭第一個(gè)字符不能為數(shù)字
6.以下不能定義為用戶標(biāo)識(shí)符的是D
A)MainB)_0C)_intD)sizeof
*sizeof為關(guān)鍵字
7.下列選項(xiàng)中,不能用作標(biāo)識(shí)符的是D
A)」234_B)_1_2C)int_2_D)2_int_
*開(kāi)頭第一個(gè)字符不能為數(shù)字
8.以下4組用戶定義標(biāo)識(shí)符中,全部合法的一組是A
A)_mainB)IfC)txtD)int
enclude-maxREALk_2
sinturbo3C0M_001
*B答案出現(xiàn)連接符、C答案出現(xiàn)數(shù)字開(kāi)頭、D答案出現(xiàn)關(guān)鍵字
第五節(jié)整數(shù)和實(shí)數(shù)
1.以下選項(xiàng)中正確的整型常量是C
A)10110BB)0386C)OXffaD)x2a2
2.以下關(guān)于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是D
A)均占4個(gè)字節(jié)B)根據(jù)數(shù)據(jù)的大小來(lái)決定所占內(nèi)存的字節(jié)數(shù)
C)由用戶自己定義D)由C語(yǔ)言編譯系統(tǒng)決定
3.以下選項(xiàng)中不屬于C語(yǔ)言的類型的是D
A)signedshortintB)unsignedIon】jint
C)unsignedintD)longshort
4.以下選項(xiàng)中合法的實(shí)型常數(shù)是C
A)5E2.0B)E-3C).2E0D)1.3E
5.以下選項(xiàng)中,不能作為合法常量的是B
A)1.234e04B)1.234e0.4C)1.234e+4D)1.234e0
6.以下選項(xiàng)中可作為C語(yǔ)言合法常量的是A
A)-80.B)-080C)~8el.OD)—80.0e
7.以下符合C語(yǔ)言語(yǔ)法的實(shí)型常量是C
A)1.2E0.5B)3.14.159EC).5E-3D)E15
8.以下不合法的數(shù)值常量是C
A)OilB)leiC)8.0E0.5D)Oxabcd
9.以下選項(xiàng)中,合法的一組C語(yǔ)言數(shù)值常量是B
A)028B)12.C).177D)0x8A
5e-3OXa234c1.510,000
—Oxf4.5e0Oabc3.e5
10.下列定義變量的語(yǔ)句錯(cuò)誤的是D
A)int_int;B)doubleint_;C)longFor;D)floatUS$;
第六節(jié)算術(shù)表達(dá)式與賦值表達(dá)式
習(xí)題
1.表達(dá)式3.6—5/2+1.2+5%2的值是D
A)4.3B)4.8C)3.3D)3.8
*3.6-2+1.2+1=3.8
2.設(shè)有定義:floatx=123.4567;,則執(zhí)行以下語(yǔ)句后輸出的結(jié)果是o123.460000
printf("%f\n",(int)(x*100+0.5)/100.0);
*(int)12346.17/100.0=12346/100.0=123.46格式控制為“%f”
3.設(shè)有定義:floata=2,b=4,h=3;,以下C語(yǔ)言表達(dá)式與代數(shù)式Xh計(jì)算結(jié)果不相符的是B
A)(a+b)*h/2B)(l/2)*(a+b)*h
C)(a+b)*h*l/2D)h/2*(a+b)
*因?yàn)?/2=0,故B答案結(jié)果不相符
第七節(jié)自加自減運(yùn)算符、逗號(hào)表達(dá)式
習(xí)題
1.設(shè)變量已正確定義為整型,貝悚達(dá)式n=i=2,++i,i++的值為o3
*表達(dá)式3的值為整個(gè)表達(dá)式的值
2.設(shè)有定義:intk=0;,以下選項(xiàng)的4個(gè)表達(dá)式中與其他3個(gè)表達(dá)式的值不相同的是A
A)k++B)k+=lC)++kD)k+1
*執(zhí)行k++,表達(dá)式的值為k自加之前的值0
3.有以下程序B
main()
(
charal='M',a2='m';
printf("%c\n",(al,a2));
)
以下敘述中正確的是
A)程序輸出大寫字母MB)程序輸出小寫字母m
C)格式說(shuō)明符不足,編譯出錯(cuò)D)程序運(yùn)行時(shí)產(chǎn)生出錯(cuò)信息
*逗號(hào)表達(dá)式的值為最后一個(gè)表達(dá)式的值
4.有以下程序:B
main()
{inta=O,b=O;
a=10;/*給a賦值
b=20;給b賦值*/
printf("a+b=%d\n",a+b);/*輸出計(jì)算結(jié)果*/
)
程序運(yùn)行后的結(jié)果是
A)a+b=30B)a+b=10C)30D)程序出錯(cuò)
*本題要注意的是注釋部分應(yīng)該包括:/*給a賦值b=20;給b賦值*/,也就是說(shuō)“b=20
也被系統(tǒng)作為注釋處理
第八節(jié)字符
1.以下選項(xiàng)中不屬于字符常量的是()。B
A),CB)"C"C)'O'D)、072'
2.已知字母A的ASCH代碼值為65,若變量kk為char型,以下不能正確判斷出kk中的值為大寫字母
的表達(dá)式是()。B
A)kk>='A'&&kk<='Z'B)!(kk>='A'IIkk<='Z')
C)(kk+32)>='a'&&(kk+32)<='z'D)kk>=65&&kk<91
3.已知字符A的ASCH代碼值是65,字符變量cl的值是A,c2的值是'D。執(zhí)行語(yǔ)句printf("%d,%d”,cl,c2-2);
后,輸出結(jié)果是()。C
A)A,BB)A,68C)65,66D)65,68
4、以下不合法的字符型常量是B
A)M13'B)'018'C)'65'D)
5.已知大寫字母A的ASCII碼是65,小寫字母a的ASCH碼是97,以下不能將變量c中大寫字母轉(zhuǎn)換
為對(duì)應(yīng)小寫字母的語(yǔ)句是()。D
A)c=c-Z+'z'B)c=c+32
C)c=c-'A'+'a'D)c='A'+c-'a'
第九節(jié)位運(yùn)算
1.變量a中的數(shù)據(jù)用二進(jìn)制表示的形式是01011101,變量b中的數(shù)據(jù)用二進(jìn)制表示的形式是11110000。
若要求將a的高4位取反,低4位不變,所要執(zhí)行的運(yùn)算是A
A)aAbB)albC)a&bD)a?4
2.有以下程序
#include<stdio.h>
main()
(
inta=l,b=2,c=3,x;
x=(aAb)&c;printf(u%d\nH,x);
程序的運(yùn)行結(jié)果是D
A)0B)1C)2D)3
3.有以下程序
main()
(
unsignedchara=2,b=4,c=5,d;
d=alb;d&=c;printf(,'%d\n',,d);
)
程序運(yùn)行后的輸出結(jié)果是B
A)3B)4C)5D)6
4.若變量已正確定義,則以下語(yǔ)句的輸出結(jié)果是()oB
s=32;s八=32;printf(n%d",s);
A)-1B)0C)1D)32
*兩個(gè)相同的數(shù)進(jìn)行按位異或,結(jié)果為0
5.設(shè)有以下語(yǔ)句
inta=l,b=2,c;
c=aA(b?2);
執(zhí)行后,C的值為D
A)6B)7C)8D)9
第二章數(shù)據(jù)輸出與輸入
第二節(jié)數(shù)據(jù)輸出
1.有以下程序段
charch;
intk;
ch='a,;
k=12;
printf(n%c,%d,n,ch,ch,k);
printf("k=%d\nn,k);
已知字符a的ASCH十進(jìn)制代碼為97,則執(zhí)行上述程序段后輸出結(jié)果是D
A)因變量類型與格式描述符的類型不匹配輸出無(wú)定值
B)輸出項(xiàng)與格式描述符個(gè)數(shù)不符,輸出為零值或不定值
C)a,97,12k=12
D)a,97,k=12
2、有以下程序段:
main()
{intx,y,z;
x=y=l;
z=x++,y++,++y;
printf("%d,%d,%d\n”,x,y,z);
程序運(yùn)行后的輸出結(jié)果是C
A)2,3,3B)2,3,2C)2,3,1D)2,2,1
*分析過(guò)程見(jiàn)教材25頁(yè)例3
3.有以卜程序,其中%u表示按無(wú)符號(hào)整數(shù)輸出
main()
(
unsignedshortx=0xFFFF;/*x的初值為十六進(jìn)制數(shù)*/
printf("%u\n",x);
)
程序運(yùn)行后的輸出結(jié)果是B
A)-1B)65535C)32767D)0XFFFF
4.以下敘述中不正確的是A
A)調(diào)用printf函數(shù)時(shí),必須要有輸出項(xiàng)
B)使用putchar函數(shù)時(shí),必須在之前包含頭文件stdio.h
C)在C語(yǔ)言中,整數(shù)可以以十進(jìn)制、八進(jìn)制或十六進(jìn)制的形式輸出
D)使用putchar函數(shù)可以不要輸出項(xiàng)
5.設(shè)有以下程序
main()
(
intc=35;printf("%d",c&c);
)
程序運(yùn)行后的輸出結(jié)果是C
A)0B)70C)35D)53
*兩個(gè)相同的數(shù)進(jìn)行按位與時(shí),結(jié)果等于本身
6.以下程序運(yùn)行后的輸出結(jié)果是.88
main()
(
intx=0210;printf("%X\n",x);
)
*將八進(jìn)制數(shù)轉(zhuǎn)為十六進(jìn)制數(shù)輸出
第三節(jié)數(shù)據(jù)輸入
1.以下程序運(yùn)行時(shí)若從鍵盤輸入:102030〈回車輸出結(jié)果是—oA
#include<stdio.h>
main()
(
inti=O,j=O,k=O;
scanf(n%d%*d%dn,&i,&j,&k);
printf(n%d,%d,%d",i,j,k);
A)10,30,0B)10,20,30C)0,0,0D)程序出錯(cuò)
*注意%*d為跳過(guò)輸入的數(shù)據(jù)
2.已知字符A的ASCII代碼值為65,以下程序運(yùn)行時(shí)若從鍵盤輸入:B33〈回車>。輸出結(jié)果是B
#include"stdio.h"
main()
(
chara,b;
a=getchar();scanf("%d",&b);
a=a-'A'+'O';
b=b*2;
printf("%c%c”,a,b);
)
A)程序段有語(yǔ)法錯(cuò)B)1BC)165D)1b
*a=a-'A'+'O';即a=66-65+48b=b*2;即b=33*2得出結(jié)果后找到對(duì)應(yīng)的字符輸出
3.有以下程序
main()
(
intm=0256,n=256;
printf("%o%o\n",m,n);
)
程序運(yùn)行后的輸出結(jié)果是()o
A)02560400B)0256256C)256400D)400400
*m為八進(jìn)制數(shù)n為十進(jìn)制數(shù)%0指輸出八進(jìn)制數(shù)輸出足不帶前導(dǎo)
4.有以下程序
main()
(
inta=666,b=888;
printf("%d\n",a,b);
)
程序運(yùn)行后的輸出結(jié)果是()oB
A)錯(cuò)誤信息B)666C)888D)666,888
*%d只與輸出列表中的變量a對(duì)應(yīng),注意區(qū)別printf("%d\n”,(a,b));
5.設(shè)有以下程序
main()
(
intx=102,y=012;
printf("%2d,%d\n",x,y);
執(zhí)行后輸出結(jié)果是C
A)10,01B)02,12C)102,10D)02,10
*%d為輸出十進(jìn)制整數(shù),所以要將八進(jìn)制轉(zhuǎn)為十進(jìn)制
6.執(zhí)行以下程序時(shí)輸入1234567vCR>,則輸出結(jié)果是o1234
#include<stdio.h>
main()
(
inta=l,b;
scanf(u%2d%2d",&a,&b);printf("%d%d\nn,a,b);
第三章選擇結(jié)構(gòu)
第一節(jié)關(guān)系運(yùn)算與邏輯運(yùn)算
1.已知字母A的ASCH代碼值為65,若變量kk為char型,以下不能正確判斷出kk中的值為大寫字母
的表達(dá)式是B
A)kk>='A'&&kk<='Z'B)!(kk>='A'IIkk<='Z')
C)(kk+32)>='a'&&(kk+32)v='z'D)isalpha(kk)&&(kk<91)
*isalpha(kk)檢查kk是否為字母,是,返回1,否,返回0
2.當(dāng)變量c的值不為2、4、6時(shí),值也為“真”的表達(dá)式是B
A)(c=2)II(c==4)II(c==6)B)(c>=2&&cv=6)II(c!=3)II(c!=5)
C)(c>=2&&c<=6)&&!(c%2)D)(c>=2&&c<=6)&&(c%2!=1)
3.以下選項(xiàng)中,當(dāng)x為大于1的奇數(shù)時(shí),值為0的表達(dá)式D
A)x%2==lB)x/2C)x%2!=0D)x%2==0
4.以下關(guān)于邏輯運(yùn)算符兩側(cè)運(yùn)算對(duì)象的敘述中正確的是(D
A)只能是整數(shù)0和1B)只能是整數(shù)0或非0整數(shù)
C)可以是結(jié)構(gòu)體類型的數(shù)據(jù)D)可以是任意合法的表達(dá)式
5.設(shè)有定義:intk=l,m=2;floatf=7;,則以下選項(xiàng)中錯(cuò)誤的表達(dá)式是C
A)k=k>=kB)-k++C)k%int(f)D)k>=f>=m
*強(qiáng)制類型轉(zhuǎn)換的格式必須為:(類型名)表達(dá)式
6.設(shè)有定義:inta=2,b=3,c=4;,則以下選項(xiàng)中值為0的表達(dá)式是A
A)(!a==l)&&(!b==0)B)(!a==l)ll(!b==O)
C)a&&bD)all(b+b)&&(c-a)
第二節(jié)if語(yǔ)句
1.若變量已正確定義,有以下程序段
inta=3,b=5,c=7;
if(a>b)a=b;c=a;
if(c!=a)c=b;
printf(,,%d,%d,%d\n,,,a,b,c);
其輸出結(jié)果是B
A)程序段有語(yǔ)法錯(cuò)B)3,5,3C)3,5,5D)3,5,7
*if表達(dá)式后的語(yǔ)句只能是一個(gè)語(yǔ)句或者一個(gè)復(fù)合語(yǔ)句
2.當(dāng)把以下4個(gè)表達(dá)式用作if語(yǔ)句的控制表達(dá)式時(shí),有一個(gè)選項(xiàng)與其他3個(gè)選項(xiàng)含義不同,這個(gè)選項(xiàng)
是D
A)k%2B)k%2==lC)(k%2)!=0D)!k%2==l
*前三個(gè)是對(duì)k%2后的結(jié)果進(jìn)行判斷,而D答案是對(duì)k進(jìn)行邏輯非后再除二取余
3.下列條件語(yǔ)句中,功能與其他語(yǔ)句不同的是D
A)if(a)printf("%d\n",x);elseprintf("%d\n",y);
B)if(a==O)printf("%d\n",y);elseprintf("%d\n",x);
C)if(a!=O)printf("%d\n",x);elseprintf("%d\n",y);
D)if(a==O)printf("%d\n",x);elseprintf("%d\n",y);
*前三個(gè)都是當(dāng)a不等于0時(shí)輸出x,a等于0時(shí)輸出y,D答案相反
4.設(shè)變量x和y均已正確定義并賦值,以下if語(yǔ)句中,在編譯時(shí)將產(chǎn)生錯(cuò)誤信息的是C
A)if(x++);B)if(x>y&y!=O);
C)if(x>y)x--D)if(y<0){;}
elsey++:elsex++;
*無(wú)語(yǔ)句結(jié)束標(biāo)志“;”
第三節(jié)嵌套的if語(yǔ)句
1.在嵌套使用if語(yǔ)句時(shí),C語(yǔ)言規(guī)定else總是C
A)和之前與其具有相同縮進(jìn)位置的if配對(duì)B)和之前與其最近的if配對(duì)
C)和之前與其最近的且不帶else的if配對(duì)D)和之前的第一個(gè)if配對(duì)
2.有以下程序
main()
{inta=5,b=4,c=3,d=2;
if(a>b>c)
printf("%d\n",d);
elseif((c-l>=d)=l)
printf("%d\n",d+l);
else
printf("%d\n",d+2)
)
執(zhí)行后輸出結(jié)果是D
A)2B)3C)4D)編譯時(shí)有錯(cuò),無(wú)結(jié)果
*無(wú)語(yǔ)句結(jié)束標(biāo)志";”
第四節(jié)條件表達(dá)式、switch語(yǔ)句、goto語(yǔ)句
1.以下程序段中與語(yǔ)句k=a>b?(b>c?l:0):0;功能等價(jià)的是A
A)if((a>b)&&(b>c))k=l;B)if((a>b)ll(b>c))k
elsek=0;elsek=0;
C)if(a<=b)k=0;D)if(a>b)k=l;
elseif(b<=c)k=l;elseif(b>c)k=l;
elsek=0;
2.1列敘述中正確的是D
A)break語(yǔ)句只能用于switch
B)在switch語(yǔ)句中必須使用default
C)break語(yǔ)句必須與switch語(yǔ)句中的case配對(duì)使用
D)在switch語(yǔ)句中,不一定使用break語(yǔ)句
*break還能用于循環(huán)體中
3.有以下程序段
intk=O,a=1,b=2,c=3;
k=a<b?b:a;k=k>c?c:k;
執(zhí)行該程序段后,k的值是B
A)3B)2C)1D)0
4.有以下程序
#include<stdio.h>
main()
(
intx=l,y=O,a=O,b=O;
switch(x)
(
case1:
switch(y)
{
case0:a++;break;
case1:b++;break;
)
case2:a++;b++;break;
case3:a++;b++;
)
printf(na=%d,b=%d\nn,a,b);
)
程序的運(yùn)行結(jié)果是D
A)a=1,b=0B)a=2,b=2C)a=l,b=lD)a=2,b=l
*考點(diǎn):switch后有無(wú)break
5.以下程序的輸出結(jié)果是C
main()
{inta=5,b=4,c=6,d;
printf(H%d\nn,d=a>b?(a>c?a:c):(b));
A)5B)4C)6D)不確定
第四章循環(huán)結(jié)構(gòu)
第一節(jié)while語(yǔ)句
習(xí)題
1.有以下程序
main()
{inty=10;
while(y-);printf(ny=%d\n",y);
)
程序執(zhí)行后的輸出結(jié)果是B
A)y=0B)y=-lC)y=lD)while構(gòu)成無(wú)限循環(huán)
*此題考點(diǎn)為循環(huán)體語(yǔ)句為空語(yǔ)句,當(dāng)y—表達(dá)式的值為0時(shí)結(jié)束循環(huán),故y的值為?1
2.有以下程序
main()
(
intk=5;
while(-k)printf(”%d”,k-=3);
printfCAn1');
)
執(zhí)行后的輸出結(jié)果是A
A)1B)2C)4D)死循環(huán)
"①k=5時(shí),執(zhí)行一k后,k=4,表達(dá)式的值為4,為真,執(zhí)行輸出語(yǔ)句k-=3,k=l,輸出1
②再次執(zhí)行一k表達(dá)式,k=0,表達(dá)式的值為0,結(jié)束循環(huán)
第二節(jié)do-while語(yǔ)句
1.若變量已正確定義,有以下程序段
i=0;
do
printf(“%d,”,i);
while(i++);
printf(n%d\n",i)
其輸出結(jié)果是B
A)0,0B)0,1C)I,1D)程序進(jìn)入無(wú)限循環(huán)
*執(zhí)行第一個(gè)輸出語(yǔ)句時(shí),輸出i的值為0;執(zhí)行while語(yǔ)句,循環(huán)體語(yǔ)句為空,i++表達(dá)式的值為0是i
的值為1,執(zhí)行最后?個(gè)輸出語(yǔ)句時(shí)輸出i的值為1
2.有以下程序段
intn,t=l,s=O;
scanf("%d",&n);
do{s=s+t;t=t-2;}while(t!=n);
為使此程序段不陷入死循環(huán),從鍵盤輸入的數(shù)據(jù)應(yīng)該是D
A)任意正奇數(shù)B)任意負(fù)偶數(shù)C)任意正偶數(shù)D)任意負(fù)奇數(shù)
3.以下程序的功能是:將輸入的正整數(shù)按逆序輸出。例如,若輸入135,則輸出531,請(qǐng)?zhí)羁?。n/=10
#include<stdio.h>
main()
(
intn,s;
printf(nEnteranumber:'1);scanf(n%dH,&n);
printf(nOutput:");
do
{
s=n%10;printf("%d”,s);
}while(n!=0);
printf(M\nu);
)
*答案:n=n/10
分析:假如輸入的值為135,那么n=135
(1)n=135,do:s=n%10,那么s的值為5,輸出s的值為5。接著我們要輸出3才能將n逆序輸
出。在學(xué)習(xí)%和/的時(shí)候總結(jié)過(guò):135/10=13,135%10=5,因此我們?cè)囍鴮⒑竺娴目仗钌?/p>
n=n/10,那么n的值為13,判斷(n!=0)為真。
⑵n=13,do:s=n%10,那么s的值為3,輸出s的值為3。執(zhí)行n=n/10后n的值為1,判斷(n!=0)
為真。
⑶n=l,do:s=n%10,那么s的值為1,輸出s的值為1。執(zhí)行n=n/10后n的值為0,判斷(n!=0)
為假,結(jié)束循環(huán)。
(4)已經(jīng)得到逆序的結(jié)構(gòu)為:531,說(shuō)明我們所要填的空就是n=n/10。
4.有以下程序
main()
(
intk=5,n=0;
do
(
switch(k)
{case1:case3:n+=l;break;
default:n=0;k—;
case2:case4:n+=2;k—;break;
)
printf(t4%d,,,n);
}while(k>0&&n<5);
)
程序運(yùn)行后的輸出結(jié)果是
A)235B)0235C)02356D)2345
*本題注意的是在循環(huán)第次進(jìn)入switch語(yǔ)句的時(shí)候是執(zhí)行的default后面的語(yǔ)句塊,由
于沒(méi)有break,所以還會(huì)執(zhí)行case2:case4:后面的語(yǔ)句。
第三節(jié)for語(yǔ)句
1.有以下程序
#include<stdio.h>
main()
(
intx=8;
for(;x>0;X-)
(
if(x%3)
(
printf(M%d,n,x—);
continue;
)
printf(n%d,n,-x);
程序的運(yùn)行結(jié)果是D
A)7,4,2B)8,7,5,2C)9,7,6,4D)8,5,4,2
*考點(diǎn):for循環(huán)、if語(yǔ)句、continue
分析:
(1)x=8,x>0為真,判斷:x%3的值2為真,執(zhí)行輸出語(yǔ)句,輸出X—的值為8,x為7。遇
到后面的continue語(yǔ)句結(jié)束本論循環(huán),接著執(zhí)行for結(jié)構(gòu)中的表達(dá)式3,x—后x的值為
6o
(2)x=6,x>0為真,判斷:x%3的值0為假,執(zhí)行if后面的語(yǔ)句,輸出一x的值為5,x為5。
接著執(zhí)行for結(jié)構(gòu)中的表達(dá)式3,x-后x的值為4。
(3)x=4,x>0為真,判斷:x%3的值1為真,執(zhí)行輸出語(yǔ)句,輸出x—的值為4,x為3。遇
到后面的continue語(yǔ)句結(jié)束本論循環(huán),接著執(zhí)行for結(jié)構(gòu)中的表達(dá)式3,x—后x的值為
2o
(4)x=2,x>0為真,判斷:x%3的值2為真,執(zhí)行輸出語(yǔ)句,輸出x—的值為2,x為1。遇
到后面的continue語(yǔ)句結(jié)束本論循環(huán),接著執(zhí)行for結(jié)構(gòu)中的表達(dá)式3,x—后x的值為
Oo
(5)x=0,x>0為假,結(jié)束循環(huán)。
(6)最終輸出的結(jié)果為:8,5,4,2
2.以下不構(gòu)成無(wú)限循環(huán)的語(yǔ)句或者語(yǔ)句組是A
A)n=0;B)n=0;
do{++n;}while(n<=0);while(l){n++;}
C)n=10;D)for(n=0,i=l;;i++)n+=i;
while(n);{n—;}
*構(gòu)成死循環(huán)的情況:1、表達(dá)式的值永遠(yuǎn)為真;2、缺省表達(dá)式2.
第四節(jié)循環(huán)結(jié)構(gòu)的嵌套
1.有以下程序
main()
(
inti,n=O;
for(i=2;i<5;i++)
(
do
(
if(i%3)continue;
n++;
}while(!i);
n++;
)
printf(nn=%d\n",n);
)
程序執(zhí)行后的輸出結(jié)果是D
A)n=5B)n=2C)n=3D)n=4
*執(zhí)行過(guò)程:
(1)、n=0,i=2時(shí),i<5為真,i%3為真,執(zhí)行continue,結(jié)束本次循環(huán),!i為假,執(zhí)行最后n++,n=l,執(zhí)
行i++
(2)、
2.有以下程序
main()
(
intij,x=0;
for(i=0;i<2;i++)
(
x++;
for(j=0;j<=3;j++)
(
if(j%2)continue;
x++;
)
X++;
)
printf("x=%d\nn,x);
)
程序執(zhí)行后的輸出結(jié)果是B
A)x=4B)x=8C)x=6D)x=12
*程序執(zhí)行過(guò)程:(1)、x=0,i=0時(shí),iv2為真,執(zhí)行x++,x=l
j=O,j<=3為真,j%2為假,執(zhí)行x++,x=2,再執(zhí)行j++
j=l,jv=3為真,j%2為真,執(zhí)行continue,再執(zhí)行j++
j=2,j<=3為真,j%2為假,執(zhí)行x++,x=3,再執(zhí)行j++
j=3,jv=3為真,j%2為真,執(zhí)行continue,再執(zhí)行j++
j=4,j<=3為假,結(jié)束內(nèi)層循環(huán),執(zhí)行最后一個(gè)x++,x=4,再執(zhí)行i++
(2)、x=4,i=l時(shí),iv2為真,執(zhí)行x++,x=5
j=O,j<=3為真,j%2為假,執(zhí)行x++,x=6,再執(zhí)行j++
j=l,j<=3為真,j%2為真,執(zhí)行continue,再執(zhí)行j++
j=2,jv=3為真,j%2為假,執(zhí)行x++,x=7,再執(zhí)行j++
j=3,j<=3為真,j%2為真,執(zhí)行conlinue,再執(zhí)行j++
j=4,jv=3為假,結(jié)束內(nèi)層循環(huán),執(zhí)行最后一個(gè)x++,x=8,再執(zhí)行i++
(3)、x=8,i=2時(shí),iv2為假,結(jié)束循環(huán),輸出x
3.下面程序的功能是輸出以下形式的金字塔圖案
***
main()
(
inti,j;
for(i=l;i<=4;i++)
(
for(j=l;j<=4-i;j++)printf(M”);
for(j=l;j<=;j++)printf(u*");
printfCAn'1);
在下劃線處應(yīng)填入的是B
A)iB)2*i-lC)2*i+lD)i+2
*分析:
通過(guò)觀察可以知道:第一行只有一個(gè)*號(hào),卻在*的前面有三個(gè)空格。第二行有三個(gè)*號(hào),*
號(hào)前面有兩個(gè)空格。第三行有五個(gè)*號(hào),在*號(hào)前面僅僅有?個(gè)空格。第四行有七個(gè)*號(hào),沒(méi)
有空格。從中可以得到如下規(guī)律:
用i代表行數(shù),共有4行:
i=l時(shí),有4-i個(gè)空格,有2*i-l個(gè)*號(hào)
i=2時(shí),有4-i個(gè)空格,有2*i-l個(gè)*號(hào)
i=3時(shí),有4-i個(gè)空格,有2*i-l個(gè)*號(hào)
i=4時(shí),有4-i個(gè)空格,有2*i-l個(gè)*號(hào)
結(jié)合程序即可得到正確結(jié)果。
第五節(jié)break和continue語(yǔ)句在循環(huán)中的應(yīng)用
1.以下敘述中正確的是C
A)break語(yǔ)句只能用于switch語(yǔ)句體中
B)continue語(yǔ)句的作用是:使程序的執(zhí)行流程跳出包含它的所有循環(huán)
C)break語(yǔ)句只能用在循環(huán)體內(nèi)和Iswitch語(yǔ)句體內(nèi)
D)在循環(huán)體內(nèi)使用break語(yǔ)句和continue語(yǔ)句的作用相同
第六節(jié)循環(huán)結(jié)構(gòu)的分析方法
1.以下程序段中的變量已正確定義
for(i=0;j<4;i++,i++)
for(k=l;k<3;k++);printf("*H);
程序段的輸出結(jié)果是()D
A)********B)****C)**D)*
*循環(huán)體為空語(yǔ)句
第五章函數(shù)
第一節(jié)函數(shù)的定義、庫(kù)函數(shù)
1.在C語(yǔ)言中,函數(shù)返回值的類型最終取決于A
A)函數(shù)定義時(shí)在函數(shù)首部所說(shuō)明的函數(shù)類型
B)return語(yǔ)句中表達(dá)式值的類型
C)調(diào)用函數(shù)時(shí)主函數(shù)所傳遞的實(shí)參類型
D)函數(shù)定義時(shí)形參的類型
第二節(jié)函數(shù)的調(diào)用與函數(shù)說(shuō)明
1.有以下程序
#include<stdio.h>
intf(intx)
(
inty;
if(x==0llx==l)return(3);
y=x*x-f(x-2);
returny;
)
main()
(
intz;
z=f(3);
printf(H%d\n",z);
程序的運(yùn)行結(jié)果是C
A)0B)9C)6D)8
*解析:
intffintx)4----------------A
{inty;,
VAAAAAAZ*J*
或x=O||x=l"
return3/
V\A/'ZvWWW'v*vW?,
y=x*x-f(x-2);+J
returnvy
},
z<3)^__----------------|L
將f(3)的值的賦值給變量z,當(dāng)執(zhí)行至ijf函數(shù)時(shí)將3的值傳遞給變量x,則x得到的值為3,執(zhí)
行函數(shù)中的語(yǔ)句,則x==Ollx==l表達(dá)式的值為假值,則不返回3值,執(zhí)行后面的語(yǔ)句
y=x*x-f⑴.先執(zhí)行f(l)函數(shù),則將1的值傳遞給變量x,所以變量x得到的值為1,執(zhí)行后
面的語(yǔ)句x==Ollx==l表達(dá)式的值為真值,返回3值,最后計(jì)算y=3*3-3=6,所以最后的答案
為6,選擇答案C。
2.以下敘述中錯(cuò)誤的是C
A)改變函數(shù)形參的值,不會(huì)改變對(duì)應(yīng)實(shí)參的值
B)函數(shù)可以返回地址值
C)可以在函數(shù)內(nèi)部定義函數(shù)
D)調(diào)用sin函數(shù)需要包含頭文件math.h
*函數(shù)不可以嵌套定義
3.若程序中定義了以下函數(shù)
doublemyadd(doublea,doubleb)
(
return(a+b);
)
并將其放在調(diào)用語(yǔ)句之后,則在調(diào)用之前應(yīng)進(jìn)行函數(shù)聲明,以下選項(xiàng)中錯(cuò)誤的是A
A)doublemyadd(doublea,b);B)doublemyadd(double,double);
C)doublemyadd(doubleb,doublea);D)doublemyadd(doublex,doubley);
*參數(shù)名可以缺省,類型名不能缺省
第三節(jié)函數(shù)的數(shù)據(jù)傳遞
1.有以下程序
voidf(intv,intw)
|
intt;
t=v;v=w;w=t;
)
main()
intx=l,y=3,z=2;
if(x>y)
f(x,y);
elseif(y>z)
f(y,z);
else
f(x,z);
printf(',%d,%d,%d\n,1,x,y,z);
)
執(zhí)行后輸出結(jié)果是C
A)1,2,3B)3,1,2C)1,3,2D)2,3,1
*分析:f函數(shù)的功能是:交換兩個(gè)變量的值,但是變量V和W為普通變量,所以只是在f
函數(shù)中改變了變量的值,但是在主函數(shù)中并沒(méi)有改變實(shí)參的值。所以變量x、y、z的并沒(méi)
有改變。所以主函數(shù)中x、y、z的值還是原來(lái)變量的值,即1,3,2.故選答案C。
2.以下程序的輸出結(jié)果是。13
#include<stdio.h>
voidfun(intx)
(
if(x/2>0)
fun(x/2);
printf(n%d",x);
)
main()
(
fun(3);
printf(n\nn);
)
*分析:
fun/SX'
fiinfl)----------
printfY14?od^jc);*
先執(zhí)行fun(3)把x/2的值為1,真值,執(zhí)行fun(l),再次調(diào)用fun函數(shù),則輸出的x的值,
即1。輸出結(jié)束,fun(l),函數(shù)結(jié)束,則執(zhí)行后面的這?條printf函數(shù),即輸出3的值。最后
的結(jié)果為:13.
第六章指針
第一節(jié)變量的地址和指針
1.以下敘述中錯(cuò)誤的是C
A)改變函數(shù)形參的值,不會(huì)改變對(duì)應(yīng)實(shí)參的值
B)函數(shù)可以返回地址值
C)可以給指針變量賦一個(gè)整數(shù)作為地址值
D)當(dāng)在程序的開(kāi)頭包含文件stdio.h時(shí),可以給指針變量賦NULL
2.以下定義語(yǔ)句中正確的是D
A)inta=b=O;B)charA=65+l,b='b';
C)floata=l,*b=&a,*c=&b;D)doublea=0.0;b=l.l;
*A答案b未定義、C答案c是一級(jí)指針、D答案分號(hào)是C語(yǔ)言語(yǔ)句的結(jié)束標(biāo)志
3.設(shè)已有定義:floatx;則以卜對(duì)指針變量p進(jìn)行定義且賦初值的語(yǔ)句中正確的是D
A)float*p=1024;B)int*p=(floatx);
C)floatp=&x;D)float*P=&x;
*分析:A答案門oat*p=1024,將個(gè)常量1024賦值給指針,賦值號(hào)兩邊的類型錯(cuò)誤。B
答案int*p=(floatx);將一個(gè)float類型的變量x賦值給指針變量p是錯(cuò)誤的。C答案float
p=&x;將x的地址賦值給變量p是錯(cuò)誤的。D答案float*p=&x;將變量x的地址賦值給指針
P,因此是正確的。
第二節(jié)指針變量賦值及運(yùn)算
1.設(shè)有定義:intn=O,*p=&n,**q=&p;,則以下選項(xiàng)中,正確的賦值語(yǔ)句是D
A)p=l;B)*q=2;C)q=p;D)*p=5;
*分析:intn=0,*p=&n,**q=&p;定義了一個(gè)普通變量n賦初始值為0,一個(gè)一維指針p
指向了n的地址,一個(gè)二維指針q指向了p的地址。
A答案p=l,將常量1賦值給?維指針是錯(cuò)誤的,類型不一致。
B答案*q=2,因?yàn)閝是二維指針,因此*q可以理解為一維的指針,將2賦值給*q類型不一
致。
C答案q=p,q和q的類型不一致,因此不能直接賦值。
D答案*p=5,p是一維指針,*p就相當(dāng)于?個(gè)普通變量,因此可以將5賦值給*p。
2.有以下程序
main()
(
inta=l,b=3,c=5;
int*pl=&a,*p2=&b,*p=&c;
*p=*pl*(*p2);
printf("%d\n”,c);
)
執(zhí)行后的輸出結(jié)果是c
A)IB)2C)3D)4
*分析:inta=l,b=3,c=5;int*pl=&a,*p2=&b,*p=&c;pl指向了a的地址,p2指向了b的
地址,p指向了c的地址。*p=*pl*(*p2);計(jì)算*pl和*p2的乘積,注意中間的*號(hào)表示乘號(hào)。
即*p=l*3值為3,由于p指向了c的地址,*p的值為3那么c的值為3。
3.設(shè)有定義:intnl=0,n2,*p=&n2,*q=&nl;,以下賦值語(yǔ)句中與n2=nl;語(yǔ)句等價(jià)的是A
A)*p=*q;B)p=q;C)*p=&n1;D)p=*q;
*分析:intnl=0,n2,*p=&n2,*q=&nl;首先定義了兩個(gè)整型變量nl和n2,并為nl賦值為
0,定義了兩個(gè)指針變臉p和q,p指向了n2的地址,q指向了nl的地址??梢杂谩伴g接訪
問(wèn)運(yùn)算符”來(lái)引用相應(yīng)的存儲(chǔ)單元,因此*P就是n2的值,*q就是nl的值。與n2=nl等價(jià)
的就是*p=*q,故選擇A答案。
4.有以下程序
#include<stdio.h>
main()
(
intn,*p=NULL;
*p=&n;
printf(nInputn:”);scanf(n%d",&p);
printf(Houtputn:*');printf(,,%d\n,,,p);
)
該程序試圖通過(guò)指針p為變量n讀入數(shù)據(jù)并輸出,但程序有多處錯(cuò)誤,以下語(yǔ)句正確的是A
A)intn,*p=NULL;B)*p=&n;
C)scanf("%d”,&p)D)printf("%d\nn,p);
*分析:通過(guò)一個(gè)空指針去訪問(wèn)一個(gè)存儲(chǔ)單元時(shí),將會(huì)得到一個(gè)出錯(cuò)信息。
第三節(jié)函數(shù)之間地址值的傳遞
1,以下程序的功能是:利用指針指向3個(gè)整型變量,并通過(guò)指針運(yùn)算找出3個(gè)數(shù)中的最大值,輸出到
屏幕上,請(qǐng)?zhí)羁眨?pmax=x;(或者max=x)
main()
{
intx,y,z,max,*px,*py,*pz,*pmax;
scanf(',%d%d%d,,,&x,&y,&z);
px=&x;
py=&y;
pz=&z;
pmax=&max;
if(*pmax<*py)
*pmax=*py;
if(*pmax<*pz)
*pmax=*pz;
printf(',max=%d\n,\max);
)
*進(jìn)行比較之前對(duì)其進(jìn)行賦初值
2.voidf(inty,int*x)
{y=y+*x;*X=*X+y;}
main()
{intx=2,y=4;
f(y,&x);
printf(M%d%d\n",x,y);
執(zhí)行后輸出的結(jié)果是。84
*分析:
(1)首先函數(shù)從main函數(shù)開(kāi)始執(zhí)行,在main函數(shù)中定義了兩個(gè)變量x=2,y=4,調(diào)用函數(shù)
f(y,&x),這里傳入的一個(gè)是y的值,一個(gè)是x的地址。
(2)執(zhí)行函數(shù)f,形參y的值為4,x指針指向?qū)崊的地址。執(zhí)行:y=y+*x,那么y=4+2,
值為6,*x=*x+y那么*x=2+6,由于調(diào)用函數(shù)傳入的是地址,因此形參*x的值變化那么實(shí)參
x的值也相應(yīng)變化為80
⑶函數(shù)執(zhí)行完畢,繼續(xù)執(zhí)行main函數(shù)中的輸出語(yǔ)句,輸出x,y的值為8,4。
3.以下程序的輸出結(jié)果是。35
#include<stdio.h>
voidswap(int*a,int*b)
(
int*t;
t=a;a=b;b=t;
)
main()
(
inti=3,j=5,*p=&i,*q=&j;
swap(p,q);
printf(n%d%d\nn*p,*q);
)
*分析:
(1)函數(shù)從main函數(shù)開(kāi)始執(zhí)行,定義了兩個(gè)變量x和y,值為3和5,指針p和q分別指向
了x和y的地址,調(diào)用函數(shù)swap(p,q),傳入的實(shí)參為p和q。
(2)執(zhí)行函數(shù)swap,形參a和B分別指向了變量x和y的地址。執(zhí)行函數(shù)體,t=a;a=b;b=t;
是典型的交換形式,這樣通過(guò)交換后指針a指向了變量y的地址,指針b指向了變量x的
地址。但是實(shí)參P和q沒(méi)有變換。
(3)繼續(xù)執(zhí)行main函數(shù)中的輸出語(yǔ)句,輸出*p和*q的值為:35
4.有以下函數(shù)
intfun(char*s)
(
char*t=s;
while(*t++);
return(t-s);
)
該函數(shù)的功能是B
A)比較兩個(gè)字符的大小B)計(jì)算s所指字符串占用內(nèi)存字節(jié)的個(gè)數(shù)
C)計(jì)算s所指字符串的長(zhǎng)度D)將s所指字符串復(fù)制到字符串t中
5.程序中對(duì)fun函數(shù)有如下說(shuō)明C
void*fun();
此說(shuō)明的含義是
A)fun函數(shù)無(wú)返回值
B)fun函數(shù)的返回值可以是任意的數(shù)據(jù)類型
C)fun函數(shù)的返回值是無(wú)值型的指針類型
D)指針fun指向一個(gè)函數(shù),該函數(shù)無(wú)返回值
第七章數(shù)組
第一節(jié)一維數(shù)組
1.有以下程序段
intj;floaty;charname[50];
scanf("%2d%f%s",&j,&y,name);
當(dāng)執(zhí)行上述程序段,從鍵盤上輸入555667777abe后,y的值為B
A)55566.0B)566.0C)7777.0D)566777.0
*對(duì)j進(jìn)行輸入時(shí),格式控制為%2d,所以j的值取的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版小額貸款抵押合同資產(chǎn)評(píng)估及報(bào)告協(xié)議2篇
- 2025年度個(gè)人與公司租賃房屋修繕責(zé)任合同4篇
- 2025年度個(gè)人旅游規(guī)劃與導(dǎo)游服務(wù)合同2篇
- 2025版室外照明燈具廣告宣傳與品牌推廣合同3篇
- 2025年度煤炭行業(yè)綠色運(yùn)輸體系構(gòu)建合同4篇
- 2025標(biāo)準(zhǔn)新能源材料研發(fā)與采購(gòu)合作協(xié)議3篇
- 2025年度生態(tài)環(huán)保瓷磚批量采購(gòu)合作協(xié)議3篇
- 2025版醫(yī)療健康大數(shù)據(jù)合作開(kāi)發(fā)合同3篇
- 個(gè)性化定制小區(qū)房產(chǎn)買賣合同(2024版)版B版
- 2025版國(guó)際貿(mào)易糾紛訴訟擔(dān)保委托服務(wù)協(xié)議3篇
- 2025年山東浪潮集團(tuán)限公司招聘25人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年財(cái)政部會(huì)計(jì)法律法規(guī)答題活動(dòng)題目及答案一
- 2025年江西省港口集團(tuán)招聘筆試參考題庫(kù)含答案解析
- (2024年)中國(guó)傳統(tǒng)文化介紹課件
- 液化氣安全檢查及整改方案
- 《冠心病》課件(完整版)
- 2024年云網(wǎng)安全應(yīng)知應(yīng)會(huì)考試題庫(kù)
- 公園保潔服務(wù)投標(biāo)方案
- 光伏電站項(xiàng)目合作開(kāi)發(fā)合同協(xié)議書三方版
- 2024年秋季新滬教版九年級(jí)上冊(cè)化學(xué)課件 第2章 空氣與水資源第1節(jié) 空氣的組成
- 香港中文大學(xué)博士英文復(fù)試模板
評(píng)論
0/150
提交評(píng)論