



版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第1部分《C語言程序設計》習題解答1.1第1章習題解答.選擇題(1)在計算機上可以直接運行的程序是().A.高級語言程序 B.匯編語言程序C,機器語言程序 D.C語言程序【答案】C【解析】機器語言是直接面向機器的,可以直接運行,其他語言都需要編譯。ー個C語言程序由()?A.若干函數組成 B.若干過程組成C.若干主程序組成 D,若干子程序組成【答案】A【解析】C語言程序由一個主函數和零個以上(含零個)非主函數構成。C語言不具有的特點是()?A.具有結構化的控制語句B,數據類型豐富C.語法限制不太嚴格,程序設計自由度大D,在可移植性上,C語言比其他語言差【答案】D【解析】C程序的可移植性好,這是C語言的ー個主要特點。(4)以下敘述不正確的是()。A.ー個C語言程序可由一個或多個函數組成B?ー個C語言程序必須包含一個主函數C.C語言程序的基本組成單位是函數D.在C語言程序中,注釋說明只能位于一條語句的后面【答案】D【解析】在C語言程序中,注釋說明可以位于程序中任意合適的位置。(5)以下敘述正確的是()?C語言比其他語言高級C語言可以不用編譯就能被計算機識別和執行C語言以接近英語國家的自然語言和數學語言作為語言的表達形式C語言出現最晩,所以具有其他語言的一切優點【答案】C【解析】“C語言以接近英語國家的自然語言和數學語言作為語言的表達形式”,這是C語言的定義。(6)編譯C語言程序時,程序中的注釋部分將()。A.不參加編譯,也不會出現在目標程序中B.參加編譯,但不會出現在目標程序中C.不參加編譯,但會出現在目標程序中D.參加編譯,并會出現在目標程序中【答案】A【解析】C語言程序中的注釋不參加程序的編譯與運行。2.填空題(1)計算機語言的發展經歷了ヽ和階段。【答案】機器語言匯編語言高級語言(2)C語言既適合編寫,也適合編寫應用軟件。【答案】系統軟件(3)簡單地說,設計和調試C語言程序要經過ヽ
1.2第2章習題解答.選擇題(1)選出可以作為c語言用戶標識符的ー組標識符(A.void,define,WORDFOR,-abc,CaseA.void,define,WORDFOR,-abc,CaseB.A3_B3,_123,abc2a,Do,Sizeof【答案】B【解析】C語言中的標識符只能由字母、數字和下劃線3種字符組成,第一個字符只能是字母或下劃線,且不允許是系統關犍字。(2)下列運算符優先級最高的是()?A.關系運算符A.關系運算符C.算術運算符B,賦值運算符D.邏輯運算符【答案】C【解析】上述4種運算符中,算術運算符的優先級最高。sizeof(float)是()〇A.一種函數調用A.一種函數調用ー個整型表達式B,ー個不合法的表示形式ー個浮點表達式【答案】C【解析】sizeof。用來獲取ー個數據或數據類型在內存中所占空間的字節數,它的結果返回值為字節數,即為整型值。(4)下列字符串常量不正確的是()。A.'abc'【答案】A【解析】字符串常量指用雙引號括起來的若干字符。(5)下列4個選項均是合法整型常量的是()。160,-Oxffff,011-Oxcdf,Ola,Oxe-01,986,012,0668-0x48a,2e5,Ox【答案】A【解析】本題主要考查十進制、ハ進制、十六進制實型數據的表達方式。(6)以下選項中不屬于C語言類型的是()。A.signedshortint B.unsignedlongintC.unsignedint D.longshort【答案】D【解析】C語言中沒有10ngshort類型。(7)數值029是一個()。A.ハ進制數 B,十六進制數C.十進制數 D.非法數【答案】D【解析】C語言中,以數字〇開頭的數值表示八進制數,ハ進制數的合法字符是〇?7,(8)在C語言中,要求運算數必須是整型的運算符是().A./B.++ C.!= D.%【答案】D【解析】 取余運算(%)要求兩邊的運算數必須是整型。(9)當(Z的值不為。時,以下能將(Z的值賦給變量a、b的是()〇A.c=b=a B.(a=c)||(b=c)C.(a=c)&&(b=c) D.a=c=b【答案】c【解析】本題主要考查邏輯運算的短路特性。(10)若有說明語句“charc='\72-’,則變量c()〇A.包含1個字符 B.包含2個字符C.包含3個字符 D.說明不合法,c的值不確定【答案】A【解析】轉義字符代表一個字符常量。(11)設有說明‘'charw;intx;floaty;doublez;",則表達式"w*x+z-y”值的數據類型為()?A.float B.char C.int D.double【答案】D【解析】混合運算表達式的數據類型為其中精度最高的運算量的數據類型。(12)長整型數據在內存中的存儲形式是()。A.ASCII碼 B.原碼C,反碼 D,補碼【答案】D【解析】任何整型數據在內存中的存儲形式都是補碼。(13)字符型常量在內存中的存儲形式是()。A.ASCII碼 B.BCD碼C.內部碼 D.十進制碼【答案】A【解析】 字符型常量在內存中采用ASCII碼形式存儲。(14)若x、i、j和k都是int型變量,則計算表達式“x=(i=4,j=16,k=32)”后x的值為()?A.4 B.16 C.32 D.52【答案】C【解析】考查逗號表達式的運算規則。逗號表達式的值為最后ー個表達式的值。(15)若有代數式マテ,則下列C語言表達式不正確的是()。A.a/b/c*e*3 B.3*a*e/b/cC.3*a*e/b*c D.a*e/c/b*3【答案】C【解析】3*a*e/b*c對應的代數式為と。be(16)表達式"1091=99"的值是()。A.1 B.非空值 C.0 D.true【答案】A【解析】 關系表達式的值為0或1,其中。表示假,1表示真。(17)若變量t為double類型,表達式“t=l,t*5”,則t的值為()?A.1 B.6.0 C.2.0 D.1.0【答案】D【解析】 該題是問t的值,而不是表達式的值,故為1.0。(18)表示關系"x<=y<=z”的C語言表達式為()。A.(x<=y)&&(y<=z) B.(x<=y)AND(y<+z)C.(x<=y<=y) D.(x<=y)&(y<=z)【答案】A【解析】 多于ー個關系運算符的表達式,在C語言中應該用邏輯運算符連接。(19)在C語言中,int、char和short三種類型數據所占用的內存()〇A.均為2字節 B.由用戶自己定義C,由所用機器的字長決定 D,是任意的【答案】C【解析】C語言中各種類型數據所占內存字節數是由所用機器的字長決定的。(20)下列程序的執行結果是().include<stdio.h>voidmain()(inti=2;printf("%d,%d\n",++1,-i);}A.1,1 B.2,1 C.1,2 D.2,2【答案】B【解析】printf語句是從右向左計算輸出表達式的值。(21)字符串常量"、\\22a,0\n"的長度是().A.8 B.7 C.6 D.5【答案】C【解析】該題主要考查轉義字符的使用。(22)下列敘述錯誤的是()〇A.在C語言程序中,逗號運算符的優先級最低B.在C語言程序中,APH和叩h是兩個不同的變量C,若變量a和b的類型相同,在計算了賦值表達式“a=b”后,b中的值將放入a中,而b中的值不變D.當從鍵盤輸入數據時,對于整型變量只能輸入整型數值,對于實型變量只能輸入實型數值【答案】D【解析】 當從鍵盤輸入數據時,對于實型變量也可以輸入整型值,只不過接收進來之后自動在末尾加".〇”。(23)下列敘述正確的是()?C語言中既有邏輯類型也有集合類型C語言中沒有邏輯類型但有集合類型C語言中有邏輯類型但沒有集合類型C語言中既沒有邏輯類型也沒有集合類型【答案】D【解析】C語言中既沒有邏輯類型也沒有集合類型。2.填空題(1)已知“intx=6;”,則執行語句"x+=x-=x*x;"后x的值是。【答案】-60(2)若w=l,x=2,y=3,z=4,則條件表達式“w>x?w:y<z?y:z”的結果是=【答案】3(3)若“intm=5,y=2;”,則計算表達式"y+=y-=m*=y"后y的值是。【答案】-16(4)在C語言中,ー個int型數據在內存中如果占2字節,貝リint型數據的取值范圍為【答案】ー32768?32767(5)已知字母a的ASCII碼為十進制數97,且設ch為字符型變量,則表達式“ch=H+8-3”的值為。【答案】f(6)若x和n均為!nt型變量,且x和n的初值均為5,則計算表達式“x+=n++”后x的值為,n的值為。【答案】106(7)若有定義“inta=2,b=3;floatx=3.5,y=2.5;",則表達式“(float)(a+b)〃+(int)x%(int)y”的值為?【答案】3.500000(8)下列程序的輸出結果是。#include<stdio.h>intmain()(intk=2,i=2,m;m=(k+=i*=k);printf(”%d,%d\n”,m,i);return0;)【答案】6,4(9)以下程序的執行結果是。include<stdio.h>intmain()(inta,b,c;a=b=l;c=a++-l;printf("%d,%dj,a,c);c+=-a+++(++b11++c);printf(”%d,%d\n”,a,c);return0;)【答案】2,0,3,-1(10)以下程序的執行結果是cinclude<stdio.h>intmain(){intn=023;printf(M%d\n,,,-n);return0;}【答案】18(11)以下程序的執行結果是=#include<stdio.h>voidmain()(inti=10;printf("%d,%d,%d",}【答案】8,9,10(12)以下程序的執行結果是1#include<stdio.h>voidmain()(shortinta=-32768,b;b=a-l;printf("a=%d/b=%d",a,b);}[答案】 a=-32768,b=32767(13)以下程序的執行結果是,#include<stdio.h>voidmain(){intx=042,y=067,z;z=(x?2)&(y?3);printf(”%d、バカ;}【答案】8(14)以下程序的執行結果是#include<stdio.h>voidmain(){intx=10,y=9;inta,b,c;a=(-x==y++)?-x:++y;b=x++;c=y;printf("%d,%d,%d\n",a,b,c);|【答案】8,8,10(15)以下程序輸入123456789,其輸出結果是,#include<stdio.h>voidmain()inta,b;floatf;scanf("%2d%*2d%2d%f"/&a,&b,&f);printf(”%d,%d,%f\n“,a,b,f);}【答案】12,56,789,0000001.3第3章習題解答.選擇題C語言的if語句中,用做判斷的條件表達式為().A.任意表達式 B.邏輯表達式C,關系表達式 D.算術表達式【答案】A【解析】在C語言中,任意類型的表達式都可以用做類型判斷,判斷的標準是:零值為假,非零值為真。(2)若希望當x的值為奇數時,表達式的值為真,x的值為偶數時,表達式的值為假,則以下不能滿足要求的表達式是()。A.x%2==l B.x%2C.!(x%2) D.!(x%2==0)【答案】C【解析】表達式“!(x%2)”與題意剛好相反。(3)已知x=12,y=10.執行語句“y=x>12?x+l:x-l;”后y的值為()。A.13 B.11 C.0 D.10【答案】B【解析】本題主要考查C語言中唯ーー個三目運算符,即關系運算符的使用。(4)已知a=l、b=2、c=3、d=4、m=2、n=2,執行語句"(m=a>b)&&(n=od);"后n的值為()?A.l B.2 C.3 D.4【答案】B【解析】本題主要考查邏輯與運算符的短路特性。(5)下列程序運行后輸出()。#indude<stdio.h>intmain()intx=10,y=20,z=30;
if(x>y)z=x;x=y;y=z;printf(”%d,%d,%d”,x,y,z);return0;}A.x=10,y=20,z=30C.x=20>y=30,z=10【答案】B【解析】如果不是復合語句,(6)下列程序()〇#include<stdio.h>intmain()inta=5,b=0,c=0;if(a=b+c)printfC'UlXn*');elsepnntf("222\nu);return0;}A.有語法錯誤C,不能輸出【答案】DB.x=20,y=30,z=30D.x=20?y=30,z=20if只與其下的第一條語句構成條件結構。B.輸出111D.B.x=20,y=30,z=30D.x=20?y=30,z=20if只與其下的第一條語句構成條件結構。B.輸出111D.輸出222#include<stdio.h>intmain()intm=l;if(m++>l)printf(“%d”,m);elseprintf(“%d”,m??);return0;}A.O B.1 C.2 D.3【答案】C【解析】 該題主要考查自增、自減運算符的位置,若“++”在后,則先取其當前值參與運算,之后再自增1。(8)若x=4、y=-2、z=5?則表達式“++x-y+z++”的值為()〇A.10 B.11 C.12 D.13【答案】12【解析】 因為“++”在前,所以“++X”得到5,減去y之后得到7,因為“++”在后,所以“Z++”先取z當前的值參與計算,之后得到結果為12。(9)下列程序的輸出結果為()〇#include<stdio.h>intmain()(intx=12;while(x-);printf(”%d”,x);return0;}A.-1 B.0 C.11 D.1【答案】A【解析】 因為循環的條件表達式為“x」’,所以當循環條件不成立時,x的值為0,隨后x的值再自減1,故輸出x的值為ー1。(10)C語言允許if…else語句嵌套使用,規定else總是和()配對。A.之前最近的!f B.第1個ifC,縮進位置相同的if D,之前最近的且尚未配對的if【答案】D【解析】 本題考查在嵌套的if結構中需要重點掌握的規則。(11)下列程序執行后的輸出結果是()。#include<stdio.h>intmain()(inti=lj=2,k=3;if(i++==l&&(++j==31|k++==3))printf("%d%d%dツリ,k);return0;)A.1 2 3 B.2 3 4C.2 2 3 D.2 3 3【答案】D【解析】該題主要考查自增運算符與邏輯運算符的結合,重點是邏輯運算符的短路性質。(12)下列敘述正確的是()〇A.break語句只能用于switch語句中B,在switch語句中必須使用defaultC.break語句必須與switch語句中的case配對使用D,在switch語句中不一定使用break語句【答案】D【解析】在switch語句中,break語句不是必須的項。(13)當從鍵盤輸入32時,下列程序的輸出結果為()。#include<stdio.h>intmain()(intx,y;scanf("%dM,&x);y=o;if(x>=0)if(x>0)y=l;}elsey=-i;printf("%d\y);return0;}A.0 B.1 C.-1 D,不確定值【答案】B【解析】 本題主要考查嵌套的if語句的作用。(14)對于下列程序的判斷正確的是()。#include<stdio.h>intmain()(intx=3/y=0/z=0;if(x=y+z)printfC*****");elseprintf("####");return0;}A,有語法錯誤不能通過編譯B.輸出?***C.可以通過編譯,但是不能通過鏈接,因而不能運行D.輸出####【答案】D【解析】if語句的條件表達式為賦值表達式,其值為0。(15)對于下列程序段的描述正確的是()。inta=10:while(a=O)a=a-l;A.循環體語句執行10次 B.循環體語句ー次也不執行C.循環是無限循環 D,循環體語句僅執行ー次【答案】B【解析】循環條件為假,所以一次也不執行。(16)語句“while(!A);”中的表達式“!A”等價于()。A.A==0 B.A==l C.A!=0 D.A!=l【答案】A【解析】 作為循環條件時,!A等價于A==0,A等價于A!=0。(17)下列程序的運行結果是(),,#include<stdio.h>intmain()inta=l,b=2/c=4/t;while(a<b<c){t=a;a=b;b=t;c—;}printf(”%d,%d,%d”,a,b,c);return0;}A.2,1,3 B.2,1,4 C.1,2,0 D.1,2,2【答案】c【解析】 重點理解循環中的條件表達式"a<b<c"與數學上的關系表達式的區別。(18)下列程序的執行結果是()。#include<stdio.h>voidmain()(inta=OJ;for(i=l;i<5;i++)(switch(i)(case0:case3:a+=2;a+=3;a+=5;})printf("%d\n",a);}A.31 B.13 C.10 D.20【答案】A【解析】循環過程中對變量a的增值情況為:8+8+10+5=31。(19)對下列程序的描述正確的是()〇#include<stdio.h>intmain()(inta=3;do{printf("%d\n"/a-=2);}while(!(-a));return0;A.輸出1 B.輸出1和?2C.輸出3和0 D,是死循環【答案】B【解析】 該題主要考查自減運算符與邏輯非運算符的結合性。for俵達式1;;表達式3)可理解為()〇for(表達式1;0J表達式3)for(表達式1;1;表達式3)C.for(表達式1?表達式1:表達式3)D.for(表達式1;表達式3;表達式3)【答案】C【解析】for語句中,省略表達式2相當于條件永為真。(21)下列描述正確的是()〇continue語句的作用是結束整個循環的執行break語句和continue語句的作用相同C.只能在循環體內使用continue語句D.從循環嵌套中退出時,只能使用goto語句【答案】C【解析】continue語句只能用于循環。(22)下列程序段不是死循環的是()。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;【答案】c【解析】c選項中的循環體只執行ー次就結束了,而其他都是死循環。(23)下列程序的運行結果是()。#include<stdio.h>intmain(){inti;for(i=l;i<=5;i++)(if(i%2)printf("*");elsecontinue;print"'#");}printfC'SXn");return0;)A.*#*#*#$ B,ザ#*#*C.*#*#$ D.#*#*【答案】A【解析】 本題主要考查for循環中continue語句的用法。(24)下列程序的運行結果是()〇#include<stdio.h>intmain()(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\n"/x);return0;}A.x=4 B.x=8 C.x=6 D.x=12【答案】B【解析】在雙重循環結構中,continue語句只結束其所在循環的本次循環操作。(25)若w、x、y、z、m均為int型變量,則執行以下語句后的m值是()〇w=l;x=2;y=3;z=4;m=(w<x)?w:x;m=(m<y)?m:y;m=(x<z)?m:z;A.1 B.2 C.3 D.4【答案】A【解析】本題主要考查條件運算符的使用,在“(表達式1)?(表達式2):(表達式3)”中,“表達式1”的值為真時取“表達式2”的值為結果,否則取“表達式3”的值為結果。(26)下列程序段()。for(t=l;t<=100;t++)scanf(“%d”,&x);if(x<0)continue;printf(M%3d",t);}A.當x<0時整個循環結束 B.x>=0時什么也不做C.printf函數永遠也不會被執行 D.最多允許輸出100個非負整數【答案】D【解析】當x的值小于零時,直接進入下一次循環,只有當x的值大于等于零時オ輸出。2.填空題(1)在C語言中,break語句只能用于語句和語句中。【答案】switch循環(2)當a=3,b=2,c=l時,表達式"f=a>b>c"的值是。【答案】〇(3)下列程序段的功能是從鍵盤輸入的字符中統計數字字符的個數,用換行符結束循環。請填空。intn=0,c;c=getchar();while()if()n++;c=getchar();)【答案】c!='\n'c>='0'&&c<='9'(4)下列程序的功能是計算2?100的偶數的累加和。請填空。#include<stdio.h>intmain()(inti,sum=0;for()sum+=i;printf("sum=%d\n",sum);return0;}【答案】i=2;i<=100;i+=2(5)下列程序的輸出結果是〇#include<stdio.h>intmain()(inta=100/x=10/y=20zokl=5/ok2=0;if(x<y)if(y!=10)if(!okl)a=l;elseif(ok2)a=10;a=-l;printf("%d\n”,a);return0;)【答案】-1(6)下列程序運行后輸出 ?#include<stdio.h>intmain()(intx=l,y=2;switch(x)(case1:switch(y)(printf(”%d",x);break;printf("%dツy);break;)case2:printf(n3");)return0;}【答案】23(7)下列程序的功能是找出整數的所有因子。請填空。#include<stdio.h>intmain(){intnJ;scanf("%d”,&n);for(i=l;;i++)|if( )printf("%3d"J);}printf(H\n");return0;)【答案】i<=n/2n%i==0(8)下列程序執行后的輸出結果是〇#include<stdio.h>intmain()inta=3;do{a-;}while(!a==0);return0;}【答案】***(9)下列程序的執行結果是,/include<stdio.h>intmain()(inti=l,n二〇,s=l;do(n=n+s*i;s=-s;i++;}while(i<=9);printf(”%d”,n);return0;|【答案】5(10)下列程序運行后輸出〇#include<stdio.h>intmain()(inta,b=19;while(a=b-l){b-=3;if(b%5==0)(a++;continue;)elseif(b<5)break;a++;)printf("%d,%d\n",a,b);return0;【答案】6,4(11)下列程序的運行結果是〇include<stdio.h>intmain()|inti=l;while(i<=15)if(++i%3!=2)continue;elseprintf("%d\t"J);printf("\n");return0;}【答案】2581114(12)下列程序的功能是打印!00以內個位數為6且能被3整除的所有數。請填空。#include<stdio.h>intmain(){intij;for(i=0;;i++)(j=i*10+6;if()continue;printf("%dnJ);)return0;}【答案】i<=9j%3!=0(13)下列程序的運行結果是。#include<stdio.h>intmain()(inti=5;do(switch(i%2)(case4:i-;break;case6:i-;continue;)i一;i一;printf(H%d\t",i);}while(i>0);return0;)【答案】31-193c:?13(14)下列程序的功能是計算分數數列前20項的和:—,-〇請填空。1235 8#include<stdio.h>intmain(){floats=0.0;intしa,b,t;for(;i<=20;i++)(s+=;t=a+b;b=a;a=t;}printf("s=%.2f"zs);return0;)【答案】a二2,b=1,i=l(float)(a)/b(15)下列程序的功能是根據公式e=1+-+-+-+…求e的近似值,要求精1! 2! 3!度為104請填空。#include<stdio.h>intmain()(inti;doublee,new;new=1.0;for(i=l;;i++){new/=(double)i;e+=new;}printf("e=%f\n"/e);return0;【答案】e=1.0new>=le-63.編程題(1)從鍵盤輸入任意ー個整數,判斷其是否為偶數。【參考源程序】#include<stdio.h>intmain(){intn;printf(*'pleaseinputanumber:\n");scanf(“%dツ&n);if(n%2==0)printf("Yes!");elseprintf("No!");return0;)(2)有如下函數:x,(x<1)
y=<2%-1,(1<%<10)
3x-1, >10編寫程序,使輸入x時,輸出相應的y值。【參考源程序】#include<stdio.h>intmain()(intx,y;printf(*'pleaseinputthex:\n");scanf("%d"z&x);if(x<l)y=x;elseif(x>=l&&x<10)y=2*x-l;elseif(x>=10)y=3*x-l;printf("yis%d"/y);return0;}(3)輸入一個整數,若該數能夠被3和7整除,則輸出2;若只能被3和7中的一個整除,則輸出1;若不能被3和7中的任意ー個整除,則輸出0。【參考源程序】#include<stdio.h>intmain()intn,m;printf(Hpleaseinputn:\n");scanf("%d"z&n);if(n%3==0&&n%7==0)m=2;elseif(n%3==0||n%7==0)m=l;elsem=0;printf(*'theresultis%d"/m);return0;}(4)愛因斯坦的階梯問題。愛因斯坦曾提出這樣一道有趣的數學題:有一個長階梯,若每步上2階,最后剩1階;若每步上3階,最后剩2階;若每步上5階,最后剩4階;若每步上6階,最后剩5階:只有每步上7階,最后剛好一階不剩。問該階梯至少有多少階?編寫程序解決這個問題。【參考源程序】include<stdio.h>intmain()(inti,n=l,m=l;while(m)(if(n%2==l)if(n%3==2)jf(n%5==4)if(n%6==5)if(n%7==0)(printf("%d",n);m=0;)n++;}return0;}(5)輸出所有的水仙花數。水仙花數是一個3位整數,它的各位數字的立方和等于該數本身。【參考源程序】#include<stdio.h>intmain()(inti,a,b,c;for(i=100;i<1000;i++)a=i%10;b=i/10%10;c=i/100;if(a*a*a+b*b*b+c*c*c==i)
printf("%dソ);)return0;}(6)編寫程序,打印九九乘法表。【參考源程序】include<stdio.h>intmain(){inti,j;for(i=l;i<10;i++){for(j=l;j<=i;j++)printf("%3d"J*j);printf("\n");}return0;}(7)編寫程序,打印如下圖形。********************??*【參考源程序】#include<stdio.h>intmain()(intij;for(i=l;i<=4;i++){for(j=l;j<=4-i;j++)printf("");for(j=l;j<=2*i-l;j++)printf("*");printf("\nH);for(i=l;i<=3;i++)for(j=l;j<=i;j++)printf("");for(j=l;j<=7-2*i;j++)printfC'*");printf("\n");}return0;)(8)用公式エ=1ー丄+丄ー丄+…求兀的近似值,直到最后ー項的絕對值小于4 3 5 710-6為止。【參考源程序】#include<stdio.h>intmain()(floatsum=0.0,t=1.0,s=?l;inti=l;while(t>le-6){s=s*(-l);t=t*s;sum+=t;t=1.0/(2*i+l);i++;)sum=sum*4;printf(”%f”,sum);return0;)(9)ー個數如果恰好等于它的因子之和,就稱其為完數。例如,6的因子為1、2、3,而6=1+2+3,因此6是完數。編寫程序找出1000以內的所有完數,并按下面格式輸出其因子:6itsfactorsare1,2,3〇【參考源程序】#include<stdio.h>intmain(){inta,i,m;for(a=l;a<=1000;a++){for(m=0J=l;i<=a/2;i++)if(!(a%i))m+=i;if(m==a)(printf("%4ditsfactorsare”,a);for(i=l;i<=a/2;i++)if(!(a%i))printf("%d"J);printf("\nM);)}return0;}(10)給出任意ー個不多于5位的正整數,要求如下:①求出它是幾位數。②分別輸出每一位數字。③按逆序輸出各位數字。例如,原數為321,則輸出123。【參考源程序】#include<stdio.h>intmain()(intn,m,i,a,b,c,d,e,j=0;scanf(“%d”,&n);m=n;while(n)(j++;n/=10;}printf("%d\n"J);a=m/10000;if(a!=0)printf("%d\a);b=m%10000/1000;if(b!=O)printf("%d",b);c=m%1000/100;if(c!=0)printf(“%dツc);d=m%100/10;if(d!=O)printf(“%d”,d);e=m%10;if(e!=0)printf("%d\n”,e);n=m;while(n){i=n%10;printf("%dソ);n/=10;)return0;}1.4第4章習題解答.選擇題(1)以下有關c語言中數組的說法正確的是().A.數組元素的數據類型可以不一致.數組元素的個數可以不確定,允許隨機變動C,可以使用動態內存分配技術定義元素個數可變的數組D.定義ー個數組后就確定了它所容納的具有相同數據類型元素的個數【答案】D【解析】C語言中一個數組所有元素的數據類型必須相同,且不存在元素個數可變的數組。(2)若有定義“intaH3]={0,0};”,則下列描述正確的是()?A,數組a的每個元素都可得到初值0.二維數組a的第一維的大小為4C,數組a的行數為2D,只有元素a[0]⑼和a[0][1]可得到初值0,其他元素均得不到初值【答案】A【解析】二維數組初始化時,沒有賦初值的數組元素的值都為O。(3)下列語句錯誤的是()?staticcharword[]={'C,'h',T,'n*,'a'};staticcharword[]={"China"}:staticcharword[]="China";staticcharword[]='China';【答案】D【解析】單引號只能括起單個字符,不能括起一個字符串。(4)下列對ー維數組a的說明正確的是().A.inta(10); B.intn=10,a[n];C.intn; D.#defineSIZE10scanf("%d",&n); inta[SIZE];inta[n];【答案】D【解析】定義數組時,數組名后的表達式一定是ー個常量表達式。(5)若有定義“inta[3][4];”,則對a的數組元素引用正確的是()。A.a[2][4] B.a[l,3]C.a[l+l][O] D.a(2)(l)【答案】C【解析】對數組元素的引用,應注意下標越界問題和使用格式與其他語言的區別。(6)對于下列程序的說法正確的是()。①main()②{(3) floata[10]={0.0};inti;for(i=0;i<3;i++)scanf("%d",&a[i]);for(i=l;i<10;i++)a[0]=a[0]+a[i];printf("%f\n",a[O]);⑧}A.沒有錯誤 B.第③行有錯誤C.第⑤行有錯誤 D.第⑦行有錯誤【答案】C【解析】函數scanf()接收數據的格式不正確。(7)下列程序的運行結果是()。#include<stdio.h>voidmain(){inta[6],i;for(i=l;i<6;i++){a[i]=9*(i-2+4*(i>3))%5;printf("%2dHza[i]);)}A.-4 0 4 0 4 B. -4 0 4 0 3C.-4 0 4 4 3 D. -4 0 4 4 0【答案】C【解析】本題主要考查表達式的混合運算及對數組元素的賦值。(8)下列對C語言字符數組的描述錯誤的是().A,字符數組可以存放字符串B.字符數組中的字符串可以進行整體輸入/輸出C.可以在賦值語句中通過賦值運算符對字符數組進行整體賦值D.字符數組的下標從〇開始【答案】C【解析】 不可以在賦值語句中通過賦值運算符“デ對字符數組進行整體賦值,應該使用函數strcpy()進行賦值。(9)對下列程序段的描述正確的是()。chara[3],b[]="China11;a=b;printf(”%s”,a);A.運行后將輸出China B,運行后將輸出ChC,運行后將輸出Chi D.編譯出錯【答案】D【解析】數組名是地址常量,程序運行過程中不允許修改其值。(10)判斷字符串si是否大于字符串S2,應當使用().A.if(sl>s2) B.if(strcmp(sl,s2))C.if{strcmp(s2,sl)>0) D.if(strcmp(sl,s2)>0)【答案】D【解析】本題主要考查字符串比較函數的使用。(11)已知"charcl[卜{"abed"};charc2[]={'a','b','c','d'};",則下列描述正確的是()〇A,數組cl和數組c2等價 B.數組cl和數組c2的長度相同C,數組cl的長度大于數組C2的長度D.以上都不對【答案】C【解析】cl的長度為字符串中字符的個數加1,所以cl的長度大于c2的長度。(12)下列程序的運行結果是()。include<stdio.h>voidmain()(charstr[]="SSSWLIA",c;intk;for(k=2;(c=str[k])!KKG-*22='\0';k++)(switch(c){caseT:++k;break;case'L':continue;default:putchar(c);continue;)putchar('*');)}A.SSW* B.SW* C.SW*A D.SW【答案】B【解析】 本題主要考查for循環中嵌入switch語句,以及break和continue語句的用法。(13)已知"charstringl[10]="abede",string2[10]="xyz";",則語句"printf("%d",strlen(strcpy(stringl,string2)));”的輸出結果是()。A.3 B.5 C.8 D.9【答案】A【解析】函數strcpy()主要實現字符串復制操作,包括字符串末尾的へ〇,一起復制。(14)下列程序的輸出結果是()。#include<stdio.h>#include<string.h>voidmain()chars[]="
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030中國園林養護行業發展趨勢與前景展望戰略研究報告
- 2025-2030中國半脫魚粉行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國醫藥電子商務行業市場深度調研及發展趨勢與投資前景預測研究報告
- 2025-2030中國醫學和生物傳感器行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國健康食品行業市場深度調研及競爭格局與發展趨勢研究報告
- 2025-2030中國保護性文化行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國體內合同研究機構行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國云管理的文件傳輸行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國BFSI中的大數據分析行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國3D打印機行業市場發展分析及前景趨勢與投資研究報告
- 高中英語外刊-小貓釣魚50篇
- 礦山機械全套教學課件
- DL-T5706-2014火力發電工程施工組織設計導則
- 化學-山東省名校考試聯盟2023-2024學年高一下學期5月期中檢測試題和答案
- 幸福心理學智慧樹知到期末考試答案章節答案2024年浙江大學
- 新版王者榮耀答題闖關
- 山東省日照市東港區2023-2024學年六年級下學期期中數學試題
- 人際交往與溝通課件第五章 人際交往的語言溝通與非語言溝通
- 人工智能倫理導論- 課件 第3、4章 人工智能倫理、人工智能風險
- 護士團隊建設指南如何帶領和管理護理團隊
- 華為QSA審核報告
評論
0/150
提交評論