



版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
習(xí)題解析與答案第1章C語(yǔ)言概述一?簡(jiǎn)答題1.概述C語(yǔ)言的主要特點(diǎn)?!窘獯稹?1)語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活。(2)數(shù)據(jù)類(lèi)型豐富,表達(dá)能力強(qiáng)。(3)運(yùn)算符多樣。C語(yǔ)言中的運(yùn)算符包含的范圍非常廣泛。(4)具有結(jié)構(gòu)化的控制語(yǔ)句。如if…else語(yǔ)句、while語(yǔ)句、dowhiIe語(yǔ)句、switch語(yǔ)句、for語(yǔ)句。(5)允許直接訪問(wèn)物理地址。C語(yǔ)言中含有的位和指針運(yùn)算,能夠直接對(duì)內(nèi)存地址進(jìn)行訪問(wèn)操作。(6)所生成的目標(biāo)代碼質(zhì)量高,可移植性好。.構(gòu)成C語(yǔ)言程序的基本單位是什么?它由哪幾部分組成?【解答】函數(shù)是構(gòu)成C語(yǔ)言程序的基本單位。ー個(gè)完整的C程序一般由文件包含、宏定義、函
數(shù)說(shuō)明、變量和一個(gè)或若干個(gè)函數(shù)組成。.C語(yǔ)言程序的運(yùn)行一般要經(jīng)過(guò)哪幾個(gè)步驟?【解答】(1)編輯;(2)編譯;(3)連接,生成EXE文件;(4)執(zhí)行。二.運(yùn)行程序?qū)懡Y(jié)果1.輸入下面程序并運(yùn)行。main()Inta1,a2,x;a1=1O0;a2=50;x=a1~a2.printf x二%d\n",x);2T輸maa?zl\2(2T輸maa?zl\2(,?,aXI1?-〇?ft
ao211n
t1--ani
n--2--ir?11aXrp
.apXJ2a9a【解答】運(yùn)行結(jié)果為:a1^10,a2=20x=2003.輸入下面程序并運(yùn)行。#incIudemain()pppppfffff
ttttt
pppppfffff
ttttt
nnnnn\nn*\n**\******printf("*\n");【解答】運(yùn)行結(jié)果為:思考:可以修改程序,使之輸出平行四邊形,等腰三角形等圖形。三,編程題1.參照本章例題,編寫(xiě)ー個(gè)C程序,用于顯示如下信息:IIoveCprograms!【分析與提示】①要有文件包含語(yǔ)句#incIudeprintf等②main是主函數(shù)的名稱(chēng)。用{}括起來(lái)的內(nèi)容是函數(shù)體,函數(shù)體由若干條語(yǔ)句組成,這是計(jì)算機(jī)要執(zhí)行的部分,每條語(yǔ)句以分號(hào)“;”結(jié)束。③注意顯示的信息有三行,所以要用到換行符“\n"〇參考代碼:#incIudemain()prInlt\不ネネ不ネ本本ネネネキネネネネ本本ネネネ本本ネネ、n)ff11nnrruIIoveCprograms!\n"):ff11nnrr11 i^C? \ff\\ I第2章 數(shù)據(jù)類(lèi)型及其運(yùn)算一.簡(jiǎn)答題1.C語(yǔ)言中的數(shù)據(jù)類(lèi)型主要有哪幾類(lèi)?【角單答】短整型(shortmt)TOC\o"1-5"\h\z整型整型(int) C-長(zhǎng)整型(longint) し基本類(lèi)型字符型(cha廣單精度(fIo*) 「實(shí)型(浮點(diǎn)型) y雙精度(double) し枚舉類(lèi)型(enum) ,數(shù)組類(lèi)型 / r構(gòu)造類(lèi)型結(jié)構(gòu)體類(lèi)型(struct)y共用體類(lèi)型(union) し指針類(lèi)型、空類(lèi)型(void).字符常量與字符串常量有什么區(qū)別?【解答】字符常量用單括號(hào)括起,字符串常量用雙括號(hào)括起;字符常量存儲(chǔ)時(shí)占1個(gè)字節(jié),字符串常量存儲(chǔ)時(shí)除了n個(gè)字符外,還有系統(tǒng)加上的字符串終止符、〇,所以字符串常量存儲(chǔ)時(shí)占n+1個(gè)字節(jié)。.C語(yǔ)言中的常量包括哪幾類(lèi)?各自是如何構(gòu)成的?【解答】C語(yǔ)言中的常量是一些其值預(yù)先定的量,并且在程序執(zhí)行過(guò)程中其值不再發(fā)生變化。常量的分類(lèi)遵循基本數(shù)據(jù)類(lèi)型分類(lèi)原則,C語(yǔ)言編譯系統(tǒng)自動(dòng)將其存放在于類(lèi)型相應(yīng)的內(nèi)存單元中。其類(lèi)別包含整形常量、浮點(diǎn)常量、字符常量、字符串常量和枚舉常量。整形常量又分為十進(jìn)制整形常量、ハ進(jìn)制整形常量、十六進(jìn)制整形常量。浮點(diǎn)常量分成十進(jìn)制形式和指數(shù)形式。C語(yǔ)言中的,字符常量是用單括號(hào)括起來(lái)的一個(gè)字符或是字符序列,而字符串常量是用一對(duì)雙括號(hào)括起來(lái)的零個(gè)或者多個(gè)字符組成的序列。.簡(jiǎn)述指針、變量的指針、變量的值、指針變量與指針變量的值的含義是什么?【解答】C語(yǔ)言中將地址又稱(chēng)為“指針”。ー個(gè)變量所分配的內(nèi)存空間首字節(jié)地址,稱(chēng)為該變量的指針G也址),變量的值就被放入所分配的地址單元中。地址一旦被分配,就不會(huì)再改變,所以,指針是ー個(gè)常量。既然是常量就可以把它賦給ー個(gè)變量。用來(lái)存放指針的變量,被稱(chēng)為指針變量。ー個(gè)指針變量的值是變量的地址,ー個(gè)指針變量可以被賦予不同的指針值。.下面哪些是不合法的常量?說(shuō)明不合法的理由?!窘獯稹糠欠ǔA坑?0892——含有非八進(jìn)制數(shù)字8和96.下面對(duì)變量定義的語(yǔ)句哪些不正確?為什么?請(qǐng)改正。(1)chard,inta2;(2)INTa,b;FL0ATx,y;a,b:char;charif;(5)inta,b(6)lnta:b:c;inta,x;floatx,y;【解答】(1)chard,inta2;錯(cuò)誤。定義不同類(lèi)型的變量時(shí),應(yīng)用分號(hào)彼此分開(kāi)。改正為:chard;inta2;INTa,b;FL0ATx,y;錯(cuò)誤。C語(yǔ)言中表示類(lèi)型名的關(guān)鍵字必須小寫(xiě)。改正為:inta,b;floatx,y;a,b:char;錯(cuò)誤。C語(yǔ)言中變量定義格式為:類(lèi)型名變量名;改正為:chara,b;charif;錯(cuò)誤。變量名不能與C語(yǔ)言的關(guān)鍵字重名。改正為:charfl;inta,b錯(cuò)誤。變量定義以語(yǔ)句形式出現(xiàn),應(yīng)以分號(hào)結(jié)尾。改正為:inta,b;Inta:b:c;錯(cuò)誤。類(lèi)型名不能有大寫(xiě)字母,相同類(lèi)型名之間用逗號(hào)分隔。改正為:inta,b,c;inta,x;floatx,y;錯(cuò)誤。在同一程序位置上,同一變量名不能重復(fù)定義充當(dāng)兩個(gè)不同的變量。改正為:inta,x;fIoatxl,y;7.下述字符串常量的長(zhǎng)度是多少?在內(nèi)存中存儲(chǔ)時(shí)各自占用的單元數(shù)又是多少?(1)“Hello!"(2)aABC\n\\TH\064\?"“\xAB*\765+123二?”【解答】“Hello!”字符串長(zhǎng)度為6,占用內(nèi)存字節(jié)數(shù)為7〇“ABC\n\\TH\064ヽ?"字符串長(zhǎng)度為9,占用內(nèi)存字節(jié)數(shù)為10。因?yàn)槠渲?、n\\\064ヽ?各自只占一個(gè)字符的位置?!癨xAB*\765+123=?”該字符串不是合法的,因?yàn)椤?65表示的值太大,超出合法的ASCII字符集的范圍。二.運(yùn)行程序?qū)懡Y(jié)果.以下程序的執(zhí)行結(jié)果是〇main()(inti,j;i=15;printf("%d,%d”,i++,i一);)【解答】14,15.以下程序的執(zhí)行結(jié)果是。main()inta=20,b=10,c,*p1,*p2;p1=&a;p2=&b:c二(-*pO/(*p2)+6;
prpra(C“f”/(\prpra(C“f”/(\t/(\fnftitnrn?IP-IJ,da%,ーー“2np;\\*\17d,cc,ーー%Hb=n\dpd%*%n\*p1,*p2);【分析與提示】a【解答】a=20,b=10*p1=20,*p2=10c=4.以下程序的執(zhí)行結(jié)果是。#incIudemain()(chara='G‘,b二’〇',c二'o',d='d'a二a+32;b二b-6;c二c+3;d二d+8;intキ("%c%c%c%c\n",a,b,c,d);【分析與提示】從ASCII代碼表可以看出,字符“G”、“〇”、“〇"、"d"的ASCII代碼值為71ヽ111 . 101 因立匕,'G'+32、'〇'一6、'〇'+3、'd'+8的值分別是103、105、114、108,它們所對(duì)應(yīng)的字
符分別是“g"、"是’、"ビ、常用結(jié)論:(1)在C語(yǔ)言中,字符數(shù)據(jù)可以按其ASCII代碼值參加整數(shù)運(yùn)算。由于英文字母在ASCII代碼表中是按順序排列的,所以在計(jì)算‘?!?3代表的字母時(shí),可從字符'〇'其順序向后取3個(gè)字母,該字母是ur"〇(2)從ASCII代碼表可以看出“小寫(xiě)字母''-“對(duì)應(yīng)大寫(xiě)字母”的結(jié)果是32,因此可推算出如下等式:大寫(xiě)字母的ASCII值+32=對(duì)應(yīng)小寫(xiě)字母的ASCII值;小寫(xiě)字母的ASCII值ー32ニ對(duì)應(yīng)大寫(xiě)字母的ASCII值?!窘獯稹縢irl4.以下程序的執(zhí)行結(jié)果是。#incIudemain()iXpXpXp)一X6X6X5“-“一“*(5(%(4f%f4f;+t4t*tX3n+n3nt-i3i-in--r--r--r61?Az%diXpXpXp)一X6X6X5“-“一“*(5(%(4f%f4f;+t4t*tX3n+n3nt-i3i-in--r--r--r61?Az%d%d%dIn*zInTn【分析與提示】x1=11是17,17-6等于11)x);X);X);(4*5是20,-3+20x2=1(4%5等于4,3+4等于7,7-6等于1)x3=0(-3*4等于ー12,-12%-6等于〇)【解答】x1=11x2=1x3=0,以下程序的執(zhí)行結(jié)果是。#incIudemain()10"ccn%%\\?,ddd%%%10"ccn%%\\?,ddd%%%+8o+8o98\17Q/nL4nL<\u"oNn%【分析與提示】0(NULL的ASCII碼值是〇)49,1(數(shù)字1的ASCII碼值是49)58,:,72(48+10等于58,正好是“:”的ASCII碼值,ハ進(jìn)制表示是y2)【解答】〇49,158,:,72三、改錯(cuò)題請(qǐng)修改下列程序,使其能夠通過(guò)編譯。#incIudeVoidMain()inta=6;b=8;intc;c=a*b;printf('%d',c);)【答案】錯(cuò)誤的地方有3處:(1)第2行關(guān)鍵字應(yīng)該小寫(xiě);(2)定義b時(shí)前面應(yīng)該用逗號(hào);(3)打印語(yǔ)句的格式應(yīng)該用雙引號(hào)括起來(lái)。正確的程序如下:#incIudevoidmain()(inta=6,b=8;intc;c=a*b;printf("%d",c);)2.請(qǐng)修改下列程序,使其能夠正確運(yùn)行。#incIudevoidmain();fIoatchare="c”;printf(“%d\n”,int(f%3));printf("%c”,c);)【答案】錯(cuò)誤的地方有3處:(1)第2行main。;不應(yīng)該有分號(hào);(2)定義chare二"c”;時(shí),字符常量應(yīng)該用單引號(hào);(3)打印語(yǔ)句printf("%d\n”,int(f%3));的格式有錯(cuò),應(yīng)該在f前的int用括號(hào)括起來(lái),因?yàn)閷?shí)型數(shù)據(jù)不能執(zhí)行取余運(yùn)算。正確的程序如下:#incIudevoidmain()(floatchare二'c';printf("%d\n",((int)f%3));printf("%c",c);第3章順序結(jié)構(gòu)程序設(shè)計(jì)一,簡(jiǎn)答題.程序有哪三種基本結(jié)構(gòu)?【解答】程序的三種基本結(jié)構(gòu)為:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。.C語(yǔ)言的語(yǔ)句有哪幾類(lèi)?表達(dá)式語(yǔ)句與表達(dá)式有什么不同?【解答】C語(yǔ)句可分為以下五類(lèi):表達(dá)式語(yǔ)句、函數(shù)調(diào)用語(yǔ)句、控制語(yǔ)句、復(fù)合語(yǔ)句和空語(yǔ)句。其中表達(dá)式語(yǔ)句與表達(dá)式的區(qū)別在于表達(dá)式語(yǔ)句是表達(dá)式加上「”組成。二、填空題1.符號(hào)'&'是 運(yùn)算符,&a是指C語(yǔ)言中的空語(yǔ)句就是〇Scanf函數(shù)中的“格式字符”后面應(yīng)該是,而不應(yīng)該疋〇若想輸出字符%,則應(yīng)該在“格式字符”的字符串中用表示。intx=7;執(zhí)行x+二x一二x+x;后x的值是inta=10,b=20;a+=b;b=a-b;a-=b;的功能是〇答案:1.地址、變量a的內(nèi)存地址。.ー個(gè)分號(hào)。.變量地址,變量名。.連續(xù)2個(gè)%號(hào)。.-14.交換變量a,b的值,打印出a—20,b—10〇三?運(yùn)行程序?qū)懡Y(jié)果%下程序的執(zhí)行結(jié)果是。#incIudemain()doubIeintx,y;j)rintf("%d\n",d*y);【解答】〇2.以下程序的執(zhí)行結(jié)果是。main()doubed;fIoatf;IongI;inti;i=f==d=20/3;orintf("%d%ld%f%f\n",i,l,f,d);【解答】66.?下程序的執(zhí)行結(jié)果是。main〇intk=17:printf(?,%d,%o,%x\n",k,k,k);
【解答】17,21,11.以下程序的執(zhí)行結(jié)果是。#incIudemain()cabcd二::cnnnn;y\\\\dcabcd二::cnnnn;y\\\\drcccc§1234of%%%%‘,ffffalttttrAnnnn可以用%d格式輸出,所以與%md近似,m指出了要輸出數(shù)據(jù)的寬度。若數(shù)據(jù)位數(shù)小于m,則左端補(bǔ)空格,若數(shù)據(jù)位數(shù)大于m,則按實(shí)際位數(shù)輸出。【解答】ABCD.以下程序的執(zhí)行結(jié)果是。#incIudemain()d%-Aod%-Aoeft,rnn1aa-—cher,-csP2)C1【解答】運(yùn)行輸入:ABく回車(chē)〉運(yùn)行結(jié)果為
c1=A,c2=A,c3=65,c4=66.以下程序的執(zhí)行結(jié)果是。#incIudemain()scanfぐ‘%c:%c",&d,&c2);++c1;—c2?yrintf("d=%c,c2=%c\n",d,c2);【分析與提示】例如當(dāng)輸入B,Cく回車(chē)),B,C的ASCII碼值為66,67,執(zhí)行+e—c2;后,c1為66+1變成67即C,c2為67-1變成66即B?!窘獯稹窟\(yùn)行輸入:B,Cく回車(chē)),運(yùn)行結(jié)果為:c1=C,c2=B.以下程序的執(zhí)行結(jié)果是。main()charch='a';inta=98;unsignedb=iOOO;Iongc=123456789;fIoaKIkikikiKIKIDnD?i>Ja=%c,ch=%d,ch=%c\n23456\\laKIkikikiKIKIDnD?i>Ja=%c,ch=%d,ch=%c\n23456\\la,,nu——fe\/on^/n^/o^/n^/n^/=====bcXXy【解答】(1)a二98,a二b,ch二97,ch=a
(2)b=1000
8.以下程序的執(zhí)行結(jié)果是。⑶c=1234567898.以下程序的執(zhí)行結(jié)果是。,&b);",x);2,2く回車(chē)),運(yùn)行結(jié)果9.當(dāng)輸入12345,a時(shí),給出程序的運(yùn)行結(jié)果,執(zhí)行結(jié)果是。main()inta;charc;scanf("%3d.%c",&a,&c);printf("\n%d,%d\n\a,c);【分析與提示】%md,m指出了要輸出數(shù)據(jù)的寬度。若數(shù)據(jù)位數(shù)小于m,則左端補(bǔ)空格,若數(shù)據(jù)位數(shù)大于m,則按實(shí)際位數(shù)輸出。a的ASCII碼值是97〇【解答】12345,97
.分析下面程序,在鍵盤(pán)上輸入數(shù)據(jù)才能使得變量"10,b=20,c1='A',c2二'a'程序如下:main()inta,b;fIoatx,y,z;chard.c2;scanf(S5d%5d%c%c%f%f%*f,%f",&a,&b,&c1,&c2,&x,&yt&z);printf(ゝa二%d,b二%d,c1二%c,c2=%c,x=%f,y=%f,z=%f",a,b,c1,c2,x,y,z);【分析與提示】按%5d格式輸入a與b的值時(shí),要先鍵入三個(gè)空格,然后再鍵入10與20o%*f是用來(lái)禁止賦值的。在輸入時(shí),對(duì)應(yīng)%*f位置可以隨意輸入一個(gè)數(shù)(我們輸入,該數(shù)不會(huì)賦值給任何變量的)。【解答】運(yùn)行輸入:一一一10--一一一く回車(chē)》.ー個(gè)程序中,使用了多個(gè)scanf'A',c2二'a'輸入到每個(gè)變量,應(yīng)該如何輸入數(shù)據(jù)?main()nlhftcfaarntoaaX1scam
scanf-Az----1aycaxe",,cddf%%%%nlhftcfaarntoaaX1scam
scanf-Az----1aycaxe",,cddf%%%%----""cdde%%%%-------2b
byc,&&1f
,,c%
ax&--di2=%c\n'',a,b,x,y,d,c2);【分析與提示】在使用多個(gè)scanf函數(shù)輸入數(shù)據(jù)時(shí),第一個(gè)輸入行末尾輸入的回車(chē)被第二個(gè)scanf函數(shù)吸收,因此在第二、三個(gè)scanf函數(shù)的雙引號(hào)后放置ー個(gè)空格以抵消上行輸入的回車(chē)鍵。若沒(méi)有一個(gè)空格,則按上面輸入的數(shù)據(jù)會(huì)出錯(cuò)。【解答】運(yùn)行輸入:a=3,b=4く回車(chē))X=8,く回車(chē))C仁AC2二aく回車(chē)〉四,編程題.由鍵盤(pán)輸入1個(gè)字母,輸出其ASCII碼值?!痉治雠c提示】將一個(gè)字符常數(shù)賦給ー個(gè)字符變量,并不是把該字符本身放到內(nèi)存單元中去,而是將該字符的ASCII代碼放到內(nèi)存單元中,因此,字符型數(shù)據(jù)也可以像整型數(shù)據(jù)那樣使用,可以用來(lái)表示一些特定范圍內(nèi)的整數(shù)。所以int型與char型變量的值可以互換,分別用%c和%d不同格式輸出就行了。但是注意這種轉(zhuǎn)換是有條件的。因?yàn)?char變量在內(nèi)存占ー個(gè)字節(jié),而int整型變量占2個(gè)字節(jié)。當(dāng)int型高位字節(jié)是〇時(shí),char與int可以互換;若不是〇,則不可以互換。例如,用%c格式輸出時(shí),取低位字節(jié),高位字節(jié)被舍棄。參考代碼:#incIudemain()charch;ch=getchar();printf("%c,%d",ch,ch);【解答】運(yùn)行輸入:Bく回車(chē))運(yùn)行結(jié)果:B,66.從鍵盤(pán)上輸入一個(gè)大寫(xiě)字母,把它轉(zhuǎn)換成小寫(xiě)字母,然后顯示出來(lái)。【分析與提示】大寫(xiě)字母轉(zhuǎn)換小寫(xiě)時(shí)ASCII碼值+32,相反的,小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)字母時(shí)ASCI!碼值ー32。參考代碼:#incIudemain()charxl,x2;printf("x1=?\n");scanf("%c",&x1);x2=x1+32:printf("妬,%c\n",x1,x2);
【解答】運(yùn)行輸入:Aく回車(chē))
運(yùn)行結(jié)果:A,a.從鍵盤(pán)上輸入兩個(gè)實(shí)型數(shù),求兩數(shù)的和、差、積,輸出結(jié)果時(shí)要求小數(shù)部分占兩位?!咎崾尽拷Y(jié)果要求保留2位小數(shù),所以輸出的結(jié)果格式為加2f0main()f2Xnハ;x\17tyu&p,;nXc?I,e,f2Xnハ;x\17tyu&p,;nXc?I,e,bSH,afae%?z^iJypfをa/x("tf(,y%f--2y?f-%y--+XXtfyyytt)nn+一?nnciaXXX ‘rc------rrbPSabcpp,a)【解答】運(yùn)行輸入:pIeaseinputx,y:10,20く回車(chē))運(yùn)行結(jié)果x.編寫(xiě)ー個(gè)程序,求出給定半徑r的圓以及內(nèi)正n邊形的面積,并且輸出計(jì)算結(jié)果?!负蚽的值由用戶(hù)輸入。【分析與提示】由數(shù)學(xué)知識(shí)得到:半徑為r圓的面積5=病,半徑為r圓的內(nèi)接正n邊形的面
ォ只A=nr2sina/2,^し中a=2乃/〃處理步驟:提示信息,接收參數(shù)值;計(jì)算圓的面積;計(jì)算正n邊形的面積;輸出結(jié)果。參考代碼:incudeincudedefinePImain()\n")asearea(bisnrf\n")asearea(bisnrf?,+jtnantO-—n—r?IrTpnputtneradiusandtneN.:printf("S=%.2f\tA二%.2f\n",s,area);return(0);)運(yùn)行結(jié)果如下:PIeaseinouttheradiusandtheN.;15S二5.已知華氏溫度與攝氏溫度之間的轉(zhuǎn)換公式是:c=5/9x(ドー32),編寫(xiě)一個(gè)程序,將用戶(hù)輸入的華氏溫度轉(zhuǎn)換成攝氏溫度,并予以輸出?!痉治雠c提示】首先要定義輸入輸出溫度為浮點(diǎn)型,且5/9兩數(shù)相除結(jié)果為整數(shù),5/9的值為〇,故不能寫(xiě)成5/9,而應(yīng)寫(xiě)成32)。結(jié)果要求
保留2位小數(shù),所以輸出的結(jié)果格式為%。參考代碼:#incIudemain()ntf;fIoatc;printf("\npIeaseinputtheF:");scanf("%d",&f);/ぎキ能總成5/9,兩數(shù)相除結(jié)果為整數(shù),5/9printf("theis:%.2f",c);return(0);【解答】運(yùn)行結(jié)果如下:pIeaseinputtheF:75く回車(chē)〉theis:6.由鍵盤(pán)輸入5個(gè)學(xué)生的計(jì)算機(jī)成績(jī),計(jì)算他們的平均分并保留2位小數(shù)?!痉治雠c提示】方法與上題類(lèi)似,同樣是保留兩位有效數(shù)字%。參考代碼:main()\n")e);d ,apCt",0(btf>ttaantoinIrifp\n")e);d ,apCt",0(btf>ttaantoinIrifp,e;,aver;eseinput5students'scanf("%d,%d,%d,%d,%d",&a,&b,scores:&c,&d,&tota!=a+b+c+d+e;printf("Average:%\n",aver);【解答】運(yùn)行輸入:80,93,75,68,87く回車(chē)〉運(yùn)行結(jié)果:7.編寫(xiě)將輸入的英里轉(zhuǎn)換為公里,每英里等于5380英尺,每英尺等于12英寸,每英寸等于2.54厘米,每公里等于100000厘丿ef(IItfnbnnIUiaaorcm{dpsm.kt”,nf\(7:eel丿ef(IItfnbnnIUiaaorcm{dpsm.kt”,nf\(7:eel【解答】運(yùn)行:entermiIe:2mileiskilometerIeis%IfkiIometer\n,第4章選擇結(jié)構(gòu)程序設(shè)計(jì)
習(xí)題一.填空題1.已知a=3,b=4,c=5〇則邏輯表達(dá)式a+b>c&&b—c的值為,!(a>b)&&c|11的值為,!(a+b)+cT&&b+c/2的值為?!痉治雠c提示】本題考查運(yùn)算符的優(yōu)先級(jí)別?!窘獯稹??!?二、運(yùn)行程序?qū)懡Y(jié)果1.下列程序運(yùn)行的運(yùn)行結(jié)果為。main〇{inta=3,b=8,c=9,d=2,e=4;intmin;min=(a<b)?a:b;min=(min<c)?min:c;min=(min<d)?min:d;min=(min<e)?min:e;printf("Minis%d\n",min);}【分析與提示】本題程序的功能為:找出a,b,c,d,e中最小的值并輸出〇【解答】Minis22.若輸入3,4く回車(chē)),下列程序運(yùn)行的運(yùn)行結(jié)果為;若輸入4,3く回車(chē)),下列程序運(yùn)行的運(yùn)行結(jié)果為。main()inta,b,c;printf("Inputa,b:");scanf("%d,%d",&a,&b);if(a>=b){c=a*b;printf("%d*%d=%d\n",a,b,c);}eIse{c=a/b;printf("%d/%d=%d\n",a,b,c);})【分析與提示】本題程序的功能為:從鍵盤(pán)輸入變量a,b,計(jì)算c的值(若a>=b,則c=a*b,若a<b則c=a/b),并輸出a,b,c的值。【解答】3/4=0;4*3=123.下列程序運(yùn)行的運(yùn)行結(jié)果為。#incIudemain()(intx=1,y=0,a=0,b=0;switch(x)easel:switch(y){caseO:a++;break;easel:b++;break;case2:a++;b++;break;printf("a=%d,b=%d\n",a,b);)【分析與提示】本題中easel:后面是ー個(gè)switch語(yǔ)句,執(zhí)行完該語(yǔ)句后,直接執(zhí)行case2:后面的語(yǔ)句?!窘獯稹縜=2,b=1三,編程題.輸入一個(gè)字母,若為小寫(xiě),則把它變成大寫(xiě)輸出?!痉治雠c提示】小寫(xiě)字母的ASCI!碼值與其對(duì)應(yīng)的大寫(xiě)字母的ASCII碼值相差32〇參考代碼:main()(chare;printf("請(qǐng)輸入ー個(gè)字母、n”);scanf("%c",&c);if(c>='a'&&cく二'z')c=c-32;printf("%c\n",c);).【分析與提示】請(qǐng)利用數(shù)軸來(lái)分界,定位。注意定義時(shí)需把獎(jiǎng)金定義成長(zhǎng)整型。參考代碼:main()(Ionginti;intbonusl,bonus2,bonus4,bonus6,bonusl0,bonus;scanf("%ld",&i);if(i<=100000)eIseif(iく=20000〇)elseif(i<=400000)eIseif(i<=600000)elseif(i<=1000000)eIsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);)3.由鍵盤(pán)輸入三個(gè)整數(shù)a、b、c,用條件運(yùn)算符求出其中最大值和最小值?!痉治雠c提示】首先比較輸入的a,b的大小,并把大數(shù)裝入max,小數(shù)裝入min中,然后再與c比較,若max小于c,則把c賦予max;如果c小于min,則把c賦予min。因此max內(nèi)總是最大數(shù),而min內(nèi)總是最小數(shù)。最后輸出max和min的值即可。參考代碼:main()
inta,b,c,max,min;scanf("%d,%d,%d",&a,&b,&c);max=a>b?a:b;max=max>c?max:c;min=aくb?a:b;min=min<c?min:c;printf("最大值為:%d,最小值為:%d\n",max,min);)4,有一函數(shù):x(xく1);y=2x7Jつく10)3x-11(x?10)纟扁一一呈序,輸入"一個(gè)x值,輸出y值?!痉治雠c提示】本題考查if語(yǔ)句的嵌套,應(yīng)當(dāng)注意if與eIse的配對(duì)關(guān)系。從最內(nèi)層開(kāi)始,else總是與它上面最近的(未曾配對(duì)的)汗配對(duì)。參考代碼:main()?x;ス刖&--xannf?x;ス刖&--xannf0?a?—rcfps的值、バ);eIseif(x>=10)y=3*x-11;esey=2*x_1;orintf("x=%,y=%",x,y);5.從鍵盤(pán)上輸入星期號(hào),并顯示該日期的英文名字?!痉治雠c提示】本實(shí)例知識(shí)點(diǎn):switch語(yǔ)句〇switch語(yǔ)句的控制流程是:首先計(jì)算表達(dá)式的值,然后依次與每ー個(gè)case中的常量值進(jìn)行比較,一旦發(fā)現(xiàn)了某個(gè)能夠匹配的值,就執(zhí)行該case后面的語(yǔ)句組,直到遇到break語(yǔ)句為止。如果表達(dá)式的值與所有case中的常量都不匹配,則執(zhí)行defau11后面的語(yǔ)句組〇參考代碼:main()1—期;7X;;akkkkkeaJaaaarekeeeebrarrrr;bebbbb\7?>r;;;vn?み"IIIIIIaVX17V*V*rV*caHaaoaasdyddrddesarnrnsnrduueoeduits"Muehra"("TWTFS(f("""""ftrT+cntfffffni輸メ一r 請(qǐng)1—期;7X;;akkkkkeaJaaaarekeeeebrarrrr;bebbbb\7?>r;;;vn?み"IIIIIIaVX17V*V*rV*caHaaoaasdyddrddesarnrnsnrduueoeduits"Muehra"("TWTFS(f("""""ftrT+cntfffffni輸メ一r 請(qǐng)d"qhprririririri:p—nnnnnrpA%x:PPPPD7twf(hytfcrnnta-Ia-1e23456seeeeeasssssca3a33nhrcw{cccccsuaacfe-icpss【分析與提示】可設(shè)三個(gè)變量,分別表示乘車(chē)的車(chē)型、行車(chē)公里數(shù)和應(yīng)付車(chē)資,根據(jù)乘車(chē)的車(chē)型和行車(chē)公里數(shù),計(jì)算出應(yīng)付的車(chē)資。參考代碼:main()intcx;intcx;/?定義乘車(chē)的fIoatgi,cf;/?定義行應(yīng)付車(chē)資變鱉4?/石い,、 認(rèn)printf("\t1一夏利、n\t2一冨康、n\t3ー采塔納、n');print”、ゝ請(qǐng)輙入車(chē)型(1-3)scanf("%d",&cx);printf("、n\t畜輸入行車(chē)公里數(shù):");scanf("%t",&gl);switch(ex){easel:if(gl<=3)eIse;break;case2:if(gI<=3)eIsec;break;case3:if(gI<=3)}、乎printf("應(yīng)付車(chē)資為%.1f\n",cf);7.給ー個(gè)不多于5位的正整數(shù),要求:①求出它是幾位數(shù);②分別打印出每一位數(shù)字;③按逆序打印出各位數(shù)字。如原數(shù)為12345,則逆序?yàn)?4321〇【分析與提示】本題的思路是:設(shè)5個(gè)變量,分別代表個(gè)位、十位、百位、千位和萬(wàn)位。
從個(gè)位起,依次將各個(gè)位取出來(lái),按取出的順序組合成新的數(shù)據(jù),并記錄當(dāng)前取出的數(shù)字的個(gè)數(shù)。參考代碼:#incIudeohーーsn?bm=bai=0,qianohーーsn?bm=bai=0,qian二〇,wan二0;print](”謂輸ヘー個(gè)正整數(shù)”);scanf("%u",&x);m=x;ge二m%10;m=m/10;w=1;n=ge;{shi=m%10;m=m/10;w=2;n=n*10+shi;if(m){bai=m%10;m=m/10;w=3;n=n*10+bai;if(m){qian=m%10;m=m/10;w=4;n=n*10+qian;if(m){wan=m;w=5;n=n*10+wan;}DIDJDIDJUIuh%%9為位的的%u正正注:當(dāng)該程序輸入ー個(gè)較大的5位數(shù)時(shí),輸出結(jié)果就不正確了,思考為什么?動(dòng)手試ー下怎樣修改該程序。第5章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)ー、填空題1.下面程序的功能是用“輾轉(zhuǎn)相除法”求兩個(gè)正整數(shù)的最大公約數(shù)。請(qǐng)?zhí)羁?。main()(intr,m,n;scanf("%d%d",&m,&n);if(m<n)(1);r=m%n;while(r){m=n;n=r;(2);}printf("%d\n",n);}【分析與提示】輾轉(zhuǎn)相除法:兩數(shù)相除,若不能整除,則以除數(shù)作為被除數(shù),余數(shù)作為除數(shù),繼續(xù)相除,直到余數(shù)為〇時(shí),當(dāng)前除數(shù)就是最大公約數(shù)。【解答】(1)r=m;m=n;n=r;(2)r=m%n;二,運(yùn)行程序?qū)懡Y(jié)果1.下列程序運(yùn)行的運(yùn)行結(jié)果為。#incIudemain()nty=10;do{y";}while(一y);printf("%d",y一);}【分析與提示】注意y一與y—的運(yùn)算順序?!窘獯稹咯?下列程序運(yùn)行的運(yùn)行結(jié)果為。main0(intx=3,y=6,z=2;while(x++!=(y-=1))(z+=1;if(y<x)break;printf("%d,%d,%d\n”,x,y,z);))【解答】4,5,3.下列程序運(yùn)行的運(yùn)行結(jié)果為。main0(inta=1,b=0;for(;a<3;a++)switch(a++)(easel:bーー;case2:b++;case3:b+=3;break;1printf("%d\n”,b);)【解答】3.下列程序運(yùn)行的運(yùn)行結(jié)果為。main0(intx=10,y=10,i;for(i=0;i<2;y=i++)printf("%4d%4d”,x--,y);)三.編程題1?求s-1+2+4+8+,*,+64的值?!痉治雠c提示】本題為數(shù)學(xué)項(xiàng)求和問(wèn)題,數(shù)學(xué)項(xiàng)間的關(guān)系為:第n項(xiàng)的值為第n-1項(xiàng)的值2倍。參考代碼:main(){inti,s=0,t=1;while(t<=64){s=s+t;t=2*t;}printf("s=%d\n",s);)2,求s=1+1/2+1/3+-+1/100的值。【分析與提示】本題為分?jǐn)?shù)數(shù)學(xué)項(xiàng)求和問(wèn)題,要想得到每ー項(xiàng)的正確結(jié)果,分式中的分子、分母至少要有一個(gè)為實(shí)型數(shù)據(jù)。參考代碼:main0{inti;fIoats二〇,t;for(i=1;i<=100;i++)s=s+t;}printf("s二%.2f\n",s);)3,求T=1!+2!+3!+…+10!的值?!痉治雠c提示】本題為數(shù)學(xué)項(xiàng)求和問(wèn)題,數(shù)學(xué)項(xiàng)間的關(guān)系為:第n項(xiàng)的值為第nT項(xiàng)的n倍。參考代碼:main()(longintt二〇,tn=1;inti;for(i=1;i<=10;i++){tn=i*tn;t=t+tn;)printf("t二%Id”,t);}4,求s=2/1+3/2+4/3+5/4+…+22/21的值。[分析與提示】請(qǐng)抓住分子與分母的變化規(guī)律。參考代碼:main()(intm;fIoatfor(m=1;m<=21;m++){s=s+n/m;n=n+1;}printf("s二%.2f\n",s);).輸入一行字母,分別統(tǒng)計(jì)其中的英文字母、空格、數(shù)字和其他字符的個(gè)數(shù)?!痉治雠c提示】利用whiIe語(yǔ)句,條件為輸入的字符不為‘\n'.參考代碼:#incIude""main()(chare;intIetters=0,space=0,digit二〇,other=0;printf("請(qǐng)輸入一行字符:、n");while((c=getchar())!=,\n'){if(c>ゴa,&&cくニ'z'I|c>='A'&&cくメZ')Ietters++;elseif(c=='')space++;elseif(c>='O'&&cく二'9')digit++;eIseother++;)printf("字母數(shù)二%d空格數(shù)二%d數(shù)字?jǐn)?shù)二%d其它字符數(shù)二%d\n,letters,space,digit,other);}6.求100以?xún)?nèi)能被8整除的數(shù),并求它們的和?!咎崾尽颗袛喋`個(gè)數(shù)m能否被n整除的方法是:將m對(duì)n取余數(shù),若余數(shù)為〇,則為整除。參考代碼:main()intn,s=0;for(n=1;nく=100;n++)if(n%8==0){s=s+n;printf("%4d",n);)printf("\ns=%d\n",s);)7.打印出所有的“水仙花數(shù)”。所謂“水仙花數(shù)”是指ー個(gè)三位數(shù),其中各位數(shù)字的立方和等于該數(shù)本身。例如153=プ+53+3、【分析與提示】利用for循環(huán)控制10〇?999個(gè)數(shù),每個(gè)數(shù)分解出個(gè)位,十位,百位。參考代碼:main()(inti,j,k,n;printf("水仙花數(shù)是:");for(n=100;n<1000;n++){i=n/100;j=n/10-i*10;k二n%10;if(n=i*i*i+j*j*j+k*k*k)printf("%5d",n);printf("\n");}8.以下面的格式,輸出九九乘法表。1*1=11*2=22*2=41*3=32*3=63*3=91*9=92*9=183*9=27…9*9=81【提示】分行與列考慮,共9行9列,利用雙重for循環(huán),外循環(huán)i控制行,內(nèi)循環(huán)j控制列。參考代碼:main(){inti,j;for(i=1;i<10;i++){for(j=1;j<=i;j++)printf("%d*%d=%-4d",j,i,j*i);printf("\n");9.用for循環(huán)打印輸出以下圖案。(圖形a)(圖形b)輸出圖形a程序代碼:#incIudemain0(inti,j,k;for(i=0;i<4;i++)/?控制打印行數(shù)?/(f〇r(戶(hù)〇;jく10+i;j++)/?控制空格輸出位置*/printfC",);for(k二〇;k<4;k++)/?控制每行?的輸出個(gè)數(shù)*/printf(,,*");printf("\n");11輸出圖形b序代碼:#incIudemain0(inti,j,k;for(i二〇;iく4;i++)/?控制扌丁印行數(shù)?/(千or■(尸。;jく3-i;j++)/?控制空格輸出位置?/printf("”);for(k=0;kく2*i+1;k++)/?控制每行?的輸出個(gè)數(shù)*/printf(“叱’);printf(“\n”);}).猴子吃桃子問(wèn)題。猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不過(guò)癮,又多吃了一個(gè)。第二天早上又將剩下的桃子吃掉一半,又多吃了一個(gè)。以后每天早上都吃了前一天剩下的ー半零一個(gè)。到第十天早上再想吃時(shí),見(jiàn)只剩ー個(gè)桃子了。求第一天共摘了多少個(gè)桃子?!咎崾尽坎扇∧嫦蛩季S的方法,從后往前推斷。參考代碼:main(){intday,x1,x2;day=9;x2=1;while(day>0){x1=(x2+1)*2;x2=x1;day一一;}printf("桃子總<=%d\n",x1);}.求出500以?xún)?nèi)所有素?cái)?shù)?!咎崾尽颗袛嗨?cái)?shù)的方法:用ー個(gè)數(shù)分別去除2到sqrt(這個(gè)數(shù)),如果能被整除,則表明此數(shù)不是素?cái)?shù),反之是素?cái)?shù)。參考代碼:#incIude""main(){intm,k,i,n=0;for(m=2;m<=500;m++)(k=sqrt(m);for(i=2;i<=k;i++)if(m%i—0)break;if(i>=k+1){printf("%-5d",m);n=n+1;if(n%10==0)printf("\n");))printf("\n");).輸入ー個(gè)整數(shù)(〇?99999),判斷它的位數(shù),并重新組合成同樣位數(shù)的最大值。如,輸入1345,輸出5431?!咎崾尽肯惹蟪鲈撜麛?shù)的位數(shù);其次分解出每一位數(shù)(個(gè)位、十位、百位、千位、萬(wàn)位);接著將5個(gè)位數(shù)進(jìn)行排序;最后根據(jù)整數(shù)的位數(shù)重新組合成同樣位數(shù)的最大值。mavprInon位innr代ogitff((neeeenn/lz(?t\ssssi-------- r5432u二厶i-冃d9nnn?み12^4ーー3;dゝ;;nーー2X17CUX)/nーー1、五ーm=9\]/ndルーun99)普入鐘召萬(wàn),入刖,9mmmm9uuud(
?位數(shù)/\)/分ド*東ズ/i?)n口9"95、ヱ9CAIOZ朱。0;\oood-6OOnハしdi%o***--0555nodddfno
60)O1〇?13/doo?60oooO11〇**144/dd)--ooooood1=num-d5*10000-d4*1000-d3*100-d2*1if(d5<d4)if(c{t=cif(c{t=cif(cif(cif(c{t=cif(cif(c{t=cif(c{t=cif(d_{t=d2;d_switch(n){case5:num=d5*10000+d4*1000+d3*100+5;c5<d5=d4;d4=t;}3) ;旣產(chǎn)d3w}5=d2;d2=t;}1) [5二d1;d1=t;}3) \既ザ3;d3w}5;c5<d5;c4<d4;c
4<d
4;c
3<d
3;c
3<d4二d2;1)4=d1;2)3=d2;1)2二d1;d2=t;}d1=t;}d2=t;}d1=t;}d1=t;}d2*10+d1;break;case4:num=d5*1000+d4*1〇0+d3*10+d2;bcase9:num=d5*100+d4*10+d3;break;case2:num=d5*10+d4;break;easel:num=d5;}printf("重組后的數(shù)為:%Id\n",num);.求證100以?xún)?nèi)哥德巴赫猜想是成立的。即:100以?xún)?nèi)任何ー個(gè)大的偶數(shù)(大于等于6)都可以表示成兩個(gè)素?cái)?shù)之和。【分析與提示】我們先不考慮怎樣判斷ー個(gè)數(shù)是否為素?cái)?shù),而從整體上對(duì)這個(gè)問(wèn)題進(jìn)行考慮,可以這樣做:讀入ー個(gè)偶數(shù)n,將它分成p和q,使n=p+q。怎樣分呢?可以令p從2開(kāi)始,每次加1,而令q=n-p,如果p、q均為素?cái)?shù),則正為所求,否則再試。參考代碼:#incude#incudemain()intj,n,d,q,fla$p,flagq;丄"Ieaseinputn:\n);",&n):,“!二。)I(n<=4))printf("inputdataerror!\n");eIse{p=1;do{P=P+1;q=n-p;
"■|agp=1;f2ば[二ラ;jく二(int)(sqrt(p));j++)/?判斷p是否カ素;教?/、ハ、.if(tp%i)==0)fIagp-0;breaR;/?不是素?cái)?shù),退出循環(huán)?/flfo為ー-b.費(fèi)素f(laea--flfo為ー-b.費(fèi)素f(laea--卜片;不?,?./?Jo*12*%--/(sqrt(q));j++)/?判斷q是否,退出循環(huán)?/,whiIe(fIagp*fIagq==O);printf("%d=%d+%d\n",n,p,q);第6章數(shù)組與指針一,簡(jiǎn)答題1、什么是數(shù)組,為什么在C語(yǔ)言中引用數(shù)組?【解答】數(shù)組是有序的、且具有相同性質(zhì)類(lèi)型的數(shù)據(jù)集合。引用數(shù)組來(lái)實(shí)現(xiàn)成批地處理數(shù)據(jù)。2、在C語(yǔ)言中如何表示一個(gè)字符串?【解答】運(yùn)用字符型數(shù)組來(lái)表示字符串。3、指針是指什么?【解答】指針就是地址。二.運(yùn)行程序?qū)懡Y(jié)果.以下程序的執(zhí)行結(jié)果是。main。(intk,a[6]={1,2,3,4,5,6);for(k=5;k>0;--k)if(a[k]%2==0)printf("%d",a[k]);)【提示】從后向前把能被2整除的數(shù)組元素輸出?!窘獯稹?42.以下程序的執(zhí)行結(jié)果是。#incIudemain()(charstr[]="SSSWLIA",c;intk;for(k=2;(c=str[k])!二‘、〇';k++)switch(c)case'I':++k;break;case'L':continue;defau11:putchar(c);continue;)putchar('*');)}【提示】從字符串中第3個(gè)字符開(kāi)始,把符合要求的字符運(yùn)用輸出字符函數(shù)putchar。輸出;最后在其后輸出ー個(gè)”*“?!窘獯稹縎W*.以下程序的執(zhí)行結(jié)果是。main()(charss[10]=(,12345";strcat(ss,"6789");gets(ss);printf("%s",ss);)假設(shè)輸入"ABC"【分析與提示】運(yùn)用字符串連接函數(shù)strcat0,把兩個(gè)串”12345”和“6789”連接,對(duì)其重新賦值后,原有數(shù)值被刷新輸出新值。【解答】“ABC“.以下程序的執(zhí)行結(jié)果是。#incIudemain()(charaロ=“Monday二bロ二“day“;strcpy(a,b);printf("%s\t%s\n",a,b);printf("%c\t%c\n",a[4],a[5]);}【分析與提示】把b字符串的內(nèi)容拷貝到a字符串中,分別顯示a和b串內(nèi)容;再顯示數(shù)組元素a[4]和a[5]的內(nèi)容?!窘獯稹縟aydayay.以下程序的執(zhí)行結(jié)果是。main。(intx[8]二{8,7,6,5,0,0},*s;s二x+3;printf("%d",s[2]);)【分析與提示】運(yùn)用指針顯示數(shù)組元素值。需要注意的是把數(shù)組x第3個(gè)元素的地址,賦給了指針變量s,所以s[2]里面存儲(chǔ)的是x[5],即〇〇【解答】〇.以下程序的執(zhí)行結(jié)果是。main()(nta=7,b=8,*p,*q,*r;p-&a;q=&b;r=p;p=q?q=r;printf("%d,%d,%d,%d",*p,*q,a,b);)【分析與提示】指針變量存儲(chǔ)地址,而不是數(shù)值。【解答】8,7,7,8.以下程序的執(zhí)行結(jié)果是。main0chara[]="language",b[]="programe";char*p,*q;P=a;q=b;while(*p&&*q)(if((*p)ニニ(*q))printf("%c",*p);p++;q++;))【分析與提示】程序功能是,輸出兩個(gè)字符串中相同的字符?!窘獯稹縢ae.以下程序的執(zhí)行結(jié)果是。#incIude#incIudemain()(chara[80]="AB",b[80]=,,LMNP";inti=0;strcat(a,b);while(a[i++]!二‘、〇')b[i]=a[i];puts(b);【分析與提示】把b串內(nèi)容連接到a串上,再通過(guò)循環(huán)對(duì)b串重新賦值?!窘獯稹縇BLMNP三.編程題1.已有10個(gè)數(shù),求它們當(dāng)中的最大值?!痉治雠c提示】運(yùn)用一維數(shù)組保存10個(gè)數(shù),依次比較保存最大值。參考代碼:main()(inti,a;intn[10]={8,2,4,6,7,1,0,85,32,54};a=n[0];for(i=1;i<10;i++)if(n[i]>a)a=n[i];printf("a=%d\n",a);.從鍵盤(pán)輸入10個(gè)學(xué)生的成績(jī),建立一個(gè)ー維數(shù)組,求學(xué)生的平均分。【分析與提示】把10個(gè)學(xué)生的成績(jī)保存在ー維數(shù)組,運(yùn)用一重循環(huán)計(jì)算所有成績(jī)的總和,在此基礎(chǔ)上計(jì)算平均值。參考代碼:main()(inti;fIoata[10],sum=0,ave;printf("輸入10個(gè)學(xué)生的成績(jī):");for(i=0;i<10;i++)(scanf("%f",&a[i]);sum=sum+a[i];}ave=sum/10;printf("10個(gè)學(xué)生的平均成績(jī)是%。”,ave);).將兩個(gè)ー維整型數(shù)組中的對(duì)應(yīng)元素相加后顯TF出來(lái)。【分析與提示】把數(shù)組下標(biāo)相同的元素值相加。參考代碼:main。inti;intx[5]={10,8,7,6,5};inty[5]={-3,9,-10,-2,4);intz[5];for(i=0;i<5;i++)z[i]=x[i]+y[i];printf("\n相加后一?維數(shù)組為:");for(i=0;i<5;i++)printf("%d",z[i]);}.線(xiàn)性查找。【分析與提示】從數(shù)組的第一個(gè)元素開(kāi)始,依次將要查找的數(shù)和數(shù)組中元素比較,直到找到該數(shù)或找遍整個(gè)數(shù)組為止。參考代碼:main()(inttable[10]={2,4,6,8,10,12,14,16,18,20};intfind二〇,i,x;printf(”請(qǐng)輸入要找的數(shù):“);scanf("%d",&x);for(i=0;i<10;i++)if(x—tabIe[i]){find=1;break;}if(find—1)printf("%d在tabIe[%d]中Xn",x,i);eIseprintf("沒(méi)有找至リ數(shù)%d\n",x);}.求一個(gè)4X4矩陣對(duì)角線(xiàn)元素之和?!痉治雠c提示】若設(shè)置矩陣行列坐標(biāo)分別為i和j,則對(duì)角線(xiàn)元素下標(biāo)滿(mǎn)足以下條件:iニニj或i+j二3。參考代碼:main()(inta[4][4],i,j,sum=0;for(i=0;i<4;i++)for(j二〇;jく4;j++)scanf("%d",&a[i][j]);if(iニニjIIi+L3)suiTFsum+a[i][j];]printf("對(duì)角線(xiàn)元素之和:%d",sum);).將兩個(gè)二維數(shù)組對(duì)應(yīng)元素加起來(lái),存到另ー個(gè)二維數(shù)組中。1020 14【分析與提示】運(yùn)用雙重循環(huán),把行列下標(biāo)均相同的元素值相加。參考代碼:main()(inta[3][2J={10,20,30,40,50,60};intb[3][2]={1,4,2,5,3,6);intc[3][2];inti,j;for(i=0;i<3;i++)(for(j=0;j<2;j++)c[i][j]=a[i][j]+b[i][j];printf("%4d",c[i][j]);}printf("\n");1).找出ー個(gè)二維數(shù)組中的鞍點(diǎn)。【分析與提示】所謂鞍點(diǎn)指該位置上的數(shù)在該行上最大,在該列上最小。注意并不是所有的二維數(shù)組都有鞍點(diǎn)。參考代碼:#defineN3#defineM3main()(inta[M][N],(*p)[N];/*p為指向ー維數(shù)組的指針?/ntmax,maxi,maxj;inti,j,k,m,n;intflag1=0,flag2=0;P=a;printf("給數(shù)組輸入數(shù)據(jù):\n");for(i=0;i<M;i++)for(j=0;j<N;j++)scanf("%d",p[i]+j);for(i=0;i<N;i++)(max二?p[i];for(j=0;j<M;j++)if(*(p[i]+j)>max){max=*(p[i]+j);maxj=j;}for(k=0,fIag1=1;kくN&&fIag1;k++)if(max>*(p[k]+j))fIag1=0;if(fIag1)(printf("\n第%d行,第%d列的%d是鞍點(diǎn)!\n",i,maxj,max);flag2=1;if(IfIag2)printf("\n矩陣中無(wú)鞍點(diǎn)!");.用指針數(shù)組給ー個(gè)整型二維數(shù)組輸入數(shù)值,并求出各行元素的和?!痉治雠c提示】用二維數(shù)組a各行的首地址賦予指針數(shù)組P的各個(gè)元素,通過(guò)此循環(huán)嵌套,為各個(gè)數(shù)組元素賦值。main()(inta[3][3],*p[3],i,j,sum;for(i=0;i<3;i++)p[i]=a[i];/*把二維數(shù)組a各行的首地址賦予指針數(shù)組p的各個(gè)元素?/for(i=0;i<3;i++)/?通過(guò)此循環(huán)嵌套,為各個(gè)數(shù)組元素賦值?/for(j=0;j<3;j++)scanf("%d",p[i]+j);printf("和分另リ為:");for(i=0;iく3;i++)/?通過(guò)此循環(huán)嵌套,求各行數(shù)組元素的和?/(sum=0;for(j=0;j<3;j++)sum=sum+*(p[i]+j);printf("%d",sum);/*分行輸出每一行的和值*/.用指針實(shí)現(xiàn)合并兩個(gè)字符串?!痉治雠c提示】把第二個(gè)字符串中字符逐個(gè)賦值給第一個(gè)字符串,需要注意的是兩個(gè)字符數(shù)組下標(biāo)變量的初值不同。參考代碼:#incImain()(charsl[40],s2[20],*p1,*p2;inti,j,n;p1=s1;p2=s2;printf("輸入第一個(gè)字串:");gets(p1);printf(”\n輸入第二個(gè)字串:");gets(p2);n二strlen(p1);for(i二n,尸0;*(p2+j)!ゴ、〇';i++,j++)*(p1+i)=*(p2+j);*(p1+i)='\0';printf("\n輸出合并后字串為:");puts(p1);)10.從輸入的5個(gè)字符串中找出最長(zhǎng)的一個(gè)字符串輸出。【分析與提示】運(yùn)用測(cè)試字符串長(zhǎng)度函數(shù)strIen,進(jìn)行串比較。參考代碼:#incIude#incIudemain()(chara[5][80],*sp;inti;for(i=0;i<5;i++)gets(a[i]);for(i=0;i<5;i++)if(strIen(sp)<strIen(a[i]))sp=a[i];printf("theIongeststringis%s",sp);)第7章函數(shù)與指針一,運(yùn)行程序?qū)懡Y(jié)果1.下列程序運(yùn)行的結(jié)果為。intx1=30,x2=40;main(){intx3=10,x4=20;swap(x3,x4);swap(x2,x1);printf("%d,%d,%d,%d\n",x3,x4,x1,x2);}swap(intx,inty){x1=x;x=y;y=x1;}【提示】本題考查全局變量的作用范圍。【解答】10,20,40,402.下列程序運(yùn)行的結(jié)果為。#incIudevoidnum()(externintx,y;inta=15,b=10;x=a-b;y=a+b;intx,y;main()nta=7,b=5;=a+b;y=a-b;num();printf("%d,%d\n",x,y);)【分析與提示】用extern進(jìn)行外部變量說(shuō)明。【解答】5,25.下列程序運(yùn)行的結(jié)果為。main(){inta[5]={5,10,-7,3,7},i,j,t;sort(a);for(i二〇;i<=4;i++)printf("%3d",a[i]);)sort(inta[]){inti,j,t;for(i=0;i<4;i++)for(j=0;j<4-i;j++)if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+U=t;}1【提示】該程序的功能是將5個(gè)數(shù)由小到大進(jìn)行排序。【解答】-735710.下列程序運(yùn)行的結(jié)果為。#defineSQR(x)2*x+1main0{inta,b,c;a=3;b=2;c=1;a*=SQR(b+c)/SQR(b+c);printf("%d\n",a);)【提示】a*二SQR(b+c)/SQR(b+c);宏展開(kāi)為a*二2*b+c+1/2*b+c+1;【解答】21.下列程序運(yùn)行的結(jié)果為。voidswapl(intx,inty){intt;t=x;x=y;y=t;return;voidswap2(int*x,int*y){intt;t=*x;*x=*y;*y=t;return;}main(){intx=3,y=5;printf("%d,%d\n",x,y);swapl(x,y);printf("%d,%d\n",x,y);swap2(&x,&y) ;printf("%d,%d\n",x,y);)【提示】注意指針變量做函數(shù)參數(shù)時(shí),改變形參的值就等同與改變了實(shí)參的值?!窘獯稹?,53,55,3.下列程序運(yùn)行的結(jié)果為。Iongfib(intg)switch(g){CaseO:returnO;easel:case2:returnl;)return(fib(g-1)+fib(g-2));}main()Iongk;k=fib(7);printf("k=%ld\n",k);)【提示】注意函數(shù)遞歸調(diào)用的條件?!窘獯稹縦二13二,編程題1.已知圓的半徑為R,求它的面積。#incIude/?包含文件?/*inciude/*W苔藪學(xué)庠函數(shù)?/#definePI/?宏定義?/,ain()/?主函飯?/fIoatarea(fIoat);/?函數(shù)area的原型,即
函數(shù)說(shuō)明?/過(guò)對(duì)舟憨撃曾空量定義?/s=area(r)/?函數(shù)說(shuō)明?/過(guò)對(duì)舟憨撃曾空量定義?/printfl“囪的キ桜為:%f\n",r);orintf(“圓留面積為:%f\n",s);fIoatarea(fIoata)/?定義函數(shù)area*/{fIoatd;d=PI*a*a;return(d);/?返回計(jì)算結(jié)果?/運(yùn)行:請(qǐng)輸入半徑:ビ.編寫(xiě)ー個(gè)函數(shù)輸出三個(gè)數(shù)中的最大值?!咎崾尽吭趍ain()函數(shù)中輸入數(shù)據(jù),調(diào)用求3個(gè)數(shù)最大值函數(shù)。intmax(intx,inty,intz)(intt;if(x>=y)t=x;eIset二y;if(t<z)t=z;return(t);}main()intx,y,z;printf("input3numbers:");scanf(',%d%d%d",&x,&y,&z);printf("max=%d\n",max(x,y,z));).編寫(xiě)一個(gè)函數(shù),將一個(gè)任意三位數(shù)n逆序輸出。即若n=456,則輸出654?!咎崾尽繉⒁粋€(gè)三位數(shù)n分解為個(gè)位、十位和百位分別放入c,b,a中,然后逆序輸出。intrec(intx)(inta,b,c;a=x/100;b=x%100/10;c=x%10;return(c*100+b*10+a);1main()intrec(intx);inty,z;printf("inputanumber(100-999):");scanf("%d",&y);z=rec(y);printf("thechangednumberis:%d\n",z);)4.編寫(xiě)比較兩字符串是否相等的函數(shù)?!咎崾尽堪碅SCII碼值大小比較,將兩個(gè)字符串自左至右逐個(gè)字符相比,直到出現(xiàn)不同的字符或遇到‘、〇'為止。如果全部字符相同,則認(rèn)為相等,如果出現(xiàn)不同的字符,則以第一個(gè)不同的字符的比較結(jié)果為準(zhǔn)。比較結(jié)果由函數(shù)值帶回。參考代碼:#incIudeintcmp();main()(intresu;charsl[100],s2[100];printf("PIeaseinputsl:\n");gets(s1);printf("PIeaseints2:\n");gets(s2);resu=cmp(s1,s2);printf("%s與%s的比較結(jié)果是%d.",s1,s2,resu);)intcmp(s1,s2)charslロ,s2ロ;{inti=0;whiIe((s1[i]==s2[i])&&(s1[i]!=0)&&(s2[i]!ニ0))i++;ニニ'\O'&&s2[i]ニニ'\0')returnO;eIsereturn(s1[i]-s2[i]);)5.編寫(xiě)求字符串長(zhǎng)的函數(shù)。【提示】字符串的長(zhǎng)度不包括‘、〇’在內(nèi)。參考代碼:#incIudemain(){inttest0;intn;charstr[100];gets(str);n=test(str);printf("thenumbersis:%d\n",n);}inttest(str)charstrロ;{intn=0;whiIe(str[n]!='\0')n++;return(n);)6.編寫(xiě)ー個(gè)函數(shù)判定一個(gè)數(shù)是否是素?cái)?shù),在主函數(shù)中調(diào)用該函數(shù),輸入ー個(gè)整數(shù),輸出是否是素?cái)?shù)的信息?!痉治雠c提示】由主函數(shù)任意輸入ー個(gè)整數(shù)m,將其值傳遞給子函數(shù)isprime(m)由子函數(shù)判斷這個(gè)數(shù)是否為素?cái)?shù),是return(1),否則return(0)〇參考代碼:#incIudemain(){intm;printf("PIeaseinputadatam=:");scanf("%d",&m);isprime(m);}isprime(intn)(inti,k;k=n/2;for(i=2;iく=k;i++)if(n%i==0)break;if(i>=k+1)printf("Thisisaprimenumber");eIseprintf("Thisisnotaprimenumber").用指針寫(xiě)ー個(gè)刪除字符串中空格的函數(shù)?!咎崾尽坑弥羔榩1指向待處理的字符串,用?p1從串頭到串尾逐一走動(dòng),每走到ー個(gè)字符判斷其是否為空格,若不是空格,則將其保存到指針?p2中。參考代碼:#incIudevoiddeIe(char*str)char*p1,*p2;for(p1=p2=str;*p1!=,、〇’;p1++)if(*p1=='')continue;eIse*p2++=*p1;*p2='\0';1main()(charstr[100];gets(str);deIe(str);puts(str);1.用指針寫(xiě)合并兩個(gè)字符串的函數(shù)?!痉治雠c提示】先將字符串str1從串頭到串尾逐一拷貝到字符串str3中,接著將字符串str2從串頭到串尾逐一拷貝到字符串str3中。參考代碼:#incIudecharunitestring(char*str1,char*str2,char*str3)/?合并函數(shù)?/(intiニ〇;whiIe((*st門(mén))!二’\O'){*(str3+i)=*str1;i++;str1++;)whiIe((*str2)!=?\O'){*(str3+i)=*str2;i++;str2++;}*(str3+i)='\O';/?不能自動(dòng)加入、〇?/}main()(charp[50],q[50],r[100];/*r為連接后的字符串?/printf("PIeaseenterthefirststring:\n");gets(p);/*輸入字符串?/printf("PIeaseenterthesecondstring:\n");gets(q);/*輸入字符串?/unitestring(p,q,r);puts(r);/?輸出結(jié)果?/)9.輸入15個(gè)正整數(shù),放在a數(shù)組中,要求:奇數(shù)放在a數(shù)組前部,偶數(shù)放在a數(shù)組后部。再分別對(duì)奇數(shù)和偶數(shù)排序?!痉治雠c提示】在main函數(shù)中將數(shù)組中的奇數(shù)放在a數(shù)組前部,偶數(shù)放在a數(shù)組后部。在分別兩次調(diào)用sort函數(shù)將奇數(shù)和偶數(shù)進(jìn)行排序。參考代碼:voidsort();main()(inta[15];
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國(guó)磁性材料行業(yè)市場(chǎng)調(diào)研及未來(lái)發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 關(guān)于材料置換合同范本
- 產(chǎn)品發(fā)貨合同范例
- 中介購(gòu)房定金合同范本
- 企業(yè)勞務(wù)雇傭合同范本
- 買(mǎi)賣(mài)山地合同范本
- 中國(guó)電子商務(wù)行業(yè)未來(lái)發(fā)展趨勢(shì)分析及投資規(guī)劃建議研究報(bào)告
- 人防施工合同范本
- 2025年環(huán)保過(guò)濾材料項(xiàng)目可行性研究報(bào)告
- 二手商業(yè)樓房買(mǎi)賣(mài)合同范本
- IQC檢驗(yàn)作業(yè)指導(dǎo)書(shū)
- 城市自來(lái)水廠課程設(shè)計(jì)
- 重慶市2024年小升初語(yǔ)文模擬考試試卷(含答案)
- 2024智慧城市數(shù)據(jù)采集標(biāo)準(zhǔn)規(guī)范
- 【人教版】《勞動(dòng)教育》七上 勞動(dòng)項(xiàng)目一 疏通廚房下水管道 課件
- 2024特斯拉的自動(dòng)駕駛系統(tǒng)FSD發(fā)展歷程、技術(shù)原理及未來(lái)展望分析報(bào)告
- 2024-2030年中國(guó)銀行人工智能行業(yè)市場(chǎng)深度調(diào)研及發(fā)展趨勢(shì)與投資前景研究報(bào)告
- 五屆全國(guó)智能制造應(yīng)用技術(shù)技能大賽數(shù)字孿生應(yīng)用技術(shù)員(智能制造控制技術(shù)方向)賽項(xiàng)實(shí)操樣題
- 中國(guó)銀行中銀數(shù)字服務(wù)(南寧)有限公司招聘筆試真題2023
- 2024七年級(jí)英語(yǔ)下冊(cè) Module 1 Lost and found教案(新版)外研版
- 2024年公共衛(wèi)生基本知識(shí)考試題庫(kù)(附含答案)
評(píng)論
0/150
提交評(píng)論