




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
新視野教育二級C語言教程課后習(xí)題詳解
(以修訂版教材為準(zhǔn))
第一章c語言的基礎(chǔ)知識
第二節(jié)熟悉VisualC++
LC語言源程序名的后綴是B
A).exeB).cC).objD).cp
*C語言源程序的拓展名為.C
2.下列敘述中錯誤的是D
A)計算機(jī)不能直接執(zhí)行用C語言編寫的源程序
B)C程序經(jīng)C編譯后,生成后綴為.obj的文件是一個二進(jìn)制文件
C)后綴為.obj的文件,經(jīng)連接程序生成后綴為.exe的文件是一個二進(jìn)制文件
D)后綴為.obj和.exe的二進(jìn)制文件都可以直接運(yùn)行
*后綴為.obj的目標(biāo)文件不能直接運(yùn)行
3.用C語言編寫的代碼程序B
A)可立即執(zhí)行B)是一個源程序
C)經(jīng)過編譯即可執(zhí)行D)經(jīng)過編譯解釋才能執(zhí)行
第三節(jié)標(biāo)識符
1.按照C語言規(guī)定的用戶標(biāo)識符命名規(guī)則,不能出現(xiàn)在標(biāo)識符中的是B
A)大寫字母B)連接符C)數(shù)字字符D)下劃線
*標(biāo)識符的命名中不能出現(xiàn)連接符
2.以下選項(xiàng)中不合法的標(biāo)識符是C
A)printB)FORC)&aD)_00
*標(biāo)識符中不能出現(xiàn)“&”
3.以下敘述中錯誤的是A
A)用戶所定義的標(biāo)識符允許使用關(guān)鍵字
B)用戶所定義的標(biāo)識符應(yīng)盡量做到“見名知意”
C)用戶所定義的標(biāo)識符必須以字母或下劃線開頭
D)用戶定義的標(biāo)識符中,大、小寫字母代表不同標(biāo)識
*用戶自定義標(biāo)識符不允許使用關(guān)鍵字
4.可在C程序中用作用戶標(biāo)識符的一組標(biāo)識符是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)識符是C
A)j2_KEYB)DoubleC)4dD)_8_
*開頭第一個字符不能為數(shù)字
6.以下不能定義為用戶標(biāo)識符的是D
A)MainB)_0C)_intD)sizeof
*sizeof為關(guān)鍵字
7.下列選項(xiàng)中,不能用作標(biāo)識符的是D
A)」234_B)_1_2C)int_2_D)2_int_
*開頭第一個字符不能為數(shù)字
8.以下4組用戶定義標(biāo)識符中,全部合法的一組是A
A)_mainB)IfC)txtD)int
enclude-maxREALk_2
sinturbo3C0M_001
*B答案出現(xiàn)連接符、C答案出現(xiàn)數(shù)字開頭、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個字節(jié)B)根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)
C)由用戶自己定義D)由C語言編譯系統(tǒng)決定
3.以下選項(xiàng)中不屬于C語言的類型的是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語言合法常量的是A
A)-80.B)-080C)~8el.OD)—80.0e
7.以下符合C語言語法的實(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語言數(shù)值常量是B
A)028B)12.C).177D)0x8A
5e-3OXa234c1.510,000
—Oxf4.5e0Oabc3.e5
10.下列定義變量的語句錯誤的是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í)行以下語句后輸出的結(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語言表達(dá)式與代數(shù)式Xh計算結(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)算符、逗號表達(dá)式
習(xí)題
1.設(shè)變量已正確定義為整型,貝悚達(dá)式n=i=2,++i,i++的值為o3
*表達(dá)式3的值為整個表達(dá)式的值
2.設(shè)有定義:intk=0;,以下選項(xiàng)的4個表達(dá)式中與其他3個表達(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)格式說明符不足,編譯出錯D)程序運(yùn)行時產(chǎn)生出錯信息
*逗號表達(dá)式的值為最后一個表達(dá)式的值
4.有以下程序:B
main()
{inta=O,b=O;
a=10;/*給a賦值
b=20;給b賦值*/
printf("a+b=%d\n",a+b);/*輸出計算結(jié)果*/
)
程序運(yùn)行后的結(jié)果是
A)a+b=30B)a+b=10C)30D)程序出錯
*本題要注意的是注釋部分應(yīng)該包括:/*給a賦值b=20;給b賦值*/,也就是說“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í)行語句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)換
為對應(yīng)小寫字母的語句是()。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.若變量已正確定義,則以下語句的輸出結(jié)果是()oB
s=32;s八=32;printf(n%d",s);
A)-1B)0C)1D)32
*兩個相同的數(shù)進(jìn)行按位異或,結(jié)果為0
5.設(shè)有以下語句
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)因變量類型與格式描述符的類型不匹配輸出無定值
B)輸出項(xiàng)與格式描述符個數(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
*分析過程見教材25頁例3
3.有以卜程序,其中%u表示按無符號整數(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ù)時,必須要有輸出項(xiàng)
B)使用putchar函數(shù)時,必須在之前包含頭文件stdio.h
C)在C語言中,整數(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
*兩個相同的數(shù)進(jìn)行按位與時,結(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)行時若從鍵盤輸入: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)程序出錯
*注意%*d為跳過輸入的數(shù)據(jù)
2.已知字符A的ASCII代碼值為65,以下程序運(yùn)行時若從鍵盤輸入: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)程序段有語法錯B)1BC)165D)1b
*a=a-'A'+'O';即a=66-65+48b=b*2;即b=33*2得出結(jié)果后找到對應(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)錯誤信息B)666C)888D)666,888
*%d只與輸出列表中的變量a對應(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í)行以下程序時輸入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時,值也為“真”的表達(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ù)時,值為0的表達(dá)式D
A)x%2==lB)x/2C)x%2!=0D)x%2==0
4.以下關(guān)于邏輯運(yùn)算符兩側(cè)運(yùn)算對象的敘述中正確的是(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)中錯誤的表達(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語句
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)程序段有語法錯B)3,5,3C)3,5,5D)3,5,7
*if表達(dá)式后的語句只能是一個語句或者一個復(fù)合語句
2.當(dāng)把以下4個表達(dá)式用作if語句的控制表達(dá)式時,有一個選項(xiàng)與其他3個選項(xiàng)含義不同,這個選項(xiàng)
是D
A)k%2B)k%2==lC)(k%2)!=0D)!k%2==l
*前三個是對k%2后的結(jié)果進(jìn)行判斷,而D答案是對k進(jìn)行邏輯非后再除二取余
3.下列條件語句中,功能與其他語句不同的是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);
*前三個都是當(dāng)a不等于0時輸出x,a等于0時輸出y,D答案相反
4.設(shè)變量x和y均已正確定義并賦值,以下if語句中,在編譯時將產(chǎn)生錯誤信息的是C
A)if(x++);B)if(x>y&y!=O);
C)if(x>y)x--D)if(y<0){;}
elsey++:elsex++;
*無語句結(jié)束標(biāo)志“;”
第三節(jié)嵌套的if語句
1.在嵌套使用if語句時,C語言規(guī)定else總是C
A)和之前與其具有相同縮進(jìn)位置的if配對B)和之前與其最近的if配對
C)和之前與其最近的且不帶else的if配對D)和之前的第一個if配對
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)編譯時有錯,無結(jié)果
*無語句結(jié)束標(biāo)志";”
第四節(jié)條件表達(dá)式、switch語句、goto語句
1.以下程序段中與語句k=a>b?(b>c?l:0):0;功能等價的是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語句只能用于switch
B)在switch語句中必須使用default
C)break語句必須與switch語句中的case配對使用
D)在switch語句中,不一定使用break語句
*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后有無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語句
習(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)成無限循環(huán)
*此題考點(diǎn)為循環(huán)體語句為空語句,當(dāng)y—表達(dá)式的值為0時結(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時,執(zhí)行一k后,k=4,表達(dá)式的值為4,為真,執(zhí)行輸出語句k-=3,k=l,輸出1
②再次執(zhí)行一k表達(dá)式,k=0,表達(dá)式的值為0,結(jié)束循環(huán)
第二節(jié)do-while語句
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)入無限循環(huán)
*執(zhí)行第一個輸出語句時,輸出i的值為0;執(zhí)行while語句,循環(huán)體語句為空,i++表達(dá)式的值為0是i
的值為1,執(zhí)行最后?個輸出語句時輸出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,請?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í)%和/的時候總結(jié)過:135/10=13,135%10=5,因此我們試著將后面的空填上
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,說明我們所要填的空就是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語句的時候是執(zhí)行的default后面的語句塊,由
于沒有break,所以還會執(zhí)行case2:case4:后面的語句。
第三節(jié)for語句
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語句、continue
分析:
(1)x=8,x>0為真,判斷:x%3的值2為真,執(zhí)行輸出語句,輸出X—的值為8,x為7。遇
到后面的continue語句結(jié)束本論循環(huán),接著執(zhí)行for結(jié)構(gòu)中的表達(dá)式3,x—后x的值為
6o
(2)x=6,x>0為真,判斷:x%3的值0為假,執(zhí)行if后面的語句,輸出一x的值為5,x為5。
接著執(zhí)行for結(jié)構(gòu)中的表達(dá)式3,x-后x的值為4。
(3)x=4,x>0為真,判斷:x%3的值1為真,執(zhí)行輸出語句,輸出x—的值為4,x為3。遇
到后面的continue語句結(jié)束本論循環(huán),接著執(zhí)行for結(jié)構(gòu)中的表達(dá)式3,x—后x的值為
2o
(4)x=2,x>0為真,判斷:x%3的值2為真,執(zhí)行輸出語句,輸出x—的值為2,x為1。遇
到后面的continue語句結(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)成無限循環(huán)的語句或者語句組是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í)行過程:
(1)、n=0,i=2時,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í)行過程:(1)、x=0,i=0時,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í)行最后一個x++,x=4,再執(zhí)行i++
(2)、x=4,i=l時,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í)行最后一個x++,x=8,再執(zhí)行i++
(3)、x=8,i=2時,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ī)律:
用i代表行數(shù),共有4行:
i=l時,有4-i個空格,有2*i-l個*號
i=2時,有4-i個空格,有2*i-l個*號
i=3時,有4-i個空格,有2*i-l個*號
i=4時,有4-i個空格,有2*i-l個*號
結(jié)合程序即可得到正確結(jié)果。
第五節(jié)break和continue語句在循環(huán)中的應(yīng)用
1.以下敘述中正確的是C
A)break語句只能用于switch語句體中
B)continue語句的作用是:使程序的執(zhí)行流程跳出包含它的所有循環(huán)
C)break語句只能用在循環(huán)體內(nèi)和Iswitch語句體內(nèi)
D)在循環(huán)體內(nèi)使用break語句和continue語句的作用相同
第六節(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)體為空語句
第五章函數(shù)
第一節(jié)函數(shù)的定義、庫函數(shù)
1.在C語言中,函數(shù)返回值的類型最終取決于A
A)函數(shù)定義時在函數(shù)首部所說明的函數(shù)類型
B)return語句中表達(dá)式值的類型
C)調(diào)用函數(shù)時主函數(shù)所傳遞的實(shí)參類型
D)函數(shù)定義時形參的類型
第二節(jié)函數(shù)的調(diào)用與函數(shù)說明
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ù)時將3的值傳遞給變量x,則x得到的值為3,執(zhí)
行函數(shù)中的語句,則x==Ollx==l表達(dá)式的值為假值,則不返回3值,執(zhí)行后面的語句
y=x*x-f⑴.先執(zhí)行f(l)函數(shù),則將1的值傳遞給變量x,所以變量x得到的值為1,執(zhí)行后
面的語句x==Ollx==l表達(dá)式的值為真值,返回3值,最后計算y=3*3-3=6,所以最后的答案
為6,選擇答案C。
2.以下敘述中錯誤的是C
A)改變函數(shù)形參的值,不會改變對應(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)用語句之后,則在調(diào)用之前應(yīng)進(jìn)行函數(shù)聲明,以下選項(xiàng)中錯誤的是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ù)的功能是:交換兩個變量的值,但是變量V和W為普通變量,所以只是在f
函數(shù)中改變了變量的值,但是在主函數(shù)中并沒有改變實(shí)參的值。所以變量x、y、z的并沒
有改變。所以主函數(shù)中x、y、z的值還是原來變量的值,即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.以下敘述中錯誤的是C
A)改變函數(shù)形參的值,不會改變對應(yīng)實(shí)參的值
B)函數(shù)可以返回地址值
C)可以給指針變量賦一個整數(shù)作為地址值
D)當(dāng)在程序的開頭包含文件stdio.h時,可以給指針變量賦NULL
2.以下定義語句中正確的是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是一級指針、D答案分號是C語言語句的結(jié)束標(biāo)志
3.設(shè)已有定義:floatx;則以卜對指針變量p進(jìn)行定義且賦初值的語句中正確的是D
A)float*p=1024;B)int*p=(floatx);
C)floatp=&x;D)float*P=&x;
*分析:A答案門oat*p=1024,將個常量1024賦值給指針,賦值號兩邊的類型錯誤。B
答案int*p=(floatx);將一個float類型的變量x賦值給指針變量p是錯誤的。C答案float
p=&x;將x的地址賦值給變量p是錯誤的。D答案float*p=&x;將變量x的地址賦值給指針
P,因此是正確的。
第二節(jié)指針變量賦值及運(yùn)算
1.設(shè)有定義:intn=O,*p=&n,**q=&p;,則以下選項(xiàng)中,正確的賦值語句是D
A)p=l;B)*q=2;C)q=p;D)*p=5;
*分析:intn=0,*p=&n,**q=&p;定義了一個普通變量n賦初始值為0,一個一維指針p
指向了n的地址,一個二維指針q指向了p的地址。
A答案p=l,將常量1賦值給?維指針是錯誤的,類型不一致。
B答案*q=2,因?yàn)閝是二維指針,因此*q可以理解為一維的指針,將2賦值給*q類型不一
致。
C答案q=p,q和q的類型不一致,因此不能直接賦值。
D答案*p=5,p是一維指針,*p就相當(dāng)于?個普通變量,因此可以將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);計算*pl和*p2的乘積,注意中間的*號表示乘號。
即*p=l*3值為3,由于p指向了c的地址,*p的值為3那么c的值為3。
3.設(shè)有定義:intnl=0,n2,*p=&n2,*q=&nl;,以下賦值語句中與n2=nl;語句等價的是A
A)*p=*q;B)p=q;C)*p=&n1;D)p=*q;
*分析:intnl=0,n2,*p=&n2,*q=&nl;首先定義了兩個整型變量nl和n2,并為nl賦值為
0,定義了兩個指針變臉p和q,p指向了n2的地址,q指向了nl的地址??梢杂谩伴g接訪
問運(yùn)算符”來引用相應(yīng)的存儲單元,因此*P就是n2的值,*q就是nl的值。與n2=nl等價
的就是*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);
)
該程序試圖通過指針p為變量n讀入數(shù)據(jù)并輸出,但程序有多處錯誤,以下語句正確的是A
A)intn,*p=NULL;B)*p=&n;
C)scanf("%d”,&p)D)printf("%d\nn,p);
*分析:通過一個空指針去訪問一個存儲單元時,將會得到一個出錯信息。
第三節(jié)函數(shù)之間地址值的傳遞
1,以下程序的功能是:利用指針指向3個整型變量,并通過指針運(yùn)算找出3個數(shù)中的最大值,輸出到
屏幕上,請?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)行比較之前對其進(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ù)開始執(zhí)行,在main函數(shù)中定義了兩個變量x=2,y=4,調(diào)用函數(shù)
f(y,&x),這里傳入的一個是y的值,一個是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ù)中的輸出語句,輸出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ù)開始執(zhí)行,定義了兩個變量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;
是典型的交換形式,這樣通過交換后指針a指向了變量y的地址,指針b指向了變量x的
地址。但是實(shí)參P和q沒有變換。
(3)繼續(xù)執(zhí)行main函數(shù)中的輸出語句,輸出*p和*q的值為:35
4.有以下函數(shù)
intfun(char*s)
(
char*t=s;
while(*t++);
return(t-s);
)
該函數(shù)的功能是B
A)比較兩個字符的大小B)計算s所指字符串占用內(nèi)存字節(jié)的個數(shù)
C)計算s所指字符串的長度D)將s所指字符串復(fù)制到字符串t中
5.程序中對fun函數(shù)有如下說明C
void*fun();
此說明的含義是
A)fun函數(shù)無返回值
B)fun函數(shù)的返回值可以是任意的數(shù)據(jù)類型
C)fun函數(shù)的返回值是無值型的指針類型
D)指針fun指向一個函數(shù),該函數(shù)無返回值
第七章數(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
*對j進(jìn)行輸入時,格式控制為%2d,所以j的值取的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年黨政領(lǐng)導(dǎo)干部黨章黨規(guī)黨紀(jì)黨史知識培訓(xùn)考試題庫及答案(共240題)
- 過后飯店恢復(fù)通知函
- 貸款委托協(xié)議沒時間
- 婚禮雙十一活動方案策劃
- 福建省福州市金山中學(xué)2024-2025學(xué)年九年級下學(xué)期開學(xué)化學(xué)試題(原卷版+解析版)
- 總隊(duì)本級滅火救援裝備采購 投標(biāo)方案(技術(shù)方案)
- 油氣運(yùn)輸航次合同模板
- 國內(nèi)冷鏈物流公司排名
- 個人創(chuàng)業(yè)實(shí)務(wù)與項(xiàng)目評估手冊
- 項(xiàng)目投資預(yù)算表(各部門)
- 高原健康呼吸用氧 通用技術(shù)指南
- 合同的變更和解除條款
- 中醫(yī)內(nèi)科學(xué)-咳嗽課件
- 2022管理學(xué)試題庫(馬工程)
- 青島版數(shù)學(xué)五年級下冊第二單元《分?jǐn)?shù)的意義和性質(zhì)》教學(xué)評一致性的單元整體備課
- 2023年6月新高考天津卷英語試題真題及答案解析(精校打印版)
- 光儲充車棚技術(shù)方案設(shè)計方案
- 中建支吊架專項(xiàng)施工方案
- 維修驗(yàn)收單完
- 手動報警按鈕(建筑消防設(shè)施檢測原始記錄)
- XX學(xué)校初高貫通銜接培養(yǎng)實(shí)施方案
評論
0/150
提交評論