2012程序設(shè)計競賽基礎(chǔ)實訓(xùn)31_第1頁
2012程序設(shè)計競賽基礎(chǔ)實訓(xùn)31_第2頁
2012程序設(shè)計競賽基礎(chǔ)實訓(xùn)31_第3頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2012年程序設(shè)計(chénɡxùshèjì)競賽(jìngsài)基礎(chǔ)(jīchǔ)實訓(xùn)311統(tǒng)計(tǒngjì)試統(tǒng)計含有數(shù)字(shùzì)77整除的ms1s14s2。輸入m,輸出s1,s2。m=5,輸出:m=6,輸出:設(shè)計要點m-110mb=10^(m-1),為枚舉提供范圍t(b—10*b-1)。mt7mtd(以保持t不變),然后通過m次求余先后分離出tm個數(shù)字c,if(c==7)f++,t7的個數(shù)f。4g。f>0t7g=0t中不含數(shù)字4。mf>0&&t%7>0,s1f>0&&&&g==0,s2作相應(yīng)統(tǒng)計。(2) 程序設(shè)計//77m位整數(shù)的個數(shù)s14的個數(shù)s2#include<stdio.h>voidmain(){intc,f,g,i,j,m;longb,d,s1,s2,t;printf("請輸入位數(shù)m(2<=m<=9):"); b=1;s1=0;s2=0;for(i=2;i<=m;i++)b=b*10; //計算m位數(shù)的起點for(t=b;t<=10*b-1;t++) //枚舉每一個m位數(shù){d=t;f=0;g=0;for(j=1;j<=m;j++){c=d%10;d=d/10;if(c==7)f++;//7的個數(shù)if(c==4)g++;//4的個數(shù)}if(f>0&&t%7>0)s1++;//(shùzì)7且不7整除數(shù)的個數(shù)if(f>0&&t%7>0&&g==0)s2++;//統(tǒng)計(tǒngjì)其中不含數(shù)4的個數(shù)}printf(" s1=%ld,s2=%ld\n",s1,s2);}(3)程序運(yùn)行示例(shìlì)請輸入(shūrù)位數(shù)m(2<=k<=9):5s1=32152,s2=20412請輸入(shūrù)位數(shù)m(2<=k<=9):6s1=366522,s2=20830017且7整除的沒有重復(fù)數(shù)字的ms1,并指出其中最大的一個數(shù)。f數(shù)組,f[3]=22個數(shù)字“3”。#include<stdio.h>voidmain(){intc,e,g,i,j,m,f[10];longb,d,s1,t;printf("請輸入位數(shù)m(2<=m<=9):"); b=1;s1=0;for(i=2;i<=m;i++)b=b*10; //計算m位數(shù)的起點for(t=b;t<=10*b-1;t++) //枚舉每一個m位數(shù){d=t;for(j=0;j<=9;j++)f[j]=0;//數(shù)組清零for(j=1;j<=m;j++){c=d%10;d=d/10;f[c]++; //c的個數(shù)}for(g=0,j=0;j<=9;j++)if(f[j]>1)g=1; //存在重復(fù)數(shù)字標(biāo)注if(f[7]>0&&t%7==0&&g==0){s1++;e=t;} //統(tǒng)計個數(shù),并把滿足條件的數(shù)賦值給e}printf(" s1=%ld,e=%d\n",s1,e);}請輸入位數(shù)m(2<=m<=9):5s1=1978,e=98763請輸入位數(shù)m(2<=m<=9):6s1=11704,e=987651變通(biàntōng)2724且7整除(zhěngchú)的m(m>3)位整數(shù)的個數(shù)s1,并指其(qízhōng)從小到大排序n個數(shù)。#include<stdio.h>voidmain(){intc,e,i,j,m,n,f[10];longb,d,s1,t;printf("請輸(shūrù)m,n:"); b=1;s1=0;for(i=2;i<=m;i++)b=b*10; //(jìsuàn)m位數(shù)的起點for(t=b;t<=10*b-1;t++) //枚舉每一個m位數(shù){d=t;for(j=0;j<=9;j++)f[j]=0;//數(shù)組清零for(j=1;j<=m;j++){c=d%10;d=d/10;f[c]++; //c的個數(shù)}if(f[7]==1&&f[4]==2&&t%7==0){s1++;if(s1==n)e=t; //,n個數(shù)賦值給e}}printf(" s1=%ld,e=%d\n",s1,e);}請輸入m,n:6,1000s1=4096,e=417242真分?jǐn)?shù)最值統(tǒng)計分母在指定區(qū)間[a,b]的最簡真分?jǐn)?shù)(分子小于分母,且分子分母無公因數(shù))共有多少個,并求其中最接近指定分?jǐn)?shù)x/y的最簡真分?jǐn)?shù)。a,b,[a,b417/2011真分?jǐn)?shù)。測試數(shù)據(jù):a=10,b=99,輸出:a=100,b=999,輸出:(1)設(shè)計要點設(shè)計求解一般情形:統(tǒng)計分母在指定區(qū)間[a,b]的最簡真分?jǐn)?shù)的個數(shù),并求這些最簡真分?jǐn)?shù)的和(正整數(shù)a,b從鍵盤輸入)。ijns在指定范圍(fànwéi)[a,bj:a——b;同時對每一個分母j枚舉(méijǔ)分子i:1——j-1。對每一分?jǐn)?shù)i/j,置標(biāo)志(biāozhì)t=0,然后進(jìn)行是否存在公因數(shù)的檢測。ij1ui/jukěnéng)不在[a,b[a,b]時前面已作了統(tǒng)計求和。u[2,i],因而設(shè)置(shèzhì)u[2,i枚舉,若滿足條件j%u==0&&i%u==0說明分子分母存在公因數(shù),標(biāo)記t=1后退出,不予統(tǒng)計與求和。t=0,說明分子分母無公因數(shù),用nn=n+1個數(shù)。為了求最接近s=x/y的最簡真分?jǐn)?shù),設(shè)雙精度型變量smin存儲|i/j-x/y|的最小值,把分?jǐn)?shù)i/jdoublessmin較,若fabs((double)i/j-s)<sminfabs((double)i/j-s)賦值給smini1ij1j。i/jsmini1/j1x/y求最簡真分?jǐn)?shù)程序設(shè)計//[a,bx/y#include<stdio.h>#include<math.h>voidmain(){inta,b,i,j,i1,j1,t,u,x,y;longn;doubles,smin;printf("最簡真分?jǐn)?shù)分母在[a,b]內(nèi),請確定a,b:");scanf("%d,%d",&a,&b); //printf("x/yx,y:scanf("%d,%d",&x,&y);n=0;s=(double)x/y;smin=10;for(j=a;j<=b;j++)////輸入指定分?jǐn)?shù)枚舉最簡真分?jǐn)?shù)的分母for(i=1;i<=j-1;i++)//枚舉最簡真分?jǐn)?shù)的分子{for(t=0,u=2;u<=i;u++)//枚舉因數(shù)if(j%u==0&&i%u==0){t=1;break;}//分子分母有公因數(shù),則舍去if(t==0){n++;//統(tǒng)計最簡真分?jǐn)?shù)個數(shù)if(fabs((double)i/j-s)<smin){smin=fabs((double)i/j-s);i1=i;j1=j;}//比較求最接近x/y的最簡真分?jǐn)?shù)}}printf("最簡真分?jǐn)?shù)個數(shù):%ld\n",n);printf("最接近%d/%d的最簡真分?jǐn)?shù)為:%d/%d\n",x,y,i1,j1);}程序運(yùn)行示例(shìlì)最簡真分?jǐn)?shù)分母(fēnmǔ)在[a,b]內(nèi),請確定a,b:10,99指定(zhǐdìng)分?jǐn)?shù)為x/y,請確定x,y:417,2011最簡真分?jǐn)?shù)個數(shù):2976(jiējìn)417/201117/82最簡真分?jǐn)?shù)分母(fēnmǔ)在[a,b]內(nèi),請確定a,b:100,999指定分?jǐn)?shù)為x/y,請確定x,y:417,2011最簡真分?jǐn)?shù)個數(shù):300788417/201162/299特定數(shù)字組成的平方數(shù)2,3,5,6,7,8,977b,7位數(shù)的平方根c.a枚舉[b,c]中的所有整數(shù),計算d=a*a,這樣確保所求平方數(shù)在d中。fd中各個數(shù)字的個數(shù)。如果f[3]=2d2個“3”。f[k]>1(k=0——9),說明d中存在有重復(fù)數(shù)字,返回。f[0]+f[1]+f[4]=07d中沒有數(shù)字“0”,“1”,“4”,d滿足題意要求,打印輸出。//7位平方數(shù)#include<math.h>#include<stdio.h>voidmain(){intk,m,n,t,f[10];longa,b,c,d,w;n=0;b=sqrt(2356789);c=sqrt(9876532);for(a=b;a<=c;a++){d=a*a;w=d; //d為平方數(shù)for(k=0;k<=9;k++)f[k]=0;while(w>0){m=w%10;f[m]++;w=w/10;}for(t=0,k=1;k<=9;k++)if(f[k]>1)t=1; //測試平方數(shù)是否有重復(fù)數(shù)字if(t==0&&f[0]+f[1]+f[4]==0)//0,1,4{n++;printf("%2d:",n);printf("%ld=%ld^2\n",d,a);}}printf("%d個沒有重復(fù)(chóngfù)7位平方數(shù).\n",n);}1:3297856=1816^22:3857296=1964^23:5827396=2414^24:6385729=2527^25:8567329=2927^26:9572836=3094^26個沒有(méiyǒu)7位平方數(shù).變通(biàntōng)1:用1,2,…,99(kěyǐ)組成多少個沒9位平方數(shù)?//組成沒有(méiyǒu)9位平方數(shù)#include<math.h>#include<stdio.h>voidmain(){intk,m,n,t,f[10];longa,b,c,d,w;n=0;b=(int)sqrt(123456789);c=(int)sqrt(987654321);for(a=b;a<=c;a++){d=a*a;w=d; //d為平方數(shù)for(k=0;k<=9;k++)f[k]=0;while(w>0){m=w%10;f[m]++;w=w/10;}for(t=0,k=1;k<=9;k++)if(f[k]>1)t=1;//測試平方數(shù)是否有重復(fù)數(shù)字if(t==0&&f[0]==0)//測試平方數(shù)中沒有重復(fù)數(shù)字,也沒有數(shù)字0{n++;printf("%2d:",n);printf("%ld=%ld^2\n",d,a);}}printf("共可組成%d9位平方數(shù).\n",n);}1:139854276=11826^22:152843769=12363^23:157326849=12543^24:215384976=14676^25:245893761=15681^26:254817369=15963^27:326597184=18072^28:361874529=19023^29:375468129=19377^210:382945761=19569^211:385297641=19629^212:412739856=20316^213:523814769=22887^214:529874361=23019^215:537219684=23178^216:549386721=23439^217:587432169=24237^218:589324176=24276^219:597362481=24441^220:615387249=24807^221:627953481=25059^222:653927184=25572^223:672935481=25941^224:697435281=26409^225:714653289=26733^226:735982641=27129^227:743816529=27273^228:842973156=29034^229:847159236=29106^230:923187456=30384^2共可組成(zǔchénɡ)309位平方數(shù).構(gòu)建(ɡòujiàn)橫豎(héngshù)折對稱(duìchèn)方陣試觀察圖所示的橫豎折對稱方陣的構(gòu)造(gòuzào)特點,總結(jié)歸納其構(gòu)造規(guī)律,設(shè)計并輸出n(奇數(shù))階對稱方陣。圖 7階橫豎對稱方陣輸出15階19階橫豎折對(duìchèn)方陣解:這是一道培養(yǎng)與鍛煉觀察能力、歸納能力與設(shè)計(shèjì)能力的有趣案例。2a[n][n]na[n][n]就是數(shù)據(jù)結(jié)a通,必須根據(jù)方陣的構(gòu)造特點,歸納(guīnà)其構(gòu)建規(guī)律,分區(qū)域給各元素賦值。構(gòu)造(gòuzào)規(guī)律與賦值要點觀察橫豎折對稱方陣(fānɡzhèn)的構(gòu)造特點,方陣橫向與縱向正中有一441。設(shè)階數(shù)n(奇數(shù))從鍵盤輸入,對稱軸為m=(n+1)/2。2a數(shù)組存儲方陣中元素,行號為i,列號為j,a[i][j]為第ij列元素。可知主對角線(從左上至右下)有:i=j;次對角線(從右上至左下)有:i+j=n+1。4個區(qū),如圖所示。圖 對角線分成的4個區(qū)jm-abs(m-j)賦值:if(i+j<=n+1&&i<=j||i+j>=n+1&&a[i][j]=m-abs(m-j);im-abs(m-i)賦值:if(i+j<n+1&&i>j||i+j>n+1&&a[i][j]=m-abs(m-i);輸時,按m-a[i][j]打印。程序設(shè)計//橫豎折對稱方陣#include<stdio.h> //2個頭文件#include<math.h>voidmain(){inti,j,m,n,a[30][30]; //定義數(shù)據(jù)結(jié)構(gòu)printf("請確定方陣階數(shù)(奇數(shù))n:");scanf("%d",&n);if(n%2==0) {printf("m=(n+1)/2;for(i=1;i<=n;i++)for(j=1;j<=n;j++){ if(i+j<=n+1&&i<=j||i+j>=n+1&&i>=j)a[i][j]=m-abs(m-j); //if(i+j<n+1&&i>j

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論