C語言答案刪減版_第1頁
C語言答案刪減版_第2頁
C語言答案刪減版_第3頁
C語言答案刪減版_第4頁
C語言答案刪減版_第5頁
已閱讀5頁,還剩166頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

clrscr();C語言答案()第一章C語言程序設計基礎習題參考答案五大構成部分:輸入、輸出、CPU、控制器、存儲器;程序存儲、自動執(zhí)行、邏輯判斷功能;二進制的信息表示。1-6編輯、編譯、鏈接、執(zhí)行。1-7必須有一個主函數(shù),它是程序執(zhí)行的起點;一個C語言程序由函數(shù)構成;每一條可執(zhí)行語句都必須由分號結束;函數(shù)的代碼段必須由花括號對括住。一個函數(shù)中的語句組由聲明區(qū)和可執(zhí)行語句區(qū)兩部分構成。1-8三個一縮;每遇到一個結構時均縮格,每結束一個結構時回退;縮格格式必須對齊。1-9試給出以下問題的程序設計過程描述:1)求兩個數(shù)中之最大者。#include<>intmain(void){floatfA,fB;printf("Pleaseinputtwovalues(fA,fB)::");/*輸入要比較scanf("%f,%f",&fA,&fB);/*格式化輸入fA,fB*/if(fA>=fB)printf("themaxis%f",fA);if(fA<fB)printf("themaxis%f",fB);return0;}/*main()函數(shù)結束*/2)求三個數(shù)中之最大者。#include<>intmain(void){floatfA,fB,fC,fMax;printf("Pleaseinputthreevalues(fA,fB,fC)::");scanf("%f,%f,%f",&fA,&fB,&fC);if(fMax<fB)fMax=fB;if(fMax<fC)fMax=fC;printf("Themaxis%f\n",fMax);/*輸出最大值*/return0;}/*main()函數(shù)結束*/求1+2+3+…+100,即。#include<>intmain(void){inti,nSum;/*聲明變量i,循環(huán)的總和*/for(i=1,nSum=0;i<=100;i++){nSum+=i;printf("Sumis%d\n",nSum);/*輸出累加值*/return0;}intmain(void){inti,nSum;clrscr();除的個數(shù)*/{nSum+=i*6;}/*循環(huán)累加的過程*/printf("theSumis%d",nSum);/*輸出累加結果*/return0;}#include<>intmain(void){floata,b;printf("Pleaseinputtworealvalues(a,b)::");scanf("%f,%f",&a,&b);printf("\n%f+|%f|=%f\n",a,b,b>0a+b:a-b);/*利用三元條件運算,詳見P52*/return0;}1-13試編寫一個在五個整數(shù)中找出最大數(shù)的程序。#include<>intmain(void){floatval_1,val_2,val_3,val_4,val_5,fMax;/*聲明要比較的5個變量*/printf("Pleaseinput3values(val_1,val_2,val_3,val_4,val_5)::");scanf("%f,%f,%f,%f,%f",&val_1,&val_2,&val_3,&val_4,&val_5);fMax=val_1;/*假設最大值為val_1*/if(fMax<val_2)fMax=val_2;if(fMax<val_3)fMax=val_3;if(fMax<val_4)fMax=val_4;if(fMax<val_5)fMax=val_5;/*選出最大值的過程*/printf("themaxof%f,%f,%f,%f,%fis%f",\val_1,val_2,val_3,val_4,val_5,fMax);return0;}1-14編寫程序,調用庫函數(shù)求下列函數(shù)的值:#include<>#include<>/*包含數(shù)學函數(shù)文件,詳見P391*/intmain(void){doubleval;printf("Pleaseinputthevalue::");scanf("%f",&val);printf("theresultis%lf",cos(val));/*調用數(shù)學函數(shù)中的doublecos(doublex)函數(shù)*/return0;}#include<>#include<>intmain(void){doubleval;printf("Pleaseinputtheval::");scanf("%lf",&val);printf("theresultis%lf\n",log(val));return0;}#include<>#include<>intmain(void){doubleval;printf("Pleaseinputthevalue(val):");scanf("%lf",&val);printf("theresultis%lf\n",sqrt(val));/*調用doublesqrt(doublex)函數(shù)*/return0;}#include<>#include<>intmain(void){doubleval;printf("Pleaseinputthevalue(val)::");scanf("%lf",&val);printf("theresultis%lf",exp(val));/*調用doubleexp(doublex)函數(shù)*/return0;}1-16見名知義;變量名和函數(shù)名小寫,符號常量一般大寫;多個單可以使用簡單的符號變量名,如a,b,c,d,x,y,z等;注意一些容易混淆的字母的使用;匈牙利前綴數(shù)據(jù)類型表第二章C語言中的數(shù)據(jù)類型及其基本操作習題參考答案2-1為什么C的每個數(shù)據(jù)都必須屬于某種特定的數(shù)據(jù)類型解:變量存儲空間中的值必須屬于某種特定的數(shù)據(jù)類型才有意義,同時,數(shù)據(jù)的類型不同,其取值范圍、所占存儲空間大小、能夠參加的運算類型等才有意義。據(jù)類型,大部分都可以用signed,unsigned,long,short進行修飾,以表示數(shù)據(jù)的取值范圍和數(shù)據(jù)所占存儲空間的字節(jié)數(shù)變化。2-2浮點數(shù)和定點數(shù)的區(qū)別在哪里解:在于小數(shù)點位置是否固定不變。2-3計算機中的數(shù)是精確的表示嗎解:不完全是。對整型數(shù)據(jù),在不超出表示值范圍時一般是精確表示的。對浮點數(shù),則一般是不能精確表示。原因在于計算機內(nèi)表示浮點數(shù)的存儲空間大小是固定的,因此,它所能表示出來的精度是有限的。例如,無限循環(huán)小數(shù)……在計算機內(nèi)部只能近似表示。2-4為測試數(shù)據(jù)類型所占存儲空間的大小,C提供了專門的運算符sizeof(),它用于返回或計算給定數(shù)據(jù)變量或數(shù)據(jù)類型所占存儲空間的大小。請編寫程序能夠測型所占存儲空間的大小。解:這里以int型為例。其它數(shù)據(jù)類型所占存儲空間大小的測試方法#include<>voidmain(){intnSize=sizeof(int);printf("%d",nSize);getch();}2-9為什么要強調“先聲明、后定義、再使用”的原則請闡述其理由。(2)0;解:因為變量使用前必須要有存儲空間分配給它用來保存其值,對變量存儲空間的分配就是通過變量的聲明完成的。變量在被引用之前,其中的值應當是確定的某一個值,但變量的聲明并不能保證變量存儲空間中有一個合適的初始狀態(tài)值,而是一個隨機值。當以錯誤的初始值開始變量的引用時,會導致程序的執(zhí)行邏輯錯誤。為此,一般需要在變量被引用之前賦予其一個合理的初始值。因此,在變量的使用上,一般應當遵循先聲明、后定義、在引DEFGH(3)ch1(S)+ch2(x)=203(4)nX=2nY=5nZ=12nX=1830nY=28nZ=38nX=3nY=6nZ=2(1)1;(3)0;(4)0;(5)2,2,5;(6)10;(7)3;(8)12,8,30,20,0,0;(9)15,5,324;m=0n=0k=-1m=1n=1k=-1m=0n=0k=0m=0n=0k=1m=1n=0k=12-17請問C語言中的邏輯真和假的表示方法是什么均可被作為邏輯第三章C語言的程序結構、語句分類和數(shù)據(jù)的輸入輸出習題參考答案3-1解:因為輸入、輸出是計算機程序獲取源數(shù)據(jù)和輸出結果數(shù)據(jù)的基本手段。沒有輸入操作,程序無法將數(shù)據(jù)對象告知計算機,沒有輸出時,計算機程序的運算對于計算任務來講是scanf(....);fscanf(...);fread(...);printf(..);fprintf(..);fgets(..);gets(..);3-2解:格式說明符、普通字符、輸出格式控制字符、附加格式說明域寬:用於存放輸出數(shù)據(jù)的寬度。格式化輸入輸出函數(shù)的主要異同參見教材相關章節(jié)。3-3解:對小數(shù)部分截斷輸出(四舍五入的原則)對整數(shù)部分沒有影響;與截斷位的精度相同;有單獨的符號位;符號位不占據(jù)域寬。它們能夠表示的最大有效精度范圍分別為6位和17位小數(shù)位。多余的精度部分將被同時,要注意,浮點數(shù)表示中,小數(shù)點不占域寬寬度。教材)。3-6請簡述C語言程序的語句類型分類并對其使用方法作簡要描述。intmain(void){inta;printf(”%d”,a);return0;}while()3-7請說明使用格式化輸入語句完成輸入任務時和輸入緩沖區(qū)之間解:scanf是從標準輸入設備緩沖區(qū)數(shù)據(jù)流中自動根據(jù)內(nèi)部格式控制字符串要求完成數(shù)據(jù)類型匹配,并把數(shù)據(jù)從左到右復制到參數(shù)列表變量地址空間的函數(shù),其過程分為以下幾個(1)函數(shù)執(zhí)行時由標準輸入設備(一般是鍵盤)輸入相關數(shù)據(jù),臨時存放在標準輸入設(2)scanf函數(shù)從數(shù)據(jù)流中復制數(shù)據(jù)從左到右一次匹配于變量列表中anf3-8解:在輸入多個數(shù)值數(shù)據(jù)時,若格式控制串中沒有非格式字符作輸入數(shù)據(jù)之間的間隔則$$$#100#100**+02*chise::dec=101oct=145hex=65ASCII=eiis101::dec=101oct=145hex=65ASCII=echisx::dec=120oct=170hex=78ASCII=xiis-4::dec=-4oct=177774hex=fffcASCII=1234537890123456789i=12j=6789x=y=printf(“m=%dn=%dk=%d\n”,m,n,k);printf(“x=%fy=%fz=%f\n”,x,y,z);printf(“x+y=%.2fy+z=%.2ftxyyzzintxprintf(“u=%-9un=%9ld”,u,n);printf(“ch1=%cor%d\n”,ch1,ch1);printf(“ch2=%cor%d\n”,ch2,ch2);4,3,3,2從右往左開始算3-14請分析和給出以下程序段的輸出結果。#include<>intmain(void)/*主函數(shù)*/{inti=59;floatfX;doubledY,dZ;printf("i=%d\n",i);printf("i=%5d\n",-i);printf("i=%5o\n",i);printf("i=%5x\n,i");printf("i=%ld\n",i);fX=dY=;Zprintf("%f\n",fX);printf("%f\n",dZ);printf("%e\n",dZ);printf("%.4f\n",fX);printf("%.8f\n",dY);*********printf("%.3e\n",dZ*********printf("%.18f\n”,dY);printf("%\n",dY);printf("%\n",dY);printf("%2e\n",dZ);rerturn0;}/*main()函數(shù)結束*/3-15編寫一個程序顯示如下的方框,橢圓,箭頭,或者菱形圖****************************************************************intmain(void){printf("************\n");printf("**\n");printf("**\n");printf("**\n");printf("**\n");printf("**\n");printf("************\n");return0;3-17intmain(){ntnumintsquare[11];intcube[11];for(num=0;num<=10;num++){square[num]=num*num;cube[num]=num*num*num;}printf("numbersquarecube\n");printf("--------------------------------------\n");for(num=0;num<=10;num++){printf("%-10d%-10d%-10d\n",num,square[num],cube[num]);}return0;}第四章程序設計的算法基礎習題參考答案4-1試分析給出人們?nèi)粘I钪袑栴}求解的一般過程和步驟。解:首先:(必須)知道一些已知條件或約束條件;第二,確定或尋找針對該問題的求解方法;第三,根據(jù)選擇的求解方法確定具體的問題求解步驟;第四,進行問題求解的實際演算和推理活動;最后,得到并整理求解結論。4-2解:(1)1)睜開雙眼;2)穿好衣服、褲子及鞋子等;3)下4)洗漱(包括洗臉、刷牙等);5)吃早餐(包括飯后洗碗等工作);6)上課學習;7)吃午餐;8)午休;9)上課學習;10)11)課外活動(包括看電視、寫作業(yè)等等);12)洗漱;13)14)脫衣服、褲子及鞋子等;15)睡覺。(2)1)整理好課本;2)從座位上站起來;3)走出教室;4)走5)排隊;6)判斷是否已經(jīng)輪排到自己,若否,則轉5),否7)刷卡;8)點菜、買飯。(3)1)尋找座位;2)坐下;3)用筷子夾起飯菜;4)將飯菜5)細嚼慢咽;6)判斷是否已經(jīng)吃飽或者飯菜已經(jīng)吃完,若否,則轉7),7)重復3)~5)過程;8)整理餐具,從座位上站起;9)端10)尋找水龍頭,洗碗;11)帶著餐具回寢室;12)到達寢13)做個人衛(wèi)生;14)午睡;4-4怎么理解Wirth提出的程序=算法+數(shù)據(jù)結構的深刻含義解:程序是在數(shù)據(jù)的某種特定表示方法和結構基礎上對抽象算法的具體描述,它揭示了面向過程程序設計的本質。將程序設計問題分為算法和數(shù)據(jù)結構,充分顯示了算法在程序設計過程中的重要性。算法注重問題求解的過程和步驟描述,主要考慮問題求解的方法;程序是對算法具體實現(xiàn)的描述,它需要考慮與程序語言及編程環(huán)境有關的實現(xiàn)細節(jié),如語言環(huán)境、操作系統(tǒng)環(huán)境4-6解:算法的實質是對問題求解方法和過程的描述,它由解決問題的基本操作及控制操作過程次序的控制結構組成。其中基本操作包括算術、關系、邏輯等基本運算和輸入輸出以及函數(shù)、位操作、文件操作等;控制結構主要是順序、選擇和循環(huán)三種基本的控制結構。算法的三組成要素:1)操作;2)控制結構;3)數(shù)據(jù)結構;2)動作序列只有一個起點(即初始動作);3)每一動作只有一個后繼動作;4)動作序列的終止表示問題得解或無解(不保證一定能得解)。1)傳統(tǒng)流程圖和標準流程圖符號體系的表示方法;2)傳統(tǒng)流程圖符號表示的結構化表示方法;3)無流程線流程圖符號的結構化表示方法;4)問題分析圖的結構化表示方法;5)偽代碼的結構化程序表示方法。傳統(tǒng)流程圖符號是一些專門設計的圖形符號,用于表示程序或算法中的各類操作,用線條表示這些操作之間的執(zhí)行順序。標準流程圖符號是針對傳統(tǒng)流程圖符號體系的改進。在算法描述中使用他們來描述算法過程,能很好地表達程序設計的結構與梗概,方便同人的交流。傳統(tǒng)流程圖運用起來靈活、自由、形象、直觀,流程線指向的任意轉向使得繪制過程比較隨意、自由,易被接受和運用。但是流程線的不加限制帶來了算法流程繪制的隨意性和不規(guī)則性容易導致繪制出來的流程圖零亂,閱讀不變,修改和維護也比較困無流程線流程圖顯得更緊湊和清晰,其結構化繪制具有強迫性,繪制2)選擇;結構化流程圖的過程也更加容易和方便,克服了傳統(tǒng)流程圖的缺陷,同時保留了流程圖的直觀和簡單特點。但是該表示法的圖形嵌套層次不能太多,尤其是對多層次條件選擇的嵌套清形,并且對圖形的修改和維護,也不如傳統(tǒng)流程圖方便。問題分析圖PAD采用PAD圖形符號描述算法,比較方便,當問題過程方法優(yōu)勢更為明顯,同時它克服了傳統(tǒng)流程圖的隨意和非結構化特征,也套層次的增加內(nèi)層矩形框急劇縮小所帶來的表述上的不方便。偽代碼的結構化程序表示方法,比基于圖形符號的方法自由度大,同時它可以使用自然語言和程序語言進行比較自由的算法描述,可以不嚴格遵守程序語言的嚴格語法約束,另外,由于直接使用了程序語言的要素,在算法的程序語言實現(xiàn)時更加的方便。但它要遵守結構化描述這一基本的要求。4-8C語言提供了哪些用于結構化程序設計的基本技術1)順序;3)循環(huán)。N-S流程圖(方法2__逐一比較):#include<>intmain(void){floatfa,fb,fc,max;clrscr();printf("pleaseinputthreevalues(fa,fb,fc)::");scanf("%f,%f,%f",&fa,&fb,&fc);if(fa<fb)return0;}N-S流程圖(方法3__兩兩比較):#include<>intmain(void){floatfa,fb,fc,temp,max;printf("pleaseinputthreevalues(fa,fb,fc)::");scanf("%f,%f,%f",&fa,&fb,&fc);clrscr();if(fa<fb)return0;}2)如果,轉3);否則轉4);n6);4)初始化fac=1;i=1;然后轉5);ac7)輸出n!的值(n非法時寫‘非法’)......①#include<>intmain(void){intsteps=7;elsesteps++;}printf("thereare%dsteps!\n",steps);return0;}2)計算i!;3)計算1/i!;4)對1/i!累計求和;5)判斷求解的誤差(e-sum)是否小于門限值;6)若是,則轉7);否則,做i++,然后轉2);7)輸出滿足條件時i的取值.#include<>intmain(void){floate;floateps;floatfac=1;floatsum=0;inti=1;/for(i=0;i<=r_length;i=i+spacing)/*計算單側大道綠化所需{}printf("thetotalof%dtreesarerequired!\n",2*j);/*輸需要的總樹苗數(shù)量2j*/活動樹苗費用*/printf("the%dtrees'totalpriceis%d\n",2*j,sum);/*輸?shù)目傎M用sum*/return0;}4-19#include<>#include<>intmain(void){inti,j;clrscr();for(i=1;i<=9;i++){for(j=1;j<=i-1;j++){printf("\t");}for(j=1;j<=9-i+1;j++){printf("%d*%d=%d\t",i,(i+j-1),i*(i+j-1));}printf("\n");}return0;}intmain(void){intnumber=0;while(number++<=1){printf("*%d\n",number);}printf("**%d\n",number);return0;}分析:首先我們清楚自加運算符中前加(++i)和后加(i++)的區(qū)別:運算時,只要引用過其表達式就必然會加1。采用后加(number++),則number++<=1對應于是0<=1(成立),并且number由0執(zhí)行下一條語句“printf(“**%d\n”,number);”輸出:**3并換行,然后繼續(xù)向下執(zhí)行操作系統(tǒng),結束。由此得到該程序段的執(zhí)行結果即如下所示!intmain(void){intnumber=0;while(number<=1){number++;printf("*%d\n",number);printf("**%d\n",number);}return0;}們可以清楚地看到該程序段與程序段1最明顯的差別在于:while條件表達式中完成,其輸出有在循環(huán)體內(nèi),有在循環(huán)體外;而該程序段的自加和輸出numbernumberwhile(成立),進入while循環(huán),執(zhí)行“number++;”語句,此時number由0句(成立),進入while循環(huán),執(zhí)行“number++;”語句,此時number由1句(不成立),退出while循環(huán),執(zhí)行“return0;”語句,返回操作系統(tǒng),結束。由此得到該程序段的執(zhí)行結果即如下所示!習題參考答案5-1.分析:知道最后一天的梨數(shù),可以一天一天倒推到第一天的梨的因此,迭代公式為Xn-1=2(Xn+1),初始條件為X18=1。#include<>intmain(){longpear=1;inti;clrscr();for(i=17;i>0;i--){pear=(pear+1)*2;printf("Day::%2dPears::%ld\n",i,pear);}return0;}5-2請給出2個整數(shù)的最大公約數(shù)和最小公倍數(shù)的算法描述和程序實#include<>intmain(void){intnum1,num2,temp,p,r;printf("Pleaseinputtwonums::");scanf("%d,%d",&num1,&num2);if(num1<num2)/*比較兩個數(shù)的大小,將大的數(shù)放在num1*/{temp=num1;num1=num2;num2=temp;}p=num1*num2;{r=num1%num2;num1=num2;num2=r;}printf("TheGcdis::%d\n",num1);printf("Theleastcommonmultipleis::%d\n",p/num1);return0;}#include<>/*最大公約數(shù)*/intgcd(inta,intb){if(a<b){t=a;a=b;b=t;}if(b==0)returna;returngcd(b,a%b);}/*最小公倍數(shù)*/intlcm(inta,intb){returna*b/gcd(a,b);}voidmain(void){intn,data[100],g,l;inti;printf("Thenumberis:");scanf("%d",&n);for(i=0;i<n;++i){scanf("%d",&data[i]);}g=data[0];for(i=1;i<n;++i)g=gcd(g,data[i]);l=1;for(i=0;i<n;++i)l*=data[i]/g;l*=g;printf("gcd=%d\n",g);printf("Icm=%d\n",l);return;}#include<>intmain(){intplatter=0;intx=1,y=1,z=1,i;for(i=1;i<=5;i++){x*=i;}for(i=1;i<=3;i++){y*=i;}for(i=1;i<=(5-3);i++){z=i;}platter=x/(y*z);printf("Thekindsofplatter::%d",platter);return0;}5-5對例5-20(百錢買百雞問題),請讀者用標記法完成正確解的輸出#include<>intmain(void){intnCock,nHen,nChick;intflag=0;/*換行控制標記,取值范圍0,1,2*/for(nCock=0;nCock<=100;nCock++){for(nHen=0;nHen<=100;nHen++){for(nChick=0;nChick<=100;nChick++){if(flag%3==0)/*換行控制及標記回0*/{printf("\n");flag=0;}if(nCock+nHen+nChick==100&&nCock*5+nHen*3+nChick/3==100){printf("cock=%d\t,hen=%d\t,chick=%d\t",nCock,nHen,nChick);}}}}return0;}#include<>intmain(void){雞雛數(shù)*/clrscr();ncock=0;nhen=0;nchick=0;if((ncock+nhen+nchick==100)&&(ncock*5+nhen*3+nchick/3==100))printf("cock=%dhen=%dchick=%d\n",ncock,nhen,nchick);nchick++;}while(nchick<=100);/*雞雛數(shù)不能超出100只*/nhen++;whilenhen);/*雞母數(shù)不能超出100只*/ncock++;whilencock00);/*雞翁數(shù)不能超出100只*/return0;}#include<>intmain(void){intncock,nhen,nchick;clrscr();ncock=0;while(ncock<=100)/*雞翁數(shù)不能超出100只*/{nhen=0;while(nhen<=100)/*雞母數(shù)不能超出100只*/{nchick=0;while(nchick<=100)/*雞雛數(shù)不能超出100只*/{if((ncock+nhen+nchick==100)&&(ncock*5+nhen*3+nchick/3==100))printf("cock=%dhen=%dchick=%d\n",ncock,nhen,nchick);nchick++;}nhen++;}ncock++;}return0;}5-9輸入一行字符,分別統(tǒng)計其中的英文字母、空格、數(shù)字、和其他#include<>得intmain(void){charc;intletters=0,space=0,digit=0,others=0;printf("Pleaseinputastring::\n");while((c=getchar())!='\n'){letters++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;others++;}printf("letters::%d\nspace::%d\ndigit::%d\nothers::%d\n",letters,space,digit,others);}即#include<>#include<>intmain(){inta,n,result;inti;printf("Pleaseinputa,n::");scanf("%d%d",&a,&n);result=0;for(i=1;i<=n;i++){result+=i*pow(10,n-i);}result*=a;printf("Theresultofa+aa+...+a...aaa=%d",result);return0;}5-11試找出所有“水仙花數(shù)”,即對一個三位數(shù),各個數(shù)字位的立方和等于該數(shù)本身的#include<>intmain(void){示該三位數(shù)*/intss個數(shù)*/clrscr();{{k=0;{num=i*100+j*10+k;if(num==i*i*i+j*j*j+k*k*k){printf("thereasult%dis%d\n",s,num);}}}}return0;}相等的數(shù),如6=1+2+3.在輸出時要求輸出該數(shù)本身及其因子。#include<>intmain(void){intnum,s,fac;for(num=2;num<1000;num++){for(fac=1;fac<num;fac++)if((num%fac)==0)s=s+fac;if(s==num){printf("%dfactorsare::",num);for(fac=1;fac<num;fac++)if(num%fac==0)printf("%d",fac);printf("\n");}}return0;}5-13試求#include<>nn{inta=1,i;for(i=0;i<n;i++){a*=i;}returna;}intmain(){floatpart1=0,part2=0,part3=0;floatresult,i;intktfor(k=1;k<=100;k++){t=factorial(k);part1+=1/(float)t;}for(k=1;k<=36;k++){part2+=(k*k);}for(k=1;k<=30;k++){part3+=1/(float)k;}result=part1+part2+part3;printf("Resultis%f",result);return0;}#include<>intmain(void){inti,t,n=20;floatDen=2,Mol=1,s=0;for(i=1;i<n;i++){s=s+Den/Mol;t=Den;Den=Den+Mol;/*將前一項分子與分母之和作為下一項的分子*/Mol=t;/*將前一項的分子作為下一項的分母*/}printf("sum=%\n",s);return0;}5-15試用四種選擇控制結構完成求4個數(shù)的最大和最小值的程序。思考如何實現(xiàn)任意多個數(shù)中求最大和最小值#include<>intmain(void){intnum1,num2,num3,num4,temp;printf("Pleaseinput4nums::");scanf("%d,%d,%d,%d",&num1,&num2,&num3,&num4);printf("num1=%d,num2=%d,num3=%d,num4=%d\n",num1,num2,num3,num4);if(num1>num2){temp=num1;num1=num2;num2=temp;}if(num1>num3){temp=num1;num1=num3;num3=temp;}if(num1>num4){temp=num1;num1=num4;num4=temp;}if(num2>num3){temp=num2;num2=num3;num3=temp;}if(num2>num4){temp=num2;num2=num4;num4=temp;}if(num3>num4){temp=num3;num3=num4;num4=temp;}printf("Thesortof4numsis::");printf("%d,%d,%d,%d\n",num1,num2,num3,num4);}#include<>#defineTRUE1#defineFALSE0#defineMAX4voidbubble_sort(int*a,intn){inti,j,temp;for(i=n-1;i>=1;--i){for(j=0;j<i;++j){if(a[j]>a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}}}voidinput(int*p,intn){inti;printf("Inputthesequence(MAX=%d)::",MAX);for(i=0;i<n;i++){scanf("%d",&p[i]);}}voidoutput(int*p,intn){inti;for(i=0;i<n;i++){printf("%d",p[i]);}}intmain(void){intnArr[MAX],i;clrscr();input(&nArr[0],MAX);bubble_sort(&nArr[0],MAX);output(&nArr[0],MAX);return0;}5-17試用牛頓迭代法求以下方程在附近的根。#include<>#include<>intmain(void){floatx0,x1,f,f1;/*x0代表前一次的近似根,x1代表后一次的近似根*/{x0=x1;f=((2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;/*f的導函數(shù)*/x1=x0-f/f1;/**/}while(fabs(x1-x0)>=1e-5);printf("Therootis%\n",x1);}5-18試用二分法求方程在之間的根。#include<>#include<>intmain(void){floatx0,x1,x2,fx0,fx1,fx2;{printf("Pleaseinputx1,x2::");scanf("%f,%f",&x1,&x2);fx1=x1*((2*x1-4)*x1+3)-6;fx2=x2*((2*x2-4)*x2+3)-6;}while(fx1*fx2>0);{x0=(x1+x2)/2;fx0=x0*((2*x0-4)*x0+3)-6;if((fx0*fx1)<0){x2=x0;fx2=fx0;}{x1=x0;fx1=fx0;}}while(fabs(fx0)>=1e-5);printf("x=%\n",x0);return0;}分別打印出每一位#include<>voidmain(){intN,arr[5];/*arr[5]對應存放輸入的數(shù)的每位數(shù)*/inti=10,j=10,t=1;printf("Inputthenumber::");scanf("%d",&N);while(i>=10)/*求位數(shù)*/{j=10;}printf("Medianis::%d\n",t);for(i=0;i<t;i++)/*求每一位數(shù)*/{arr[t-i]=N%10;N=N/10;printf("%d",arr[t-i]);}printf("\n");for(i=1;i<=t;i++)/*逆序輸出*/{printf("%d",arr[i]);}}#include<>voidmain(){longinti;intbonus1,bonus2,bonus4,bonus6,bonus10,bonus;printf("Inputtheprofit::");scanf("%ld",&i);bonus1=100000*;bonus2=bonus1+100000*;bonus4=bonus2+200000*;bonus6=bonus4+200000*;bonus10=bonus6+400000*;if(i<=100000)bonus=i*;elseif(i<=200000)bonus=bonus1+(i-100000)*;elseif(i<=400000)bonus=bonus2+(i-200000)*;elseif(i<=600000)bonus=bonus4+(i-400000)*;elseif(i<=1000000)bonus=bonus6+(i-600000)*;bonus=bonus10+(i-1000000)*;printf("bonus=%d",bonus);}5-23請對以下條件語句進行邏輯梳理使邏輯關系更加清晰:if(a<b)if(c<d)x=1;elseif(a<c)if(b<d)x=2;elsex=3;elseif(a<d)if(b<c)x=4;elsex=5;elsex=6;elsex=7;if(a<b)if(c<d)x=1;if(a<c)if(b<d)x=2;x=3;if(a<d)if(b<c)x=4;x=5;x=6;x=7;(2)檢查其有無多余或矛盾的判斷條件;x=4處矛盾:此時循環(huán)語句的條件是a<b,d<c,c<a,a<d,b<cx=5處矛盾:此時循環(huán)語句的條件是a<b,d<c,c<a,a<d,c<bx=6處矛盾:此時循環(huán)語句的條件是a<b,d<c,c<a,d<a(3)重寫一個等效的和簡潔的條件語句。fabelsex=3;x=2;elsex=4;x=1;5-25(1)#include<>intmain(void){charch;ch=getchar();while(ch!=''){putchar(ch);ch=getchar();}return0;}分析:while循環(huán)限制為輸入字符為""時不進入循環(huán),所以輸出不含intmain(void){charch;while((ch=getchar())!='')putchar(++ch);return0;}分析:while循環(huán)限制為輸入字符為""時不進入循環(huán),所以輸出不含"",而在計算機中intmain(void){while(putchar(getchar())!='');return0;}所以當執(zhí)行完最后一個putchar()是輸出的是'',這是退出循環(huán)。5-26寫一個程序計算任意給定的一個整數(shù)之各位數(shù)字之和。要求整#include<>#defineMAX20voidmain(){longarr[MAX];Ninti=10,j=10,t=1,add=0;printf("Inputthenumber::");scanf("%d",&N);while(i>=10){j=10;}for(i=0;i<t;i++){arr[t-i]=N%10;N=N/10;add+=arr[t-i];}printf("Add::%d",add);}5-30(1)#include<>voidmain(void){inti,j;clrscr();for(i=0;i<9;i++){for(j=0;j<9;j++){if(j<=i)printf("");elseprintf("*");}printf("\n");}}voidmain(void){inti,j;for(i=0;i<9;i++){for(j=0;j<i;j++){printf("*");}printf("\n");}}voidmain(void){inti,j;clrscr();for(i=0;i<9;i++){for(j=9;j>0;j--){if(j<=i)printf("*");elseprintf("");}printf("\n");}}voidmain(void){inti,j;clrscr();for(i=9;i>0;i--){for(j=i;j>0;j--){if(j<i)printf("*");elseprintf("");}printf("\n");}}#include<>#defineMAX20intmain(void){inti,j=0;floatavg=0;printf("Inputthenumbers::\n");for(i=0;i<MAX;i++){scanf("%d",&i);if(i==9999)break;/*退出循環(huán)*/avg+=i;}avg=avg/j;printf("Theaverageis%f.",avg);return0;}#include<>intmain(){intnumber,T1,T2,i,temp;printf("Inputthesequence:(Firstisthenumberofthesequence)\n");scanf("%d",&number);scanf("%d",&T1);for(i=1;i<number;i++){scanf("%d",&T2);if(T1>T2){temp=T1;T1=T2;T2=temp;}}printf("Theminofthesequenceis%d.",T1);return0;}5-36對例5-21請考慮1~1000之間能被任意給定的三個數(shù)整除的數(shù)#include<>intmain(void){intn_lcm;intnl_flag=0;ntnuminta,b,c;printf("Inputthenumbers::");scanf("%d%d%d",&a,&b,&c);n_lcm=a*b*c;num=n_lcm;while(num<1000){if(nl_flag%4==0){printf("\n");nl_flag=0;}printf("num=%d\t",num);num+=n_lcm;nl_flag++;}}#include""#defineprintf("min=%d\n",(num1<num2)num1:num2)intmain(void){tabprintf("pleaseinputtwonumbers:\n");scanf("a=%db=%d",&a,&b);MIN(a,b);/*※*/MIN(num1,num2)return0;}解析:程序第8行即※處經(jīng)過宏替換后為printf("min=%d\n",(num1<num2)num1:num2)a=162b=46min=46#include""#defineMAX3(num1,num2,num3)num3>(num1>num2num1:num2)num3:(num1>num2num1:num2)intmain(void){inta,b,c,d;printf("pleaseinputthreenumbers:\n");scanf("%d,%d,%d",&a,&b,&c);d=MAX3(a,b,c);printf("d=%d\n",d);return0;}hreenumbers234,165,790d=790#include""#defineIS_UPPER_CASE(n)('A'<=n&&n<='Z')1:0intmain(void){inti;charch;printf("pleaseinputachar:\n");scanf("ch=%c",&ch);i=IS_UPPER_CASE(ch);/*※*/printf("i=%d\n",i);return0;}、((a)>(((b)>(((c)>(d)(c):(d)))(b):(((c)>(d)(c):(d)))))(a):(((b)>(((c)>(d)(c):(d)))(b):(((c)>(d)(c):(d))))7-8、a=7aa=20a=40a=60a=80a=100a=632aaaaaa7-9、m=1n=0k=0m=2n=2k=1m=0n=0k=-17-10、i=7解析:本題考點在于函數(shù)reset()和workerover()對變量i的改變沒函數(shù)的輸出結果。由于沒有將最新的i返回主函數(shù),所以主函數(shù)的輸#include""#defineMAX(num)'A'<=num&&num<='Z'num+=32:num/*※*/intmain(void){chara,ch;printf("pleaseinputachar:\n");scanf("%c",&a);ch=MAX(a);printf("d=%c\n",ch);return0;}解析:宏定義#defineMAX(num)'A'<=num&&num<='Z'num+=32:num是是大寫字符時,令其num+=32,否則返回原值num。、#include""#defineMAX(num1,num2)num1=num1-num2;num2=num1+num2;num1=num2-num1;intmain(void){tabprintf("pleaseinputtwonumbers:\n");scanf("a=%db=%d",&a,&b);MAX(a,b);printf("a=%d,b=%d\n",a,b);return0;}解析:該方法的優(yōu)勢在于沒有借助中間變量,通過兩元素自身的變換來交換兩參數(shù)的值。解析:因為如果將函數(shù)調用中的宏全部經(jīng)過宏代換后(簡單的字符串替換)恰好和直接利用printf()輸出的格式一致。第八章數(shù)組8-1:編寫函數(shù)實現(xiàn)將任意數(shù)列順序進行逆序處理,并用它處理以下序#include<>#include<>voidmain(){intdataNum=0;inti;int*pArray;printf("Howmanydatadoyouwanttoprocess\n");scanf("%d",&dataNum);pArray=(int*)malloc(dataNum*sizeof(int));printf("Nowpleaseinputthedata::\n");for(i=0;i<dataNum;i++)intFibonacci(intIndex);{printf("theArray[%d]is::",i);scanf("%d",&pArray[i]);}printf("Thedatabeforeprocessis::\n");for(i=0;i<dataNum;i++){printf("%d",pArray[i]);}printf("\n");printf("Thedataprocessedis::\n");for(i=0;i<dataNum;i++){printf("%d",pArray[dataNum-i-1]);}}8-2:編寫函數(shù)實現(xiàn)Fibonacci數(shù)列的計算,并用它來計算第32個Fibonacci數(shù)列元素.#include<>#include<>voidmain(){intindex;printf("Whichelementdoyouwanttocaculate\n");scanf("%d",&index);Fibonacci(index);}intFibonacci(intIndex){inttempA=1,tempB=1;inti;int*pArray=(int*)malloc(Index*sizeof(int));pArray[0]=tempA;pArray[1]=tempB;for(i=2;i<Index;i++){pArray[i]=pArray[i-1]+pArray[i-2];}printf("The%delementis:%d\n",Index,pArray[Index-1]);printf("Theallelementis::\n");for(i=0;i<Index;i++){printf("%d",pArray[i]);}return0;}8-4:#include<>#include<>voidmain(){charString[80];charcstemp;intindex=0,stringNum=0,dataNum=0,spaceNum=0;inti;printf("pleaseinputthestringandendwith'z'::\n");while(1){cstemp=getchar();if(cstemp=='z'||cstemp=='Z')break;String[index]=cstemp;dex}printf("thestringis:\n");for(i=0;i<index;i++){printf("%c",String[i]);}printf("\n");for(i=0;i<index;i++){if(String[i]>'a'&&String[i]<'z')stringNum++;elseif(String[i]>'A'&&String[i]<'Z')stringNum++;elseif(String[i]>'0'&&String[i]<'9')dataNum++;elseif(String[i]='\0')spaceNum++;}printf("thestringNumis%d,thedataNumis%d,thespaceNumis%d",stringNum,dataNum,spaceNum);}8-10:編寫程序計算矩陣的兩個對角線上元素之和;#include<>#defineN10intmain(){intarr[N][N];inti,j,n,m;intsum1=0,sum2=0,sum=0;printf("pleaseinputarr[n][n],(n>0):\n");printf("n=");scanf("%d",&n);if(n<=0)exit(1);printf("pleaseinputthevalueofmatr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論