程序設(shè)計(jì)基礎(chǔ)——基于C語言(第2版)課后習(xí)題參考答案_第1頁
程序設(shè)計(jì)基礎(chǔ)——基于C語言(第2版)課后習(xí)題參考答案_第2頁
程序設(shè)計(jì)基礎(chǔ)——基于C語言(第2版)課后習(xí)題參考答案_第3頁
程序設(shè)計(jì)基礎(chǔ)——基于C語言(第2版)課后習(xí)題參考答案_第4頁
程序設(shè)計(jì)基礎(chǔ)——基于C語言(第2版)課后習(xí)題參考答案_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

精品文檔習(xí)題1參考答案1.1解釋以下術(shù)語(1)計(jì)算機(jī)軟件:計(jì)算機(jī)軟件是一系列按照特定結(jié)構(gòu)組織的程序、數(shù)據(jù)(Data)和文檔(Document)的集合。(2)計(jì)算機(jī)程序:用計(jì)算機(jī)語言所編寫的一系列指令的集合。(3)數(shù)據(jù):數(shù)據(jù)是程序加工和處理的對象。(4)算法:算法是一組有窮的規(guī)則,它們規(guī)定了為解決某一特定問題而采取的一系列運(yùn)算步驟。 (5)數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)結(jié)構(gòu)是存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合,其外在表現(xiàn)為數(shù)據(jù)的組織形式。(6)數(shù)據(jù)類型:數(shù)據(jù)類型是一個(gè)值的集合和定義在這個(gè)值集上的操作的總稱。(7)程序設(shè)計(jì):程序設(shè)計(jì)是給出解決特定問題程序的方法和過程,是軟件構(gòu)造活動(dòng)中的重要組成部分。1.2 簡答題(1)簡述內(nèi)存的組織結(jié)構(gòu)形式? 計(jì)算機(jī)系統(tǒng)把內(nèi)存看作是由若干個(gè)連續(xù)的存儲(chǔ)單元(Storage Location)組成的,每個(gè)存儲(chǔ)單元的大小為一個(gè)字節(jié)(Byte)。為了能唯一標(biāo)志每個(gè)存儲(chǔ)單元,在計(jì)算機(jī)系統(tǒng)中給每個(gè)存儲(chǔ)單元指定一個(gè)唯一的編號,該編號被稱為存儲(chǔ)單元的地址(Address),計(jì)算機(jī)在讀寫內(nèi)存時(shí)就是按照存儲(chǔ)單元的地址進(jìn)行的。(2)為什么計(jì)算機(jī)系統(tǒng)是一個(gè)通用的計(jì)算系統(tǒng)? 在計(jì)算機(jī)硬件相對固定不變的前提下,計(jì)算機(jī)的通用性主要表現(xiàn)在通過運(yùn)行不同的程序來完成不同的計(jì)算任務(wù)。(3)簡述結(jié)構(gòu)化程序設(shè)計(jì)的基本思想?在程序設(shè)計(jì)過程中,如果僅僅使用順序、選擇和循環(huán)這三種基本控制結(jié)構(gòu),并且使每個(gè)代碼塊只有一個(gè)入口和一個(gè)出口,則這樣的程序設(shè)計(jì)方法被稱為結(jié)構(gòu)化程序設(shè)計(jì)(Structured Programming)。(4)簡述計(jì)算機(jī)語言的發(fā)展史? 程序設(shè)計(jì)語言經(jīng)歷了從機(jī)器語言、匯編語言、高級語言到超高級語言的發(fā)展歷程。(5)簡述利用計(jì)算機(jī)進(jìn)行問題求解的過程?1、理解問題特征2、設(shè)想解決方案3、優(yōu)化解決方案4、描述解決方案5、執(zhí)行并分析解決方案(6)簡述各個(gè)程序質(zhì)量要素的含義?1、正確性(Correctness):正確性是指一個(gè)計(jì)算機(jī)程序的正確程度,即程序在預(yù)定的運(yùn)行環(huán)境下能正確完成預(yù)期功能的程度。2、魯棒性(Robustness):魯棒性也稱為健壯性,是指在硬件發(fā)生故障、輸入數(shù)據(jù)無效或操作錯(cuò)誤等意外情況下,程序能做出響應(yīng)的程度。3、效率(Efficiency):效率是指為了完成預(yù)定的功能,系統(tǒng)需要的計(jì)算資源(主要包括計(jì)算時(shí)間和存儲(chǔ)空間)的多少。4、易用性(Usability):易用性又稱為可用性,是指在完成預(yù)定功能時(shí)人機(jī)交互的難易程度。易用性高的程序容易被程序用戶理解和掌握,使用戶操作簡單方便。5、可理解性(Understandability):可理解性是指理解程序的難易程度??衫斫庑愿叩某绦虿湃菀诇y試和維護(hù)。如果程序難以讀懂,就會(huì)給測試和維護(hù)帶來巨大的困難。6、可測試性(Testability):可測試性是一個(gè)計(jì)算機(jī)程序能夠被測試的容易程度。為了提高程序的可靠性,必須通過測試盡可能多得發(fā)現(xiàn)并改正程序中的錯(cuò)誤。程序的可測試性直接影響測試的質(zhì)量和效率。7、可維護(hù)性(Maintainability):診斷和改正程序錯(cuò)誤以及功能擴(kuò)充和性能提高的容易程度。程序設(shè)計(jì)是一個(gè)迭代過程,要開發(fā)出高質(zhì)量的程序需要對程序進(jìn)行多次修改和完善。程序的可維護(hù)性決定了上述工作的質(zhì)量和效率。8、可重用性(Reusability):可重用性是指在其它應(yīng)用中該程序可以被再次使用的容易程度。如果我們在開發(fā)新程序時(shí),能夠直接或稍加修改就能利用原有的程序,則會(huì)大大提高新程序開發(fā)的質(zhì)量和效率。因此,提高程序的可重用性是提高程序設(shè)計(jì)質(zhì)量和效率的根本途徑。1.3計(jì)算題(1)計(jì)算-1的8位原碼、反碼、補(bǔ)碼和Excess_127碼。 分別為:10000001B、11111110B、11111111B、01111110B(2)計(jì)算機(jī)內(nèi)存中相鄰四個(gè)字節(jié)的值為10111110000000000000000000000000,試問該值表示的實(shí)數(shù)、有符號數(shù)和無符號數(shù)各為多少? 分別是:實(shí)數(shù)0.125、有符號數(shù)-1107296256(負(fù)數(shù)在計(jì)算機(jī)中用補(bǔ)碼表示)無符號數(shù)3187671040(3)字符A、a、1的ASCII值是多少,給出將大寫字母的ASCII轉(zhuǎn)換成對應(yīng)小寫字母ASCII值得計(jì)算公式。A:41H a:61H 1:31H大寫轉(zhuǎn)化為小寫:大寫字母的ASCII值+20H=小寫字母的ASCII值1.4為下列問題求解設(shè)計(jì)算法,并分別用程序流程圖、NS盒圖和PAD圖加以描述。(1)有兩個(gè)調(diào)料盒S1和S2,分別盛有糖和鹽,要求將它們互換(即S1盒原來盛糖,現(xiàn)在改盛鹽;S2同理)。算法思想:這是一個(gè)兩個(gè)變量交換值的問題,可以設(shè)置一個(gè)臨時(shí)變量,首先把S1的值放入臨時(shí)變量中,然后將S2的值放入S1中,最后將臨時(shí)變量的值放入S1中即可。程序流程圖:N-S盒圖:PAD圖:(2)依次輸入6個(gè)整數(shù),要求輸出其中最小的數(shù)。算法思想:定義一個(gè)臨時(shí)變量用來存放最小的數(shù),首先輸入第一個(gè)數(shù)賦值于臨時(shí)變量,然后循環(huán)輸入其余的整數(shù),比較輸入的整數(shù)和臨時(shí)變量的大小,如果大于臨時(shí)變量則繼續(xù)輸入,反之,則給臨時(shí)變量賦值為次此數(shù)。最后臨時(shí)變量中存放的數(shù)輸入的數(shù)中的最小數(shù),輸入臨時(shí)變量即可。程序流程圖:N-S盒圖:PAD圖:(3)輸入3個(gè)整數(shù),按從大到小的順序輸出。算法思想:輸入三個(gè)數(shù)a、b、c,首先比較a和b,如果ab,則比較c和a,如果ca則輸出c、a、b;如果cb,輸出a、c、b,否則輸出a、b、c;對于ab的情況同理可以得出結(jié)果。程序流程圖:N-S盒圖:PAD圖:(4)求1*2*3*10。 算法思想:定義一個(gè)變量用來存放最后的值,賦初值為1,做十次循環(huán),每次循環(huán)在原來變量的基礎(chǔ)上乘循環(huán)變量值(即1-10),最后輸出這個(gè)變量即可。程序流程圖:N-S盒圖:PAD圖:(5)輸入兩個(gè)整數(shù),求其最大公約數(shù)。算法思想:選取兩個(gè)數(shù)中較小的數(shù)作為起始值,讓這兩個(gè)數(shù)分別除以這個(gè)值,如果可以整除,則這個(gè)數(shù)就是最后結(jié)果,如果不能整除則將起始值減一之后再用原來的兩個(gè)數(shù)對其做除法運(yùn)算,知道整除為止,得到的起始值的最后值就是結(jié)果。程序流程圖:N-S盒圖:PAD圖:1.5算法思考題(1)鈔票換硬幣:把一元鈔票換成一分、二分、五分硬幣(每種至少一枚),有哪些種換法? 分析:1元相當(dāng)于100分,設(shè)5分、2分、1分的硬幣數(shù)分別為X、Y、Z,求換法就是在尋找這樣一種組合,使得5*X+2*Y+Z =100,所以每當(dāng)找到1種組合時(shí),將個(gè)數(shù)記錄下來,就可知換法有多少種,算法描述如下:Count = 0; /用于記錄個(gè)數(shù),初始為0for(X=1;X=20;X+) for(Y=1;Y=50;Y+) for(Z=1;Z=100;Z+) if(5*X + 2*Y + Z = 100) /可實(shí)現(xiàn)交換 Count +; 輸出Count(2)百錢買百雞:一只公雞值元,一只母雞值元,只小雞值元,現(xiàn)用一百元要買一百只雞,問有什么方案?分析:由題意可知,假設(shè)公雞、母雞、小雞分別有X、Y、Z只,那么X、Y、Z滿足:X+Y+Z=100,而且要滿足錢數(shù)限定:5*X+3*Y+1/3*Z = 100,由于3只小雞1元錢,所以小雞的個(gè)數(shù)必須是3的整數(shù)倍,即:Z是3的整數(shù)倍??赏ㄟ^限制條件,篩選出滿足條件的X,Y,Z。當(dāng)然X、Y、Z還滿足以下條件:5*X = 100;3*Y = 100;Z = 100。以下是算法描述:for(X=0;X=100;X+) for(Y=0;Y=100;Y+) for(Z=0;Z=100;Z+) if(5*X=100 and 3*Y=100 and z%3=0) if(X+Y+Z=100 and 5*X+3*Y+Z/3 = 100) 輸出X、Y、Z;(3)斐波那契兔子的問題:某人有一對兔子飼養(yǎng)在圍墻中,如果它們每個(gè)月生一對兔子,且新生的兔子在第二個(gè)月后也是每個(gè)月生一對兔子,問一年后圍墻中共有多少對兔子。分析:第一個(gè)月是最初的一對兔子生下一對兔子,圍墻內(nèi)共有兩對兔子。第二個(gè)月仍是最初的一對兔子生下一對兔子,共有3對兔子。到第三個(gè)月除最初的兔子新生一對兔子外,第一個(gè)月生的兔子也開始生兔子,因此共有5對兔子。繼續(xù)推下去,第12個(gè)月時(shí)最終共有對377對兔子。由分析知,每個(gè)月的兔子都是上個(gè)月的兔子與新增兔子之和,而上個(gè)月新生的兔子到下個(gè)月才會(huì)生兔子,所以新增的兔子都是上兩月的兔子生的。設(shè)每個(gè)月的兔子數(shù)為F(n),則可列出下列式子:F(0) = F(1) = 1F(n) = F(n-1) + F(n-2)顯然可用遞歸的方法解出此題,算法流程圖如下:習(xí)題2參考答案(1)請簡要描述C語言的發(fā)展歷史。答:C語言是一種目前世界上普遍流行、使用廣泛的高級程序設(shè)計(jì)語言,它是在B語言的基礎(chǔ)上發(fā)展起來的,19721973年間,貝爾實(shí)驗(yàn)室設(shè)計(jì)出了C語言。1983年,美國國家標(biāo)準(zhǔn)化協(xié)會(huì)制定了C語言的標(biāo)準(zhǔn),稱為ANSI C。(2)略。(3)C語言的主要特點(diǎn)是什么?答:C語言的主要特點(diǎn)如下。 C程序是由函數(shù)組成的。 函數(shù)由函數(shù)頭和函數(shù)體組成。 C程序總是從main函數(shù)開始執(zhí)行。 每個(gè)語句和數(shù)據(jù)聲明的最后必須有一個(gè)“;”。 C語言沒有自己的輸入/輸出語句,它的輸入/輸出由庫函數(shù)printf和scanf完成。 可以添加注釋。 C語言程序中的變量必須先聲明后使用。(4)如何使用Visual C+ 6.0開發(fā)控制臺(tái)程序?使用VC6開發(fā)控制臺(tái)程序的方法如下:答: 在Miscrosoft Visual C+ 6.0環(huán)境下,首先建立一個(gè)空的工程。 而后建立一個(gè)C源程序文件,并在該文件中輸入源代碼。 使用Bulid命令或者快捷鍵F7,進(jìn)行編譯連接。 如果沒有錯(cuò)誤,選擇Execute命令或者快捷鍵Ctrl+F5,進(jìn)行執(zhí)行。習(xí)題3參考答案:3.1 選擇題 1.B 2.D 3.D 4.A 5.A 6.A 7.C 8.C 9.C 10.B3.2 寫出下列程序的輸出結(jié)果1200 310 c82.a=100,b=2003.97,141,61,a4.5.aabb c abc4,36.6,6,6,73.3 編程題1#include void main()int a=500;printf(%d,%o,%xn,a,a,a);輸出結(jié)果:500,764,1f42.#include void main()float x;scanf(%f,&x);printf(a=%.3f,a=%.3en,x,x);輸入:66輸出結(jié)果:a=66.000,a=6.60000e+0013.#include void main()char ch1=a,ch2=ch1;printf(%c,%d,%o,%xn,ch1,ch1,ch1,ch1);printf(%c,%d,%o,%xn,ch2,ch2,ch2,ch2);輸出結(jié)果:A,65,101,41a,97,141,614.#include void main()float x,y,z,s,v;scanf(%f%f%f,&x,&y,&z);s=2*(x*y+x*z+y*z);v=x*y*z;printf(Area=%.lf,Volume=%.lfn,s,v);輸入:3 4 5輸出結(jié)果:Area=94 ,Volume=605#define PI 3.14#include #include void main()float r,s,l;scanf(%f,&r);s=(float)PI*r*r;l=2*(float)PI*r;printf(r=%4.1f,s=%4.1f,l=%4.1fn,r,s,l);輸入:3輸出結(jié)果:r= 3.0,s=28.3 ,l=18.86#include #include void main()float x1,y1,x2,y2,x3,y3,a,b,c,p,s;scanf(%f%f%f%f%f%f,&x1,&y1,&x2,&y2,&x3,&y3);a=sqrt(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);b=sqrt(x1-x3)*(x1-x3)+(y1-y3)*(y1-y3);c=sqrt(x2-x3)*(x2-x3)+(y2-y3)*(y2-y3);p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c);printf(Area=%fn,s);輸入:5 6 3 8 0 23輸出結(jié)果:Area=12.000013習(xí)題4參考答案4.1選擇題。(1)D (2)A (3)A (4)C (5)C (6)B (7)B (8)B (9)C (10)A4.2填空題。(1)261 (2)16 (3)0 (4)2,14.3編程題。(1)#includevoid main() float c,f; printf(輸入華氏溫度:n); scanf(%f,&f); c=(f-32)*5/9; printf(攝氏溫度為:%5.2fn,c);(2)#include#includevoid main() char s110,s210,s20; printf(please enter two stringn); gets(s1); gets(s2); strcat(s1,s2); printf(%sn,s1); printf(%dn,strlen(s1);(3)#include#includevoid main() double x,y; printf(please enter two data:n); scanf(%lf%lf,&x,&y); printf(%lf raised to %lf is %lfn,x,y,pow(x,y);習(xí)題5參考答案1填空題(1) n=4 (2) 2*i-1 (3) 7 (4) #2#include void main() long m,n,a,b,s; printf(nPlease input value of M :); scanf(%ld,&m); printf(nPlease input value of N :); scanf(%ld,&n); a=(mn)?m:n;b=(mn)?n:m;while (a%b!=0)s=a%b;a=b;b=s;printf(nGong yue shu:%ldn,s);printf(nGong Bei shu:%ldn,(m*n)/s);3#include void main() int a,b,c,d,e;printf(Please input an integer:n);scanf(%d,&a);if (a/1000=0)printf(input error!n);return;b=a/1000;e=a%10;c=a%1000/100;d=a%100/10;if (b=e & c=d)printf(YES.n);elseprintf(NO.n);4#include void main() int c;int Num1,Num2,Num3,Num4;Num1=Num2=Num3=Num4=0;doc=getchar();if (c=a & c=A & c=0 & c=9)Num2+;else if (c= )Num3+;elseNum4+;while(c!=n);printf(英文字母有%d個(gè),數(shù)字有%d個(gè),空格有%d個(gè),其它字符有%d個(gè)。n,Num1,Num2,Num3,Num4);5#include #include void main()float a,b,c,disc,x1,x2,realpart,imagepart;printf(Input a,b and c:);scanf(%f,%f,%f,&a,&b,&c);printf(The equation);disc=b*b-4*a*c;if (fabs(disc)1e-7)x1=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);printf(has distince real roots:%4.2f and %4.2f.n,x1,x2);elserealpart=-b/(2*a);imagepart=sqrt(-disc)/(2*a);printf(has complext roots:);printf(%4.2f+%4.2fi,realpart,imagepart);printf( and %4.2f-%4.2fin,realpart,imagepart);6. #include void main()int i,j;for (i=1;i=5;i+)for (j=1;j=1;i-)for (j=i;j=1;j-)printf(*);printf(n);7#include #define EPS 1e-7void main()int n;double x,an,sum;printf(input x:);scanf(%lf,&x);x=x*3.1415926/180;sum=0;an=x;n=1;dosum+=an;n=n*(n+1)*(n+2);an*=(-x*x)/n;printf(an=%fn,an);while(fabs(an)=EPS);printf(sin(%.4lf)=%.4lfn,x,sum);8#include void main()unsigned int n;char c;n=0;printf(input a binary integer:);while(c=getchar()!=n)switch (c)case 0:n=n*2+0;break;case 1:n=n*2+1;break;printf(the decimal is %d.n,n);9#include void main()int i,j;for (i=1;i10;i+)printf(t%d,i);printf(n);for (i=1;i10;i+)printf(%d,i);for (j=1;j=i;j+)printf(t%d,i*j);printf(n);10#include void main()int n,m,z,x,y;printf(input n:);scanf(%d,&n);m=n;z=x=y=1;while (n1)z=x+y;x=y;y=z;n-;printf(Fibonacci(%d)=%d.n,m,z);11#include #include void main()int i,j;int flag;for (i=1;i=100;i+)flag=1;for (j=2;j=sqrt(i);j+)if (i%j=0)flag=0;break;if (flag=1)printf(%dt,i);12#include void main()int i,sum;sum=0;for (i=1;i=1000;i+)if (i%3=0 & i%5=0 & i%7=0)sum+=i;printf(sum is %d.n,sum);13#include void main()int x;long f;printf(input x:);scanf(%d,&x);if (x=1 & x=4 & x=10)f=3*(x+4);elsef=x*x+3*x-6;printf(f(%d)=%dn,x,f);習(xí)題6參考答案6.1 &bij=3001+i*16+j*4;6.2求一維數(shù)組各元素的最大值、最小值及所有元素的乘積#include#define N 10void main( )int aN;int max,min,i,product;printf(輸入%d個(gè)數(shù)組元素:n,N);for(i=0;iN;i+)scanf(%d,&ai);max=a0;min=a0;product=a0;for(i=1;iN;i+)product*=ai;if(maxai)min=ai;printf(各元素最大值為:%dn,max);printf(各元素最小值為:%dn,min);printf(各元素的乘積為:%dn,product);6.3已知數(shù)列a0=0, a1=1,an= an-2+ an-2an-1,求數(shù)列的前10個(gè)元素#include#define N 10void main( )int aN=0,1;int i;for(i=2;iN;i+)ai=ai-2+ai-2*ai-1;for(i=0;iN;i+)if(i%5=0)printf(n);printf(%5d,ai);printf(n);6.4用改進(jìn)的冒泡算法對N個(gè)數(shù)由小到大排序#include#define N 10void main( )int aN;int i,j,temp,flag;printf(輸入待排序數(shù)據(jù):n);for(i=0;iN;i+)scanf(%d,&ai);for(i=0;iN-1;i+)flag=0;for(j=0;jaj+1)temp=aj;aj=aj+1;aj+1=temp;flag=1;if(flag=0)break;printf(排序后數(shù)據(jù)為:n);for(i=0;iN;i+)printf(%d ,ai);printf(n);6.5用插入法對N個(gè)數(shù)由小到大排序#include#define N 10void main( )int aN;int i,j,temp;printf(輸入待排序數(shù)據(jù):n);for(i=0;iN;i+)scanf(%d,&ai);for(i=0;itemp&j=0)aj+1=aj;j-;aj+1=temp;for(i=0;iN;i+)printf(%d ,ai);printf(n);6.6用篩選法求1-100內(nèi)的素?cái)?shù)#include#includevoid main( )int a101;int i,j,count=0;for(i=1;i=100;i+)ai=i;a1=0;for(i=2;isqrt(100);i+)if(ai!=0)for(j=i+1;j=100;j+)if(aj!=0&aj%ai=0)aj=0;for(i=1;i=100;i+)if(ai!=0)printf(%5d,ai);count+;if(count%5=0)printf(n);6.7將一維數(shù)組中各個(gè)元素的順序變反#include#define N 10void main( )int aN,i,temp;printf(請輸入%d個(gè)整數(shù):n,N);for(i=0;iN;i+)scanf(%d,&ai);for(i=0;iN/2;i+)temp=ai;ai=aN-1-i;aN-1-i=temp;for(i=0;iN;i+)printf(%5d,ai);printf(n);6.8輸出如下上三角矩陣,主對角線以下的元素不輸出#include#define N 3void main()int aNN=1,1,6,0,5,7,0,0,2;int i,j;for(i=0;iN;i+)for(j=0;ji;j+)printf( );for(j=i;jN;j+)printf(%4d,aij);printf(n);6.9求兩個(gè)矩陣的和,要求不引入新的矩陣#include#define M 3#define N 4void main( )int aMN,bMN,i,j;printf(請輸入%d*%d矩陣A:n,M,N);for(i=0;iM;i+)for(j=0;jN;j+)scanf(%d,&aij);printf(請輸入%d*%d矩陣B:n,M,N);for(i=0;iM;i+)for(j=0;jN;j+)scanf(%d,&bij);for(i=0;iM;i+)for(j=0;jN;j+)aij+=bij;printf(兩矩陣的和為:n);for(i=0;iM;i+)for(j=0;jN;j+)printf(%5d,aij);printf(n);6.10求矩陣的最大元素和最小元素及其所在行和列#include#define M 3#define N 4void main( )int aMN,i,j,max,maxi=0,maxj=0,min,mini=0,minj=0;printf(請輸入%d*%d矩陣A:n,M,N);for(i=0;iM;i+)for(j=0;jN;j+)scanf(%d,&aij);max=a00;min=a00;for(i=0;iM;i+)for(j=0;jmax)max=aij;maxi=i;maxj=j;if(aijmin)min=aij;mini=i;minj=j;printf(最大元素為a%d%d=%dn,maxi,maxj,max);printf(最小元素為a%d%d=%dn,mini,minj,min);6.11輸出楊輝三角形的前10行11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1. . . . . . .說明:楊輝三角形是(a+b)n展開后各項(xiàng)的系數(shù)。首行(a+b)0的系數(shù)為1,次行為1,1;其余各行中首末元素為1,其余元素為其左上方元素與正上方元素的和。#include#define N 10void main( )int aNN,i,j;for(i=0;iN;i+)ai0=1;aii=1;for(j=1;ji;j+)aij=ai-1j-1+ai-1j;printf(楊輝三角的前%d行為:n,N);for(i=0;iN;i+)for(j=0;j=i;j+)printf(%5d,aij);printf(n);6.12輸出N階魔方陣,其中N為一個(gè)奇數(shù)。N階魔方陣是指一個(gè)N*N的方陣,其元素由1到N2組成,且方陣每行、每列以及對角線元素的和都相等。如三階魔方陣為魔方陣中各數(shù)的排列規(guī)律如下:(1)1在第一行中間一列;(2)從2到N*N的各個(gè)數(shù)依次按如下規(guī)則存放:每一個(gè)數(shù)存放的行比前一個(gè)數(shù)的行數(shù)減1,列數(shù)加1(如上面的三階魔方陣,5在4的上一行后一列);(3)如果上一個(gè)數(shù)在第一行,則下一個(gè)數(shù)在最后一行,列數(shù)加1;(4)如果上一個(gè)數(shù)在最后一列,則下一個(gè)數(shù)在第一列,行數(shù)減1;(5)如果按上述規(guī)則確定的位置已經(jīng)有數(shù),或上一個(gè)數(shù)在第1行第N列,則下一個(gè)數(shù)放在上一個(gè)數(shù)的正下方。如三階魔方陣中,按前四條規(guī)則,4應(yīng)該放在第一行、第二列的位置,但由于1已經(jīng)在該位置,故4放在3的下面。再如6,因其位于第一行第3列,故7在其下方。#include#define N 5void main( )int aNN=0,i,j,k;i=0;j=N/2;aij=1;for(k=2;k=N*N;k+)i=i-1;j=j+1;if(i0&j=N)i=i+2;j=j-1;aij=k;else if(i0)i=N-1;else if(j=N)j=0;else if(aij!=0)i=i+2;j=j-1;aij=k;for(i=0;iN;i+)for(j=0;jN;j+)printf(%5d,aij);printf(n);6.13求二維數(shù)組的鞍點(diǎn)。即找一個(gè)位置,該位置上的元素同行中最大,同列中最小。#include#define M 3#define N 4void main()int aMN;int i,j,maxj,count=0,flag;printf(請輸入%d*%d階矩陣A:n,M,N );for(i=0;iM;i+)for(j=0;jN;j+)scanf(%d,&aij);for(i=0;iM;i+)maxj=0;for(j=1;jN;j+)if(aimaxjaij)maxj=j;flag=1;for(j=0;jM;j+)if(ajmaxjaimaxj)flag=0;if(flag=1)count+;printf(第%d個(gè)鞍點(diǎn):a%d%d=%dn,count,i,maxj,aimaxj);if(count=0)printf(沒有鞍點(diǎn));6.14輸出以下圖案#include#define N 4void main()int i,j;for(i=0;iN;i+)for(j=0;ji;j+)printf( );for(j=i;jN;j+)printf(* );printf(n);6.15通過鍵盤輸入一行字符串,之后按如下規(guī)律對其加密:AZ azBY byCX cx. . . .即將字符串中的第i個(gè)大寫或小寫英文字母變成相應(yīng)的第26-i+1個(gè)大寫或小寫字母,其它字符不變。#include#includevoid main()char str100;int i,len;printf(請輸入字符串:n);gets(str);len=strlen(str);for(i=0;i=A&stri=a&stri=z)stri=a+25-(stri-a);puts(str);6.16編程實(shí)現(xiàn)strcmp函數(shù)的功能。#includevoid main()char str1100,str2100;int i=0,result;printf(請輸入字符串str1:n);gets(str1);printf(請輸入字符串str2:n);gets(str2);while(str1i=str2i&str1i!=0)i+;if(str1i=0&str2i=0)result=0;elseresult=str1i-str2i;printf(結(jié)果為:%dn,result);6.17編程實(shí)現(xiàn)strcpy函數(shù)的功能。#include#includevoid main()char str1100,str2100;int i=0;printf(請輸入字符串str2:n);gets(str2);while(str2i!=0)str1i=str2i;i+;str1i=0;printf(str1=%sn,str1);printf(str2=%sn,str2);習(xí)題7參考答案7.1答:從用戶使用的角度,可以將函數(shù)分為:l 庫函數(shù)庫函數(shù)也稱為標(biāo)準(zhǔn)函數(shù),指由C系統(tǒng)提供而無需用戶定義的函數(shù)。這種函數(shù)只需在程序前面包含該函數(shù)原型所在的頭文件即可(即使用#include預(yù)處理命令)。l 用戶自定義函數(shù)指用戶按照實(shí)際需要自己編寫的實(shí)現(xiàn)一定功能的函數(shù)。這種函數(shù)需要在程序中進(jìn)行聲明和定義才可以使用。從函數(shù)返回值的角度,可以將函數(shù)分為:l 有返回值函數(shù)如果一個(gè)函數(shù)被調(diào)用,并在執(zhí)行完成后要向調(diào)用者返回一個(gè)執(zhí)行結(jié)果,則稱為有返回值函數(shù),這個(gè)函數(shù)返回的執(zhí)行結(jié)果即為返回值。如:getchar函數(shù)便返回一個(gè)字符。如果一個(gè)用戶自定義函數(shù)是有返回值的,那么必須在函數(shù)聲明和定義中明確指出返回值的類型。l 無返回值函數(shù)如果一個(gè)函數(shù)被調(diào)用,但在執(zhí)行完成后不向調(diào)用者返回函數(shù)值,則稱為無返回值函數(shù)。此類函數(shù)主要用于完成某種特定的處理任務(wù)(類似于Basic、Pascal等語言中的過程),如:printf函數(shù)實(shí)現(xiàn)輸出功能,就沒有返回值。用戶在定義一個(gè)無返回值函數(shù)時(shí),需要指定其返回值類型為空類型,即void類型。從函數(shù)有無參數(shù)的角度,可以將函數(shù)分為:l 有參函數(shù)有參函數(shù)也稱為帶參函數(shù)。如果一個(gè)函數(shù)被調(diào)用時(shí)需要從調(diào)用者那里接收一些參數(shù),那么它就是一個(gè)有參函數(shù)。如:printf、scanf就是有參函數(shù),在調(diào)用時(shí)需要指明輸出、輸入的格式和內(nèi)容。在函數(shù)定義和聲明中使用的參數(shù),稱為形式參數(shù),簡稱為形參,用于表明一個(gè)函數(shù)需要接收的數(shù)據(jù);在函數(shù)調(diào)用時(shí)給出的參數(shù)稱為實(shí)際參數(shù),簡稱為實(shí)參,用于給被調(diào)用的函數(shù)傳遞實(shí)際數(shù)據(jù)。l 無參函數(shù)如果一個(gè)函數(shù)被調(diào)用時(shí)不需要從調(diào)用者那里接收任何參數(shù),則稱為無參函數(shù)。如我們前面所有的main函數(shù)都是無參函數(shù)。7.2答:C語言中函數(shù)定義的格式有兩種。第一種是傳統(tǒng)格式(或稱為K&R格式),是早期編譯系統(tǒng)使用的格式;第二種是現(xiàn)代格式(或稱為ANSI 格式),是現(xiàn)代編譯系統(tǒng)采用的格式。傳統(tǒng)格式:存儲(chǔ)類型 數(shù)據(jù)類型 函數(shù)名(形參名1,形參名2,) 數(shù)據(jù)類型1 形參名1;數(shù)據(jù)類型2 形參名2; 函數(shù)體 現(xiàn)代格式:存儲(chǔ)類型 數(shù)據(jù)類型 函數(shù)名(數(shù)據(jù)類型1 形參名1,數(shù)據(jù)類型2 形參名2,)函數(shù)體功能:定義一個(gè)函數(shù)。7.3答:函數(shù)調(diào)用有兩種方式:一是使用函數(shù)名進(jìn)行調(diào)用,二是使用函數(shù)指針進(jìn)行調(diào)用。格式:

溫馨提示

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

評論

0/150

提交評論