c語言上機實驗題解析_第1頁
c語言上機實驗題解析_第2頁
免費預(yù)覽已結(jié)束,剩余41頁可下載查看

下載本文檔

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

文檔簡介

1、1.下列程序中,要求 main 函數(shù)實現(xiàn)如下功能:從鍵盤上輸入三個正整數(shù),求出它們中 的最大值。請完善程序,并在程序最后用注釋的方式給出你的測試數(shù)據(jù)及在這組測試數(shù)據(jù)下 的運行結(jié)果。#in elude void mai n() int a,b,c,max;prin tf(E nter three in tegers:);scan f(%d%d%d, &a, &b,&c);if(ab)max=a;elsemax=bif(cmax)max=c;printf(max of the three nu mbers is%d,max);/*1,2,5max of the three

2、nu mbers is 5*/2.請編程序,對從鍵盤上輸入的 x 值,根據(jù)以下函數(shù)關(guān)系計算出相應(yīng)的y 值(設(shè) x,y 均為 整型量)。xyx000=x10 x10=x201020=x40-5x+20#in cludemain ()int x,y;scan f(%d,& x);if(x=0& x=10& x=20) y=10;elsey=-5*x+20; prin tf(%d,y);3. 寫程序計算下列各表達式的值: 2 213-(2.24-0.24 )耳3683)2恵:;13 e2#in clude#in cludemain () float a,b,c;a=2.0/(

3、4.0/5+3)+1;b=sqrt(13-pow(2.24-pow(0.24,2),2)/3.68);c=2*3.14159*sqrt(13+ exp(2);prin tf(%fn%fn%f,a,b,c);4. 寫程序計算5X2+2X+6的兩個實根??紤]用合適的方式輸出。(提示:可先計算出判別式 b2-4ac 的值)#in clude#in cludemain () float a,b,c,x1,x2,p,q,disc;prin tf(i nput a,b,c:);scan f(%f%f%f,&a,&b,&c);disc=b*b-4*a*c ;if(disc=0)p=-

4、b/(2*a);q=sqrt(disc)/(2*a);x1=p+q;x2=p_q;prin tf(%fn%fn,x1,x2);elseprin tf(No An swer);5.從鍵盤上任意輸出一個年份year, 判別該年是否為閏年,如是輸出“yes”,否則輸出no”。提示:如果變量 year 的值是閏年年份,那么這個值應(yīng)該是4 的部數(shù)但又不是 100 的1)1234/52)倍數(shù),或者它是 400 的倍數(shù)。#includevoid main()int year;scanf(%d,&year);if(year%4=0&year%100!=0|year%400=0)printf(y

5、es);elseprintf(no);6.從鍵盤上輸入 float 型數(shù),判斷這三個數(shù)能否構(gòu)成三角形,若能則求該三角形面積,否 則輸出不能構(gòu)成三角形的信息。#include#include void main() float a,b,c,p,area;printf(input three integers:);scanf(%f %f %f,&a,&b,&c);if(a+bc&a+cb&b+ca)p=(a+b+c)/ 2.0;area=sqrt(p*(p-a)*(p-b)*(p-c);printf(%fn,area);elseprintf(inputs a

6、re wrong!);7.下列程序想求出滿足如下條件的三位數(shù)n:(1)n 除以 11(整數(shù)相除)所得到的商等于 n的各位數(shù)字的平方和; (2)n 中至少有二位數(shù)字相同。如: 131 除以 11 的商為 11, 131 各位 數(shù)字的平方和為 11, 131 中有二位數(shù)字相同,故 131 是所要求出的三位數(shù)中的一個;又如 550,也是滿足條件的三位數(shù)。源程序中有些錯誤,請你改正并最終使程序得到如下的運行 結(jié)果: 131 550 900含有錯誤的源程序】8.請編程序,實現(xiàn)從鍵盤上輸入任意一個整數(shù) n,求出 n 的各位數(shù)字之和。例如,當(dāng)n為 263 時,各位數(shù)字之和為 11。下面是一個可以實現(xiàn)逐位數(shù)字

7、累加功能的程序段,試理解 后應(yīng)用到自己的程序中。#includestdio.hvoid main() int n,k;scanf(%d,&n);k=0 ;dok+=n%10;n/=10;while (n);printf(%d,k);getch();9.試找出符合下列條件的正整數(shù): (1)該數(shù)是一個三位數(shù); (2)該數(shù)是 37 的倍數(shù); (3)該數(shù) 循環(huán)左移后得到的另兩個數(shù)也是 37 的倍數(shù)。例如 148 是 37 的倍數(shù), 481 和 814 也是 37 的 倍數(shù)。#includestdio.hvoid main() int n,a,b;for(n=100;n1000;n+)if(n%

8、37=0)a=n/10+n%10*100;b=n/100+n%100*10; if(a%37=0&b%37=0) printf(%5d,n);#include void main()int n , a , b , c;for(n=1; n=2)printf(%5d,n);#includestdio.hvoid main() int a,b,c,n;for(n=100;n=1 */printf(%5d,n);getch();10. 請編輯調(diào)試下列程序,觀察其運行結(jié)果,理解函數(shù)定義、函數(shù)調(diào)用的基本方法,并 理解函數(shù)調(diào)用時形參和實參之間數(shù)據(jù)的傳遞方式。(1)請將下列源程序進行調(diào)試,觀察運行結(jié)

9、果,盡量想明白為什么得到如此運行結(jié)果 后再看題后的評注:【源程序】#include void main()int i=2,x=5,j=7;fun(j,6);printf( “ i=%d,j=%d,x=%nd” , i , j , x);int fun(int i ,int j) int x=7;printf( “ i=%d,j=%d,x=%nd”, i , j ,x);(2)評注:該題想要使大家明白,函數(shù)調(diào)用時是實參單向值傳遞給形參的,函數(shù)的形參是隨著該 函數(shù)被調(diào)用而分配空間, 調(diào)用結(jié)束系統(tǒng)要回收空間; 當(dāng)執(zhí)行 main 函數(shù)中的語句 fun(j,6) 時, 其中的 j 是 main 函數(shù)中的

10、量 j ,這次調(diào)用等價于 fun(7,6) ,即將 7 和 6 分別傳輸給形參變 量 i 和 j ;當(dāng)執(zhí)行 fun 函數(shù)時,fun 有其自身的內(nèi)部變量 x ,fun 函數(shù)中的輸出語句中, i,j,x 的值分別為 7,6,7 ;執(zhí)行流程遇 fun 函數(shù)中的函數(shù)體閉封符“ ”返回主函數(shù),在主函數(shù)中 輸出時, i,j,x 的值分別 2,7, 5。2(實驗報告上的題 2)請按如下步步驟設(shè)計程序:( 1)編輯并運行下列程序:#include void main()char i;float x;printf(enter x:);scanf(%f,&x);printf(1. To calculate

11、 e to the power xn);printf(2. To calculate logx to the base 10n);printf(3. To calculate lnx n);printf(4. To calculate square root of xn);printf(n);printf(enter your choice:1/2/3/4);scanf(%1s,&i); /*表示截取輸入字符串中的 1 個字符,因為輸入串中回車也算 1 個字符的*/ switch(i) /*i 必須視作字符量,這由它的類型及輸入的數(shù)據(jù)所決定*/case 1: fexp(); break

12、;case 2: flog10();break;case 3: flog();break;case 4: fsqrt();break;default: printf(Sorry, can t do for you!n); break;getch();fexp()flog10()flog()fsqrt()評注:這個程序既然能運行了, 輸入測試數(shù)據(jù), 試著走走所有的分支路徑, 看看能不能都走得 通(當(dāng)然有些是不可能有結(jié)果的,因為輔助功能函數(shù)都是空的) ,一定要走喲,并且弄清楚 所走路徑中分別執(zhí)行什么語句,得到什么結(jié)果。( 2)試著將下面的功能函數(shù)的首部作修改 (加上形參和返回值類型, 一定要注意到

13、喲)#include void main()char i;float x;printf(enter x:);scanf(%f,&x);printf(1. To calculate e to the power xn);printf(2. To calculate logx to the base 10n);printf(3. To calculate lnx n);printf(4. To calculate square root of xn);printf(n);printf(enter your choice:1/2/3/4);scanf(%1s,&i);switch(i

14、)case 1: fexp(x); break;case 2: flog10(x);break;case 3: flog(x);break;case 4: fsqrt(x);break;default: printf(Sorry, can t do for you!n); break;getch();float fexp(float x)float flog10(float x)float flog(float x)float fsqrt(float x)評注:注意到了嗎?這個程序不能通過編譯,錯誤的原因是“與fexp 聲明中的類型不匹配”等類的錯誤, 還記得我課堂上講了 3 個重要的概念,

15、它們分別是函數(shù)的定義 (目的是為了描 述具體的功能, 但不實現(xiàn))、函數(shù)的調(diào)用 (目的是實現(xiàn)函數(shù)所定義的功能) 和函數(shù)的聲明 (目 的是為了使一個存在的函數(shù)允許被調(diào)用, 原則上是不能違背先定義后使用的原則, 但當(dāng)被定 義的函數(shù)返回值為 int 類型時,被調(diào)用函數(shù)可以放在調(diào)用函數(shù)的后面而在調(diào)用之前缺省聲明, 這也就是第一步中程序能運行的原因) 。這個程序中,輔助函數(shù)的返回值類型均改為了 float 型,函數(shù)聲明就不可以再缺省,有 兩種方法可以處理好這一問題,一是將后面的幾個函數(shù)搬到main 函數(shù)的前面,編譯預(yù)處理命令的后面(自己試試吧) ;另一種辦法是在編譯預(yù)處理后面加函數(shù)的聲明語句,如下列程 序

16、所示:#include float fexp(float);/* 函數(shù)聲明 */float flog10(float);/* 函數(shù)聲明 */float flog(float);/* 函數(shù)聲明 */float fsqrt(float);/* 函數(shù)聲明 */void main()char i; float x; printf(enter x:); scanf(%f,&x); printf(1. To calculate e to the power xn); printf(2.To calculate logx to the base 10n); printf(3. To calculat

17、e lnx n); printf(4. To calculate square root ofxn); printf(n);printf(enter your choice:1/2/3/4);scanf(%1s,&i);switch(i)case 1: fexp(x); break; case 2: flog10(x);break; case 3: flog(x);break; case 4:fsqrt(x);break; default: printf(Sorry, can t do for you!n); break;getch();float fexp(float x)float

18、 flog10(float x)float flog(float x)float fsqrt(float x)評注:很神奇(這是編譯系統(tǒng)的功勞,你要記住喲) ,程序又能執(zhí)行了,跟( 1)一樣,可以走 遍所有的路徑了。( 3)下面我們試著將一些功能添加到函數(shù)中(當(dāng)然,如果你有能力,可以添加足夠復(fù) 雜的功能,這也是我之希望:例如,求素數(shù)、黑洞數(shù)、反素數(shù)可逐一添加到你的程序中, 你想要某一模塊干啥就去干啥) :#include float fexp(float);/* 函數(shù)聲明*/float flog10(float);/* 函數(shù)聲明 */float flog(float);/* 函數(shù)聲明 */fl

19、oat fsqrt(float);/* 函數(shù)聲明 */void main()char i;float x;printf(enter x:);scanf(%f,&x);printf(1. To calculate e to the power xn);printf(2. To calculate logx to the base 10n);printf(3. To calculate lnx n);printf(4. To calculate square root of xn);printf(n);printf(enter your choice:1/2/3/4);scanf(%1s,

20、&i);switch(i)case 1: fexp(x); break;case 2: flog10(x);break;case 3: flog(x);break;case 4: fsqrt(x);break;default: printf(Sorry, can t do for you!n); break;getch();float fexp(float x)printf(exp(%f)=%en,x,exp(x); /*exp(x) 表示求 ex*/float flog10(float x)printf(log10(%f)=%en,x,log10(x); /*log10(x) 表示求

21、 log10 x */float flog(float x)printf(log(%f)=%en,x,log(x);/* log10(x) 表示求 logex */float fsqrt(float x)printf(sqrt(%f)=%en,x,sqrt(x);評注:注意上列源程序中的注釋喲, 幫助你了解更多的數(shù)學(xué)庫函數(shù)。 調(diào)試上述程序輸入測試數(shù) 據(jù)(x 為 0,選擇做操作 1),這是什么結(jié)果?這 2 個測試數(shù)據(jù)輸入,應(yīng)該求的是e 啊,e 的值誰都知道啊,怎么就不是這個值呢?這一點,我想請你自己想辦法了11水仙花數(shù)是指一個 3 位數(shù),其各位數(shù)字的立方和等于該數(shù)本身 。完善函數(shù) int daf

22、fodil(intn),其功能是判斷整數(shù) n 是否為水仙花數(shù),如是,則該函數(shù)返回值1,否則返回值0。#includeint daffodil(int n)int i,k,j;i=n/100;k=n/10%10;j=n%10;if(n=i*i*i+k*k*k+j*j*j)return 1;elsereturn 0;main() int m,i=0;for(m=100;m1000;m+)if(daffodil(m)=1) printf(%5d,m);i+;if(i%5=0)printf(n);getch();12.設(shè) no是一個給定的正整數(shù)。對于 i=0 , 1, 2,,定義:若口是偶數(shù),則 ni

23、+i= ni/2 ;若ni是奇數(shù),則 ni+i=3ni+1 ;若 ni是 1,則序列結(jié)束。用這種方法產(chǎn)生的數(shù)稱為冰雹數(shù)。請編 寫一個函數(shù) voidhailstones(int n),其功能是顯示由 n 產(chǎn)生的所要求的序列,按每行 6 個數(shù)輸 出該數(shù)列中的所有數(shù)。編寫main 函數(shù),在 main 函數(shù)中定義一個整型變量n,從鍵盤上輸入值 77 賦給 n,用 n 作為實參調(diào)用函數(shù) hailstones。測試數(shù)據(jù):77 /輸出結(jié)果:Hailstonesgeneratedby77:7723211658298844221134175226134020105168421Number of hailston

24、es generated:23#include int i=0;void hailstones(int n)while(n!=1)if(i%6=0)printf(n);printf(%5d,n);if(n%2=0)n=n/2;elsen=3*n+1;i+;printf(%5d,n);i+;main()int n;scanf(%d,&n);printf(Hailstones generated by %dn,n);hailstones(n); printf(nNumber of hailstones generated:%d,i);13. 從鍵盤上輸入一個正整數(shù)x,判斷 x 是否為質(zhì)數(shù),

25、如果是則輸出“TURE”,否則輸出“ FALSE ”。#include#includemain()int x,k,i;scanf(%d,&x);for(i=2;ik)printf(TRUE);elseprintf(FALSE);14. 請按要求編寫程序。編程要求:(1)編寫函數(shù) int twinborn(int m,int n) ,其功能是判斷整數(shù) m 和 n 是否為孿生質(zhì)數(shù)對(相差為2 的兩個質(zhì)數(shù)稱為孿生質(zhì)數(shù)),如是,則函數(shù)返回值1,否則返回值0。(2)編寫 main 函數(shù),求出 10,99內(nèi)的所有孿生質(zhì)數(shù)對,使得程序的運行結(jié)果為:11, 1317, 1929, 3141, 4359

26、, 6171, 73#include #include int prime(int m)int n;for(n=2;n=sqrt(m);n+) if(m%n=0) return 0;return 1;int twinborn(int m,int n) if(prime(m)+prime(n)=2)return 1;elsereturn 0;main()int m,n;for(n=10;n=97;n+) m=n+2;if(twinborn(m,n)=1)printf(%5d,%5dn,n,m);有孿生質(zhì)數(shù)對(相差為 2 的兩個質(zhì)數(shù)稱為孿生質(zhì)數(shù)) ,并依次將每對孿生質(zhì)數(shù)寫到 a 指向的 二維數(shù)組的

27、每一行中。編寫main 函數(shù),聲明一個 100X2 的二維數(shù)組 a,并從鍵盤上輸入 m和 n 的值,用 a、m n 作為實在參數(shù)調(diào)用函數(shù)twinborn,將結(jié)果數(shù)組以行為單位輸出至屏幕。例如,測試數(shù)據(jù)和運行結(jié)果如下:input two numbers:10 10029, 3153.請編寫函數(shù) int twinborn(int a2,int m,int n),其功能是找出 m,n 中的所11,17,131941, 4359, 6171, 73#include#includeint prime(int i)int k;for(k=2;ksqrt(i);k+)if(i%k=0)return 0;re

28、turn 1;int twinborn(int a2,int m,int n) int k=0,i;for(i=m ;i=n-2 ;i+=1) if(prime(i)&prime(i+2) ak0=i,ak1=i+2,k+;return k;main() int a1002,m,n,i;printf(input two numbers:); scanf(%d%d,&m,&n);m=twinborn(a,m,n);for(i=0;i=6) ,然后驗證 6 到 n 之間的所有偶數(shù)都可以 分解為兩個質(zhì)數(shù)之和 。但程序有些錯誤,請改正這些錯誤以達到要求的功能。【含有錯誤的源程序

29、】#include stdio.hvoid main()int k,j,n,limit;doprintf(Input a number=6:);scanf(%d,&limit);while(limit6);for(n=6;n=limit;n+=2) for(k=3;k=n/2;k+=2) if(prime(k) j=n-k;if(prime(j) printf(%d=%d+%dn,n,k,j); continue; int prime(int m)int g,h; h=sqrt(m);for(g=2;g=h;g+)if(m%g=0) return 0;else return 1;#in

30、clude stdio.h #include void main() int k,j,n,limit;doprintf(Input a number=6:);scanf(%d,&limit); while(limit6) ;for(n=6;n=limit;n+=2)for(k=3;k=n/2;k+=2) if(prime(k) j=n-k;if(prime(j) printf(%d=%d+%dn,n,k,j);continue;getch();int prime(int m)int g,h; h=sqrt(m); for(g=2;g=h;g+) if(m%g=0) return 0;r

31、eturn 1;16.請編寫程序,找出滿足如下條件的整數(shù)m:該數(shù)在11,999之內(nèi);(2) m、m2、m323均為回文數(shù)。例如 m=11,m2=121,m3=1331 ,11、121、1331 皆為回文數(shù),故 m=11 是滿足 條件的一個數(shù)。請設(shè)計函數(shù) int value(long m) ,其功能是判斷 m 是否是回文數(shù),如是,該函 數(shù)返回值 1,否則返回值 0。編寫 main 函數(shù),求出 11, 999 內(nèi)滿足條件的所有整數(shù)。#include int value(long m);void main()long m,n;for(n=11;n=999;n+)m=n;if(value(m)m=n*

32、n;if(value(m)m=n*n*n;if(value(m)printf(%ldn,n);getch();int value(long m) long a=0,b;b=m;while(m)a=a*10+m%10;m=m/10;if(a=b)return 1;return 0;54. 請編寫函數(shù) int palindrome(long *a,long m,long n) ,其功能是找出 m,n 內(nèi)的所有回文 數(shù)(回文數(shù):順讀倒讀其值都相同的數(shù),例如12321),函數(shù)返回 m,n 內(nèi)回文數(shù)的個數(shù)。編寫 main 函數(shù),聲明一個長度為1000 的長整型數(shù)組 a,從鍵盤輸入長整型數(shù)m 和 n,用

33、a、m、n 作為實在參數(shù)調(diào)用函數(shù)palindrome,將結(jié)果數(shù)組輸出至屏幕,并輸出符合條件數(shù)的個。例如,若m=100n= 500,則輸出結(jié)果為101111121131141151161171181191202212222232242252262272282292303313323333343353363373383393404414424434444454 464 474 484 494 count=40#includeint palindrome(long *a,long m,long n)long x,y,i=0,k;for(x=m;x=n;x+)k=0; y=x;while(y) k=k

34、*10+y%10;y=y/10; if(k=x)ai+=x;return i;main()long a1000,m,n,i,count; printf(input m&n);scanf(%ld %ld,&m,&n);count=palindrome(a,m,n); for(i=0;icount;i+)printf(%5d,ai);if(i+1)%5=0) printf(n);printf(count=%ld,count);getch();17. 請按要求編寫程序。編程要求:(1) 編寫函數(shù) long Fibonacci(int n) ,其功能是:求 Fibonacci

35、數(shù)列中大于 t 的最小的一個數(shù), 函數(shù)返回該數(shù)。下列數(shù)列為Fib on acci 數(shù)列:1,1,2,3,5,8,13,21,,即從第 3 項開始,每一項均為前兩項的和。編寫 main 函數(shù),從鍵盤上輸入一個整數(shù)t,用 t 作為實在參數(shù)調(diào)用Fib on acci 函數(shù),并輸出調(diào)用結(jié)果。例如,當(dāng) t=1000 時,輸出為 1597。#includelong Fibonacci(long int n);main()Io ng int n;scan f(%ld,&n);Fib on acc i(n);getch();long Fib on acci( long int n) long int

36、x=1,y=0;while(x=n)x=x+y;y=x-y ;prin tf(%ld,x);例如,若形參 e 的值為 1e-3,則函數(shù)返回值為 0.551690。請在下畫線處填入正確的內(nèi)容并將 下畫線刪除,使程序得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)#in cludedouble fun( doublee) int i, k;double s, t, x;s=0;k=1;i=2;x=3,0/4;while( xe ) s=s+k*x;k=-k;t=2*i;x=(t+1.0)/(t*t);i+;return s;main () double e=1e-3;prin tf(nT

37、he result is:%fn,fu n(e);getch() 18.下列給定程序中,函數(shù)fun 的功能是:計算如下公式22I2(2漢n+1 )2士小(2漢n)直到/乞10,并且把計算結(jié)果作為函數(shù)值返回。#i nclude double fun( double e) int i, k; double s, t, x;s=0;k=1;i=2;x=_1_/4;while( _2_ ) s=s+k*x;k=-k;t=2*i; x=_3_/(t*t);i+;return s;main () double e=1e-3;prin tf(nThe result is: %fn ,fun(e);佃.下列給

38、定程序中,函數(shù) fun 的功能是:將形參 n 中,各位上為偶數(shù)的數(shù)取出,并按原來 從高位到低位相反的順序組成一個新數(shù),作為函數(shù)值返回。例如,輸入一個整數(shù) 27638496,函數(shù)返回值為 64862。#include#includeunsigned long fun(unsigned n);main()unsigned long n;fun(n);getch();unsigned long fun(unsigned n) int b;unsigned long a;a=0;printf(Enter an integer:); scanf(%ld,&n);while(n%10!=0) b=

39、n%10;if(b%2=0) a=a*10+b;n=n/10;printf(%ld,a);getch();20.請編寫程序求出從鍵盤上輸入的兩個正整數(shù)a 和 b 的最大公約數(shù)和最小公倍數(shù)。#includemain()int p,r,n,m,temp; scanf(%d,%d,&n,&m);if(nm)temp=n;n=m;m=temp; p=n*m;while(m) r=n%m;n=m;m=r; printf(%d,%dn, n,p/n);-5要求:先求出前 2n 項的n值,再求出 2n+2 項的n值,直至兩者之差小于10 為止。#in clude21.請編寫程序利用下列公式為

40、公式求n的近似值。公式為:數(shù)是指正讀和倒讀相同的數(shù)。例如,1234 和 4321 互為反序數(shù))main ()int n;float a,b;a=1,b=4.0/3;n=1;while(b-a= 1e-5)a=b;n+;b=b*4* n*n/(2* n-1)/(2* n+1);prin tf(%12f%12f,2*a,2*b);getch();22.請編寫程序計算1! +2 ! +3! +n !的前 10 項之和。#in cludemain ()int n,i;long s,t;s=0, t=1;prin tf(i nput n=”);scan f(%d,&n);for(i=1;i=n

41、;i+)t=i*t;s=s+t;prin tf(sum=%ldn,s);getch();23.請編寫程序求出滿足如下條件的一個四位整數(shù),它的9 倍恰好是其反序數(shù)(所謂反序#includemain()int i,j,a;for(i=1001;i10000;i+)a=i;j=0;while(a)j=j*10+a%10; a=a/10;if(j=i*9) printf(%d,i);getch();24.請編寫程序求出滿足如下條件的四位數(shù)n:(1) n 的范圍為 5000,8000 ;(2)n 千位上的數(shù)減百位上的數(shù)減十位上的數(shù)減個位上的數(shù)大于零。編程要求:以每行10 個輸出滿足條件的數(shù)及該類數(shù)的個數(shù)

42、。#includemain()int n,a,b,c,d,s,i=0;for(n=5000;n0)i+;printf(%dt,n);if(i%10=0)printf(n);printf(sum=%d,i);getch();25. 用牛頓迭代法求方程 3x3-3x2+x-1=0 在 x0=2 附近的實根。要求:(1) 用函數(shù) float newtoon(float x) 求方程在 x 附近的根;(2) 用函數(shù) float F(float x) 求 x 處的函數(shù)值,用函數(shù) float F1(float x) 求 f(x) 在 x 處的導(dǎo)數(shù);(3)在主函數(shù)中輸入 xO,調(diào)用函數(shù)求得方程的近似根(精度

43、要求為10-5),并輸出結(jié)果。請完善下列程序, 使之完成上述功能。 并請以注釋的方式在程序的最后給出你在運行該 程序時所選用的測試數(shù)據(jù)及在該測試數(shù)據(jù)下的運行結(jié)果。【源程序】#include #include #include float F(float x)return 3*x*x*x-3*x*x+x-1;float F1(float x)return _;float newtoon(float x)float f,f1,xO; do _ ;f=F(xO); f1=F1(xO); x=;while(_ );return x;void main()float xO; scanf(%f ,&

44、;xO);printf(The result =%.2fn ,);測試數(shù)據(jù):2 /運行結(jié)果: The result =1.OO26.請設(shè)計程序,用牛頓迭代法求f(x)=cos(x)-x#include #include float F(float x)return 3*x*x*x-3*x*x+x-1;float F1(float x)return 9*x*x-6*x+1;float newtoon(float x)float f,f1,xO; do xO=x;f=F(xO); f1=F1(xO);x=xO-f/f1;while( fabs(x-xO)1e-5); return x;void m

45、ain()float xO;scanf(%f,&xO); printf(The result=% .2fn,newtoon(xO); getch();的近似根,要求精確到1O-6。#include float F(float x)return cos(x)-x;float F1(float x)return -sin(x)-1;float newtoon(float x)float f,f1,x0;do x0=x;f=F(x0);f1=F1(x0);x=x0-f/f1; while(fabs(x-x0)1e-6);return x;void main()float x0;scanf(%

46、f,&x0);printf(The result =%.2fn ,newtoon(x0);getch();27.已知 f(x)=lnx+x2在 (1/e, 1)內(nèi)有唯一的一個實根。請設(shè)計程序,用二分法求該近似實 根。精確到 |f(x)|0.0001 為止。#include#includefloat F(float x)return log(x)+x*x;main() float m,n,l,a,b,c,x;a=exp(-1) ;b=1;m=F(a);n=F(b);do c=(a+b)/2 ;l=F(c);if(m*l=0.0001);x=c;printf(%fn,x);getch();

47、28.請設(shè)計程序,用弦截法求程 2x3-4x2+3x-6=0 在 (0,3)內(nèi)的近似根,直到 |f(x)|0.0001 為 止。#include #include float F(float x)return 2*x*x*x-4*x*x+3*x-6;main()float a=0,b=3,m,n,l,x;m=F(a);n=F(b);do x=(a*n-b*m)/(n-m);l=F(x);if(l*m0)a=x;if(l*n0)b=x;while(fabs(l)=1e-4);printf(%fn,x);getch();29.請編輯調(diào)試下列程序, 觀察其運行結(jié)果, 理解數(shù)組名作為函數(shù)參數(shù)時的作用

48、,并描述程 序?qū)嶒灥墓δ??!驹闯绦颉?include int fun(int a,int b)int i,j=0;for(i=0;ai;i+) if(i%2=0)continue ;if(ai10)bj+=ai;return j;void main()int a10=3,15,32,23,11,4,5,9,b10;int i,x;x=fun(a,b) ;for(i=0;ix;i+)printf(%dt,bi);printf(n%d,x);30.以下程序的功能是從鍵盤上輸入 10 個整數(shù),并檢測整數(shù) 3 是否包含在這些數(shù)據(jù)中, 若包含 3,則顯示出 第一個 3 出現(xiàn)的位置,程序有些錯誤,試改正之

49、。#includevoid main()【源程序】#include void main()int data10;j=0;while (j10) scanf(%d,dataj); j+;for(j=0;j10;j+) if(dataj=3) printf(3 is in the position of %dn,j); continue;if(j=10)printf(not found!n );31.用以下公式求數(shù)列aO, al,,a19a0= 0;a1= 1;a2= 1;ai = a i-3+ 2ai-2+ ai-1 當(dāng) i 大于 2 時#include void main()int data1

50、0,j;j=0;while (j10) scanf(%d,&dataj);j+;for(j=0;j10;j+) if(dataj=3) printf(3 is in the position of %dn ,j+1);break;if(j=10)printf(not found!n );getch();long int a20;int i; for(i=0;i2)ai=ai-3+2*ai-2+ai-1;printf(a%d=%ldn,i,ai);32.請按下列要求編寫程序:(1)編寫函數(shù) float fun(int x,int n) ,其功能是求出 x 指向的長度為 n 的數(shù)組中各元素

51、的平 均值,函數(shù)返回該平均值;編寫 main 函數(shù),聲明一個長度為10 的整型數(shù)組 a,并將 220 之間的偶數(shù)依次存入 a數(shù)組,調(diào)用 fun 函數(shù),輸出調(diào)用的結(jié)果。#include float fun(int x,int n)int i;float s=0;for(i=0;in;i+)s=s+xi;s=s/n;return s;main()int x10=2,4,6,8,10,12,14,16,18,20;float s;s=fun(x,10);printf(%fn,s);getch();33.請編寫 sort 函數(shù),用簡單選擇排序算法對待排序數(shù)據(jù)進行排序。編寫 main 函數(shù),聲 明一個一

52、維數(shù)組并用如下測試數(shù)據(jù)對其初始化,調(diào)用sort函數(shù)實現(xiàn)將數(shù)組中的第 3 至 8 個元素按升序排序。測試數(shù)據(jù): 689 1216 -390-9101輸出結(jié)果: 68-9 -39 121690101 #include void sort(int a,int n)int i,j,k,t;for(i=0;in-1;i+)k=i;for(j=i+1;jaj)k=j;t=ai;ai=ak;ak=t;void main()int a10=6,8,9,12,16,-3,90,-9,10,1,i;sort(&a2,6);for(i=0;i10;i+)printf(%3d,ai);getch();34.整

53、數(shù) 145 有一個奇怪的特性:145=1!+4!+5!。編程要求 :(1 )編寫函數(shù) int facsum(long x),其功能是判斷長整型數(shù) x 是否具有上述特性,如具 有上述特性則返回值 1,否則返回值 0。(2)編寫 main(),在 12000000 內(nèi)尋找具有此特性的數(shù),并將滿足該特性的數(shù)輸出。#include long factorial(int n)int i; long s=1; for(i=1;i=n;i+) s=s*i;return s;int facsum(long x)int i,s=0,t,m;m=x; while(x)i=x%10;x=x/10;t=factori

54、al(i);s=s+t;if(m=s)return 1;elsereturn 0;main()long i;for(i=1;i=2000000;i+)if(facsum(i)=1)printf(%ldt,i);getch();35.如果不加任務(wù)限定條件,在學(xué)完數(shù)組后,你能否編寫一個程序,功能是任意從鍵盤上 輸入一個正整數(shù)( 132767),將其轉(zhuǎn)化為二進制數(shù)。#includevoid convert(int a);void main()int x;printf(input a number(1-32767):n);scanf(%d,&x);convert(x);void convert

55、(int a) int b16,i;for(i=0;i16;i+)bi=2;for(i=0;i=0;i- )if(bi=2)con ti nue;elseprin tf(%d,bi);prin tf(n);36.以下程序在 a 數(shù)組中從后往前查找第一個與x 值相同的元素的所在位置。請完善程序?!驹闯绦颉?7.請編輯調(diào)試下列程序,觀察其運行結(jié)果,理解數(shù)組的聲明、數(shù)組元素的引用等基本 概念。該程序的功能是 _將每列數(shù)由小到大排列_?!驹闯绦颉?in clude void mai n()int a33=3,8,12,4,7,10,2,5,11, i,j,k,t;for(j=0;j3;j+)for(k

56、=0;k2;k+) for(i=0;iai+1j) t=aij,aij=ai+1j,ai+1j=t;for(i=0;i3;i+)#in clude void mai n()int a11 ,x , i;prin tf(E nter 10 In tegers:n );for(i=1; i=10; i+) scanf(%d ,&ai);prin tf(E nter x: );sca nf(%d,& x);a0=_;i=10;while(x!=ai) _ ;if(_)prin tf(%5d s position is %4dn,x,i);elseprin tf(%d is not f

57、ou nd!n ,x);#in clude void mai n()int a11 ,x , i;prin tf(E nter 10 In tegers:n );for(i=1; i=10; i+)sca nf(%d,&ai); prin tf(E nter x:);scan f(%d,& x);a0=x;i=10;while(x!=ai)i-;if(i!=0)printf(%5d s position is %4dn ,x,i);elseprintf(%d is not found!n ,x); getch();#include38. 在 m 行 n 列的二維數(shù)組中找出最小值

58、的元素, 然后將該元素所在行與最后一行交換, 列交換。請按功能要求改正下列程序中的錯誤,并調(diào)試運行程序。將該元素所在列與最后一 【源程序】 #include #define M 3 #define N 4 main()intx,k,j,com,col,t; int#define M 3#define N 4main()int x,k,j,com,col,t;intaMN=12,1,56,34,10,2,45,3,9,7,4,65;for(k=0;kM;k+) for(j=0;jN;j+)printf( %3d,akj);printf(n);printf(n);x=a00; com=0; col

59、=0;for(k=0;kM;k+)for(j=k+1;jakj) com=k; col=j; x=akj;for(k=0;kM;k+) t=akcol;akcol=akN-1;akN-1 =t;for(k=0;kN;k+) t=acomk;acomk=aM-1k;aM-1 k=t; for(k=0;kM;k+) for(j=0;jN;j+) printf(%3d,akj); printf(n);getch();for(j=0;j3;j+)printf(%3d,aij); printf(n);輸出結(jié)果:12156341024539746596547103452123456139.請編程序,打印以

60、下形式的楊輝三角形。1111211331146411 510105 1 #include stdio.hmain()int a66;int i,j;for(i=0;i6;i+) ai0=1; aii=1; for(i=1;i6;i+) for(j=1;ji;j+) aij=ai-1j-1+ai-1j;for(i=0;i6;i+) for(j=0;j=i;j+) printf(%5d,aij);printf(n);getch();40. 已知任何一個正整數(shù) n 的立方均可以表示成 n 個連續(xù)奇數(shù)之和。例如: 13=1 23=3+5 33=7+9+1134 =13+15+17+19試按下列要求編制程序:(1) 編寫函數(shù) void find_odd(int odd,int n),其功能是找到 n 個連續(xù)奇數(shù),滿足 n 的立方等于這些連續(xù)奇數(shù)之和,將這些奇數(shù)依次存放在數(shù)組odd 中。(2) 編寫 main 函數(shù),定義變量 n 和一維數(shù)組 a,從鍵盤上讀入 n 的值(本題測試數(shù)據(jù) n=14),用 a 和 n 作為實在參數(shù)調(diào)用函數(shù)find_odd,按如下格式將調(diào)用結(jié)果輸出到屏幕上:143=a1+a2+an,其中 al 表示最小奇數(shù),an

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論