數(shù)學(xué)問題-三級C語言_第1頁
數(shù)學(xué)問題-三級C語言_第2頁
數(shù)學(xué)問題-三級C語言_第3頁
數(shù)學(xué)問題-三級C語言_第4頁
數(shù)學(xué)問題-三級C語言_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、全國計(jì)算機(jī)等級考試(Windows 2000版) -三級c語言上機(jī)考試 第25次考試考前強(qiáng)化輔導(dǎo)2008年9月1數(shù)學(xué)問題題型:21.素?cái)?shù)問題 該類型的題大致分為5種,關(guān)鍵在于判斷一個(gè)數(shù)是素?cái)?shù),最好把這段代碼掌握,這樣,該類問題可迎刃而解。 在四位數(shù)問題中,也有一些題的條件是該數(shù)或新組成的數(shù)是否為素?cái)?shù),這些題一般提供了判斷素?cái)?shù)的函數(shù),可直接使用,不需自己編寫素?cái)?shù)的判斷代碼。3題型(1) 程序PROG1.C的功能是: 計(jì)算500800區(qū)間內(nèi)素?cái)?shù)的個(gè)數(shù)cnt,并按所求素?cái)?shù)的值從大到小的順序, 再計(jì)算其間隔減、加之和,即第1個(gè)素?cái)?shù)-第2個(gè)素?cái)?shù)+第3個(gè)素?cái)?shù)-第4個(gè)素?cái)?shù)+第5個(gè)素?cái)?shù) . 的值sum。請編寫

2、函數(shù)countValue( )實(shí)現(xiàn)程序的要求,最后main()函數(shù)調(diào)用函數(shù)writeDAT()把結(jié)果cnt和sum輸出到文件OUT.DAT中。 注意: 部分源程序存放在PROG1.C中。請勿改動主函數(shù)main( )和輸出數(shù)據(jù)函數(shù)writeDAT()的內(nèi)容。 4答案#include int cnt,sum; void countValue() int i,j,k=1; for(i=800;i=500;i-) for(j=2;j=i) cnt+; sum+=k*i; k=-1*k; void main()5分析 本題要求從大到小的順序進(jìn)行加減運(yùn)算,因此這里采用從800開始循環(huán)到500這樣就能保證出

3、來的素?cái)?shù)就是從大到小,內(nèi)嵌的for()再加上if()是用來判斷是否為素?cái)?shù)。其中k用來控制加減運(yùn)算。結(jié)果out.dat:44130 6題型(2) 實(shí)現(xiàn)功能是:找出所有100以內(nèi)(含100)滿足I,I+4,I+10都是素?cái)?shù)的整數(shù)I(I+10也在100以內(nèi))的個(gè)數(shù)cnt以及這些I之和sum。請編寫函數(shù)countValue()實(shí)現(xiàn)程序要求,最后調(diào)用函數(shù)writeDat()把結(jié)果cnt和sum輸出到文件out.dat中。7源程序#includeint cnt,sum;int isPrime(int number) int i,tag=1; for(i=2;tag & i=number / 2; i+)

4、if(number % i =0) tag =0; return tag;void countValue()void main()8答案void countvalue() int i,j; for(i=3;i=90;i+) if(isprime(i)&isprime(i+4)&isprime(i+10) cnt+; sum+=i; 9分析 該題是較簡單的編程題之一,只要注意在for()循環(huán)中i不能大于90(由于要求I+10也要100內(nèi))即可。同時(shí),還需注意土題目中已經(jīng)編寫了判斷素?cái)?shù)的函數(shù)isprime,可直接調(diào)用該函數(shù)來判斷是否為素?cái)?shù)。結(jié)果:7 201 10題型(3)請編寫一個(gè)函數(shù)jsValu

5、e(int m,int k,int xx),該函數(shù)的功能是:將大于整數(shù)m且緊靠m的k個(gè)素?cái)?shù)存入數(shù)組xx傳回。最后調(diào)用函數(shù)writeDat()讀取10組數(shù)據(jù),分別得出結(jié)果且把結(jié)果輸出到文件out.dat中。例如:若輸入17,5,則應(yīng)輸出:19,23,29,31,37。請勿改動主函數(shù)main()和寫函數(shù)writeDat()的內(nèi)容。11源程序#includevoid jsValue(int m,int k,int xx)main() int m,n,zz100; prinf(“n請輸入兩個(gè)整數(shù):”); scanf(%d%d,&m,&n); jsValue(m,n,zz); for(m=0;mn;m+

6、)printf(%d ,zzm); printf(n); writeDat();wtiteDat() int m,n,zz100,i; FILE *.in,*out; in=fopen(in.dat,r); out=fopen(out.dat,w); for(i=0;i10;i+) fscanf(in,%d %d,&m,&n); jsValue(m,n,zz); for(m=0;m0;i+) for(j=2;ji;j+) if(i%j=0) break; /*注:素?cái)?shù)為只能被自己和1整除的數(shù).如果i%j 等于0,說明i不是素?cái)?shù),跳出本層循環(huán)*/ if(i=j) xxs+=i;k-; 13下列程

7、序的功能是:選取出100以上1000以內(nèi)所有個(gè)位數(shù)字與十位數(shù)字之和被10除所得余數(shù)恰是百位數(shù)字的素?cái)?shù)(如293)。計(jì)算并輸出上述這些素?cái)?shù)的個(gè)數(shù)CNT以及這些素?cái)?shù)值的和SUM。請編寫函數(shù)COUNTVALUE()實(shí)現(xiàn)程序要求,最后調(diào)用函數(shù)WRITEDAT()把結(jié)果CNT和SUM輸出到文件OUT.DAT中.題型(4)14void countvalue() int i,j; for(i=100;i1000;i+) for(j=2;ji;j+) if(i%j=0) break; if(j=i&(i%10+i/10%10)%10=i/100) cnt+; sum+=i; 答案運(yùn)行結(jié)果: 15 682515

8、2.6/9問題 該類型的題目只有這一個(gè)題。較為簡單。原題: 程序PROG1.C的功能是:計(jì)算出自然數(shù)SIX和NINE滿足條件SIX + SIX + SIX = NINE + NINE的個(gè)數(shù)cnt,以及滿足此條件所有的SIX與NINE的和SUM。請編寫函數(shù)countValue()實(shí)現(xiàn)程序的要求, 最后main()函數(shù)調(diào)用函數(shù)writeDAT()把結(jié)果cnt和sum輸出到文件OUT.DAT中。 其中的S,I,X,N,E各代表一個(gè)十進(jìn)制數(shù)字,允許代表的數(shù)字相同, 但S和N不能為0。例如:944 + 944 + 944 = 1416 + 1416 注意: 部分源程序存放在PROG1.C中。 16答案#

9、include long cnt,sum; void countValue() int i; printf(“n”); for(i=666;i=999;i=i+2) if(i%100/10=(3*i/2)%1000/100)&(3*i/2)/1000 =(3*i/2)%100/10) cnt+; sum+=i+3*i/2; void main()17分析 由于有SIX+SIX+SIX=NINE+NINE可看出SIX的3倍必須大于等于2000(右邊是一個(gè)四位數(shù)字的數(shù)可知),因此從666開始循環(huán),再由三個(gè)數(shù)的和是個(gè)偶數(shù)(右邊為一個(gè)數(shù)的2倍可知)可循環(huán)時(shí)步長為2。再由SIX和NINE中有一個(gè)共同數(shù)字

10、I所以得出第一個(gè)if()判斷,還有NINE中有一共同數(shù)字N所以得出第二個(gè)if()判斷。 該題結(jié)果: 4 9430 183.完全平方數(shù)問題 程序PROG1.C的功能是: 在三位整數(shù)(100至999)中尋找符合下面條件的整數(shù),并依次從小到大存入數(shù)組b中。條件如下:某數(shù)既是完全平方數(shù),又有兩位數(shù)字相同, 例如144、676等。 請考生編制函數(shù)int jsValue(int bb)實(shí)現(xiàn)此功能, 滿足該條件的整數(shù)的個(gè)數(shù)通過所編制的函數(shù)返回。最后調(diào)用函數(shù)writeDat( )把結(jié)果輸出到文件out.dat中。 注意: 部分源程序存放在PROG1.C中。請勿改動主函數(shù)main()和寫函數(shù)writeDat()

11、的內(nèi)容。 19答案int jsvalue(int bb) int i,j,k=0,g,s,b,temp=0; for(i=100;i=999;i+) g=i%10; s=i/10%10; b=i/100; temp=(int)sqrt(i); if(i= temp * temp)&(g=s|s=b|b=g) bbk+=i; return k;20分析 注:注意在i=(int)sqrt(i)*(int)sqrt(i)中只有當(dāng)i是完全平方數(shù)時(shí)開平方后再取整才不會丟失任何數(shù)據(jù)。 原型:float sqrt(float x); 用法:#include 功能:計(jì)算x的平方根。 說明:x應(yīng)大于等于零。 結(jié)

12、果:9 100 121 144 225 400 441 484 676 900214.回文數(shù)問題 程序PROG1.C的功能是: 尋找并輸出11至999之間的數(shù)m, 它滿足m、m*m和m*m*m均為回文數(shù)。所謂回文數(shù)是指其各位數(shù)字左右對稱的整數(shù),例如121,676,94249等。滿足上述條件的數(shù)如m=11,m*m=121,m*m*m=1331皆為回文數(shù)。請考生編制函數(shù)int jsValue(long m)實(shí)現(xiàn)此功能, 如果是回文數(shù), 則函數(shù)返回1, 反之則返回0。最后把結(jié)果輸出到文件out.dat中。 22答案int jsValue(long n)int i=0;int j=0;int aa10

13、=0;int b=1; while(n) aaj+=n%10; n=n/10; for(i=0;ij/2;i+) if(aai!=aaj-i-1) b=0; return (b); 23分析結(jié)果out.dat:m= 11,m*m= 121,m*m*m= 1331m= 101,m*m= 10201,m*m*m= 1030301m= 111,m*m= 12321,m*m*m= 1367631 245.平方根問題 請編寫函數(shù)countValue(int n),它的功能是:求n以內(nèi)(不包括n)同時(shí)能被3與7整除的所有自然數(shù)之和的平方根s,s作為函數(shù)返回值,最后結(jié)果s輸出到文件out.dat中。 例如若

14、n為1000時(shí),函數(shù)值應(yīng)為:s = 153.909064。 注意: 部分源程序存放在PROG1.C中。 25答案double countValue(int n) int i=0; int sum=0; for(i=0; in; i+) if (i%21=0) sum+=i; s=sqrt(sum); return (s); 26分析結(jié)果:153.909064134.465609105.29957382.613558111.78103666.40783195.577194157.149610309.45112737.229021 276.Fibonacci數(shù)列問題 編寫函數(shù)jsValue, 它的

15、功能是: 求Fibonacci數(shù)列中大于t的最小的一個(gè)數(shù), 結(jié)果由函數(shù)返回。其中Fibonacci數(shù)列F(n)的定義為: F(0)=0,F(xiàn)(1)=1 F(n)=F(n-1)+F(n-2) (n2) 最后調(diào)用函數(shù)writeDat()讀取10個(gè)數(shù)據(jù)t, 分別得出結(jié)果且把結(jié)果輸出到文件out.dat中。 例如: 當(dāng)t = 1000時(shí), 函數(shù)值為: 1597。 28int jsValue(int t) int f0=0; int f1=1; int fn=1; while(fn=t) f0=f1; f1=fn; fn=f1+f0; return (fn); main()答案29結(jié)果結(jié)果out.dat:

16、15971442332339876109876102584377307.級數(shù)問題 某級數(shù)的前兩項(xiàng)A1=1,A2=1,以后各項(xiàng)具有如下關(guān)系: An=An-2+2An-1 下列程序的功能是:要求依次對于整數(shù)M=100,1000和10000求出對應(yīng)的n值,使其滿足:Sn=M,這里Sn=A1+A2+.+An, 并依次把n值存入數(shù)組單元b0,b1和b2中,請編制jsValue()函數(shù)來實(shí)現(xiàn)此功能, 最后調(diào)用函數(shù)writeDat()把數(shù)組b中的值輸出到out.dat文件中。 請勿改動主函數(shù)main()和寫函數(shù)writeDat()的內(nèi)容。 31答案 jsValue() int a1=1,a2=1,a12,s

17、n; int n=2; sn=a1+a2; while(1) a12=a1+2*a2; if(sn=100) b0=n; if(sn=1000) b1=n; if(sn=10000) b2=n;break; sn=sn+a12; a1=a2; a2=a12; n+; 32結(jié)果結(jié)果out.dat:6911 338.迭代方程問題 下列程序的功能是:利用以下所示的簡單迭代方法求方程:cos(x)-x=0的一個(gè)實(shí)根。xn+1=cos(xn)迭代步驟如下: (1)取X1初值為0.0; (2)X0=X1,把X1的值賦給X0; (3)X1=COS(X0),求出一個(gè)新的X1; (4)若X0-X1絕對值小0.0

18、00001,執(zhí)行步驟(5),否則執(zhí)行步驟(2); (5) 所求X1就是方程cos(X)-X=0的一個(gè)實(shí)根,作為函數(shù)值返回。 請編寫函數(shù)countvalue()實(shí)現(xiàn)程序的要求,最后調(diào)用函數(shù)RITEDAT()把結(jié)果輸出到文件OUT17.DAT中。34答案 float countValue() float x0=0.0, x1=0.0; while(1) x0=x1; x1=cos(x0); if(fabs(x0-x1)=0.000001); return (x1); 36分析 原型:float fabs(float x); 用法:#include 功能:求浮點(diǎn)數(shù)x的絕對值 說明:計(jì)算|x|, 當(dāng)x

19、不為負(fù)時(shí)返回x,否則返回-x 該迭代法的基本算法是:反復(fù)賦值直到x0-x1的絕對值小于0.00001。故而可用do-while循環(huán)。這是一個(gè)典型的算法 。379.解不定方程組 下列程序的功能是:設(shè)A,B,C為三個(gè)不零的正整數(shù),計(jì)算并輸出下列不定方程組解的個(gè)數(shù)CNT以及滿足此條件的所有A,B,C之和SUM。不定方程組為: A+B+C=13 A-C=5請編寫函數(shù)COUNTVALUE()實(shí)現(xiàn)程序要求,最后調(diào)用函數(shù)RITEDAT()把結(jié)果CNT和SUM輸出到文件OUT.DAT中。#include int cnt,sum; void countvalue()void main()38答案 void co

20、untvalue() int a=0; for(a=6;a0) cnt+;sum+=13; 注:由A-C=5對A+B+C=13進(jìn)行變換可得B=18-2*A,題中要求三個(gè)數(shù)都要大于0,所以A必須從6開始(為了保證C不小于等于0),進(jìn)而可得只要B大于0即可(即18-2*A0)。3910.整除及參數(shù)傳遞問題 請編寫函數(shù)void countValue(int *a,int *n),它的功能是: 求出1到1000之內(nèi)能被7或11整除但不能同時(shí)被7和11整除的所有整數(shù),其結(jié)果以從小到大的順序放在數(shù)組a中,并通過形式參數(shù)n傳遞這些數(shù)的個(gè)數(shù)。 注意: 部分源程序存在文件PROG1.C文件中。 40答案 voi

21、d countValue(int *a,int *n) int i=0; int cnt=0; for(i=1;i=1000;i+) if(i%7=0&i%11) *a=i; cnt=cnt+1; a+; else if(i%7&i%11=0) *a=i; cnt=cnt+1; a+; *n=cnt;41運(yùn)行結(jié)果 7 11 14 21 22 28 33 35 42 44 49 55 56 63 66 70 84 88 91 98 99 105 110 112 119 121 126 132 133 140 143 147 161 165 168 175 176 182 187 189 196

22、198 203 209 210 217 220 224 238 242 245 252 253 259 264 266 273 275 280 286 287 294 297 301 315 319 322 329 330 336 341 343 350 352 357 363 364 371 374 378 392 396 399 406 407 413 418 420 427 429 434 440 441 448 451 455 469 473 476 483 484 490 495 497 504 506 511 517 518 525 528 532 546 550 553 560

23、561 567 572 574 581 583 588 594 595 602 605 609 623 627 630 637 638 644 649 651 658 660 665 671 672 679 682 686 700 704 707 714 715 721 726 728 735 737 742 748 749 756 759 763 777 781 784 791 792 798 803 805 812 814 819 825 826 833 836 840 854 858 861 868 869 875 880 882 889 891 896 902 903 910 913

24、917 931 935 938 945 946 952 957 959 966 968 973 979 980 987 990 9944211.求方差問題 請編制函數(shù)ReadDat( )實(shí)現(xiàn)從文件IN.DAT中讀取1000個(gè)十進(jìn)制整數(shù)到數(shù)組xx中; 請編制函數(shù)Compute( )分別計(jì)算出xx中偶數(shù)的個(gè)數(shù)even, 奇數(shù)的平均值ave1, 偶數(shù)的平均值ave2以及所有偶數(shù)的方差totfc的值, 最后調(diào)用函數(shù)WriteDat()把結(jié)果輸出到OUT.DAT文件中。 計(jì)算方差的公式如下: 1 N-1 totfc = (xxi - ave2) *(xxi - ave2) N i=0 設(shè)N為偶數(shù)的個(gè)數(shù),

25、 xxi為偶數(shù), ave2為偶數(shù)的平均值。 原始數(shù)據(jù)文件存放的格式是: 每行存放10個(gè)數(shù), 并用逗號隔開。(每個(gè)數(shù)均大于0且小于等于2000) 注意: 部分源程序存放在PROG1.C中。 請勿改動主函數(shù)main()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。 43#include #include #define MAX 1000int xxMAX, odd=0,even=0;double ave1=0.0,ave2=0.0,totfc=0.0;void WriteDat(void);int ReadDat(viod)FILE *fp;if(fp=fopen(IN.DAT , r)=NULL) return 1;fclose(fp);return 0;void Compute(void)void main()源程序44答案 答案分為兩部分,一部分補(bǔ)齊ReadDat函數(shù)中的代碼,另一部分完成題目要求算法。int ReadDat(void) FILE *fp ; int i; if(fp=fopen(in.dat,r)=NULL) return 1; f

溫馨提示

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

最新文檔

評論

0/150

提交評論