亚洲欧洲国产欧美一区精品,激情五月亚洲色五月,最新精品国偷自产在线婷婷,欧美婷婷丁香五月天社区

      自考

      各地資訊
      當(dāng)前位置:華課網(wǎng)校 >> 自考 >> 模擬試題 >> 工學(xué)類 >> C語(yǔ)言程序設(shè)計(jì) >> 文章內(nèi)容

      排行熱點(diǎn)

      • 歷年真題
      • 模擬試題
      • 自考自答

      自學(xué)考試《C語(yǔ)言程序設(shè)計(jì)》復(fù)習(xí)試題及答案_第3頁(yè)

      來(lái)源:華課網(wǎng)校  [2017年1月31日]  【

        【4.46】分析:二分法的基本原理是,若函數(shù)有實(shí)根,則函數(shù)的曲線應(yīng)當(dāng)在根這一點(diǎn)上與x軸有一個(gè)交點(diǎn),在根附近的左右區(qū)間內(nèi),函數(shù)值的符號(hào)應(yīng)當(dāng)相反。利用這一原理,逐步縮小區(qū)間的范圍,保持在區(qū)間的兩個(gè)端點(diǎn)處的函數(shù)值符號(hào)相反,就可以逐步逼近函數(shù)的根。

        參考答案:

        #include "stdio.h"

        #include "math.h"

        main()

        { float x0, x1, x2, fx0, fx1, fx2;

        do

        { printf("Enter x1,x2:");

        scanf("%f,%f", &x1, &x2);

        fx1=2*x1*x1*x1-4*x1*x1+3*x1-6; /* 求出x1點(diǎn)的函數(shù)值fx1 */

        fx2=2*x2*x2*x2-4*x2*x2+3*x2-6; /* 求出x2點(diǎn)的函數(shù)值fx2 */

        }while (fx1*fx2>0); /* 保證在指定的范圍內(nèi)有根,即fx的符號(hào)相反 */

        do

        { x0=(x1+x2)/2; /* 取x1和x2的中點(diǎn) */

        fx0=2*x0*x0*x0-4*x0*x0+3*x0-6; /* 求出中點(diǎn)的函數(shù)值fx0 */

        if((fx0*fx1)<0) /* 若fx0和fx1符號(hào)相反 */

        { x2=x0; /* 則用x0點(diǎn)替代x2點(diǎn) */

        fx2=fx0;

        }

        else

        { x1=x0; /* 否則用x0點(diǎn)替代x1點(diǎn) */

        fx1=fx0;

        }

        }while(fabs((double)fx0)>=1e-5); /* 判斷x0點(diǎn)的函數(shù)與x軸的 距離 */

        printf("x=%6.2f\n", x0);

        }

        【4.47】分析:做圓的內(nèi)接4邊形,從圓心和4邊形頂點(diǎn)連接形成4個(gè)三角形,可以求出每個(gè)三角形的面積(r2/2)現(xiàn)在我們知道三角形的面積和兩個(gè)邊長(zhǎng)(均為半徑a=r、b=r),可以用公式:S=s(s-a)(s-b)(s-c)求出第三邊c。我們將內(nèi)接4邊形換為內(nèi)接8邊形,原來(lái)的三角形被一分為二,故c/2就是每個(gè)三角形的高,面積又是可以求出的。再將三角形一分為二,……。當(dāng)三角形的面積求出時(shí),內(nèi)接多邊形的面積就可求出。

        參考答案:

        main()

        { int n=4;

        double r=10,s,cr,c,p;

        s=r*r/2;

        do

        { cr=n*s;

        p=16*r*r*r*r-64*s*s;

        c=(4*r*r-sqrt(p))/2;

        c=sqrt(c);

        s=c*r/4;

        n=2*n;

        }while(n*s-cr>1.0e-10);

        printf("PAI=%lf\n",cr/r/r);

        }

        【4.48】分析:根據(jù)題意,總計(jì)將所有的魚(yú)進(jìn)行了五次平均分配,每次分配時(shí)的策略是相同的,即扔掉一條后剩下的魚(yú)正好分為五份,然后拿走自己的一份,余下其它四份。假定魚(yú)的總數(shù)為x,則x可以按照題目的要求進(jìn)行五次分配:x-1后可被5整除,余下的魚(yú)為4×(x-1)÷ 5。若x滿足上述要求,則x就是題目的解。

        參考答案:

        main( )

        { int n,i,x,flag=1; /* flag:控制標(biāo)記 */

        for(n=6;flag;n++) /* 采用試探的方法,令試探值n逐步加大 */

        { for(x=n,i=1;flag && i<=5;i++) /* 判斷是否可按要 */

        if((x-1)%5 == 0) x=4*(x-1)/5; /* 求進(jìn)行5次分配 */

        else flag=0; /* 若不能分配則置標(biāo)記flag=0退出分配過(guò)程 */

        if(flag) break; /* 若分配過(guò)程正常,找到結(jié)果,退出試探的過(guò)程 */

        else flag=1; /* 否則繼續(xù)試探下一個(gè)數(shù) */

        }

        printf("Total number of fish catched = %d\n", n); /* 輸出結(jié)果 */

        }

        【4.49】分析:按照題目的要求造出一個(gè)前兩位數(shù)相同、后兩位數(shù)相同且相互間又不同的整數(shù),然后判斷該整數(shù)是否是另一個(gè)整數(shù)的平方。

        參考答案:

        #include "math.h"

        main()

        { int i,j,k,c;

        for(i=1;i<=9;i++) /* i:車號(hào)前二位的取值 */

        for(j=0;j<=9;j++) /* j:車號(hào)后二位的取值 */

        if( i!=j ) /* 判斷兩位數(shù)字是否相異 */

        { k=i*1000+i*100+j*10+j; /* 計(jì)算出可能的整數(shù) */

        for( c=31;c*c

        if(c*c==k)

        printf("Lorry_No. is %d .\n", k); /* 若是,打印結(jié)果 */

        }

        }

        【4.50】分析:用窮舉法解決此類問(wèn)題。設(shè)任取紅球的個(gè)數(shù)為i,白球的個(gè)數(shù)為j,則取黑球的個(gè)數(shù)為8-i-j, 據(jù)題意紅球和白球個(gè)數(shù)的取值范圍是0~3,在紅球和白球個(gè)數(shù)確定的條件下,黑球的個(gè)數(shù)取值應(yīng)為8-i-j<=6。

        參考答案:

        main( )

        { int i,j,count=0;

        printf(" RED BALL WHITE BALL BLACK BALL\n");

        printf("------------------------------------------\n");

        for(i=0;i<=3;i++) /* 循環(huán)控制變量i控制任取紅球個(gè)數(shù)0~3 */

        for(j=0;j<=3;j++) /* 循環(huán)控制變量j控制任取白球個(gè)數(shù)0~3 */

        if((8-i-j)<=6)

        printf("%2d: %d %d %d\n",++count, i,j,8-i-j);

        }

        【4.51】分析:此題采用窮舉法。

        參考答案:

        main()

        { int x,y,z,j=0;

        for(x=0; x<=33; x++)

        for(y=0; y<=(100-3*x)/2; y++)

        { z=100-x-y;

        if( z%2==0 && 3*x+2*y+z/2==100)

        printf("%2d:l=%2d m=%2d s=%2d\n",++j,x,y,z);

        }

        }

        【4.52】分析:此題采用窮舉法。

        參考答案:

        main( )

        { int f1,f2,f5,count=0;

        for(f5=0;f5<=20;f5++)

        for(f2=0;f2<=(100-f5*5)/2;f2++)

        { f1=100-f5*5-f2*2;

        if(f5*5+f2*2+f1==100)

        printf("No.%2d >> 5: %4d 2: %2d 1: %2d\n",++count,f5,f2,f1);

        }

        }

        【4.53】分析:此題采用窮舉法。

        參考答案:

        main( )

        { long int i,j,k,count=0;

        for(i=1;i*i<=200;i++)

        for(j=1;j*j<=200;j++)

        for(k=1;k*k<=200;k++)

        if(i*i==(j*j+k*k))

        { printf("\nA^2==B^2+C^2: %4ld%4ld%4ld",i,j,k);

        count++;

        }

        printf("\ncount=%ld",count);

        }

        【4.54】分析:此題采用窮舉法?稍O(shè)整數(shù)N的千、百、十、個(gè)位為i、j、k、m,其取值均為0~9,則滿足關(guān)系式:(i*103+j*102+10k+m)*9=(m*103+k*102+10j+i) 的i、j、k、m即構(gòu)成N。

        參考答案:

        #include

        main( )

        { int i;

        for(i=1002;i<1111;i++) /* 窮舉四位數(shù)可能的值 */

        if(i%10*1000+i/10%10*100+i/100%10*10+i/1000==i*9 )

        printf("The number satisfied states condition is: %d\n", i);

        /* 判斷反序數(shù)是否是原整數(shù)的9倍若是則輸出 */

        }

        【4.55】分析:此題采用窮舉法。

        參考答案:

        main()

        { int i,j,n,k,a[16]={0};

        for(i=1;i<=1993;i++)

        { n=i;k=0;

        while(n>0) /* 將十進(jìn)制數(shù)轉(zhuǎn)變?yōu)槎M(jìn)制數(shù) */

        { a[k++]=n%2;

        n=n/2;

        }

        for(j=0;j

        if(a[j]!=a[k-j-1]) break;

        if(j>=k)

        { printf(" %d: ",i);

        for(j=0;j

        printf("%2d",a[j]);

        printf("\n");

        }

        }

        }

        【4.56】分析:類似的問(wèn)題從計(jì)算機(jī)算法的角度來(lái)說(shuō)是比較簡(jiǎn)單的,可以采用最常見(jiàn)的窮舉法解決。程序中采用循環(huán)窮舉每個(gè)字母所可能代表的數(shù)字,然后將字母代表的數(shù)字轉(zhuǎn)換為相應(yīng)的整數(shù),代入算式后驗(yàn)證算式是否成立即可解決問(wèn)題。

        參考答案:

        #include

        main( )

        { int p,e,a,r;

        for(p=1;p<=9;p++) /* 從1到9窮舉字母p的全部可能取值 */

        for(e=0;e<=9;e++) /* 從0到9窮舉字母e的全部可能取值 */

        if(p!=e)

        for(a=1;a<=9;a++) /* 從0到9窮舉字母a的全部可能取值 */

        if(a!=p && a!=e)

        for(r=0;r<=9;r++) /* 從0到9窮舉字母r */

        if(r!=p && r!=e && r!=a /* 四個(gè)字母互不相同 */

        && p*1000+e*100+a*10+r-(a*100+r*10+a)

        == p*100+e*10+a )

        { printf(" PEAR %d%d%d%d\n", p, e, a, r);

        printf(" - ARA - %d%d%d\n", a, r, a);

        printf("-------- ---------\n");

        printf(" PEA %d%d%d\n", p, e, a);

        }

        }

        【4.57】參考答案:

        main()

        { int i,n,k,a[3],b[3];

        for(i=248;i<=343;i++)

        { for(n=i,k=0;n>0;n/=7)

        a[k++]=n%7;

        for(n=i,k=0;n>0;n/=9)

        b[k++]=n%9;

        if(k==3)

        for(n=0;n

        if(a[n]!=b[k-n-1])

        break;

        if(n==k)

        printf("%d\n",i);

        }

        }

        【4.58】參考答案:

        main()

        { int i,j,k,m,error;

        for(i=6;i<=2000;i+=2)

        { error=1;

        for(j=2;j

        { for(k=2;k

        if(j%k==0) /* j能夠被小于它的一個(gè)數(shù)整除就不是素?cái)?shù) */

        break;

        if(k>=j) /* j是素?cái)?shù) */

        { m=i-j;

        for(k=2;k

        if(m%k==0)

        break;

        if(k>=m) /* m也是素?cái)?shù),輸出結(jié)果 */

        { printf("%4d = %4d + %4d\n",i,j,m);

        error=0;

        break; }

        }

        }

        if(error)

        printf("%4d error!");

        }

        }

        【4.59】分析:可采用窮舉法,依次取1000以內(nèi)的各數(shù)(設(shè)為i),將i的各位數(shù)字分解后,據(jù)阿姆斯特朗數(shù)的性質(zhì)進(jìn)行計(jì)算和判斷。

        參考答案:

        #include

        main()

        { int i,t,k,a[4]={0};

        printf ("There are following Armstrong number smaller than 1000:\n");

        for(i=2;i<1000;i++) /* 窮舉要判定的數(shù)i的取值范圍1~1000 */

        { for(t=0,k=1000;k>=10;t++) /* 截取整數(shù)i的各位(從高位向低位) */

        { a[t]=(i%k)/(k/10);   /* 分別賦給a[0]~a[3] */

        k /= 10;

        }

        if(a[0]*a[0]*a[0]+a[1]*a[1]*a[1]+a[2]*a[2]*a[2]+a[3]*a[3]*a[3]==i)

        printf(" %d ",i); /* 判斷i是否為阿姆斯特朗數(shù),*/

        /* 若滿足條件,則輸出 */

        }

        }

        【4.60】參考答案:

        main( )

        { int j,k,n,m;

        printf("Please enter n:");

        scanf("%d",&n);

        for(j=2;j

        { for(k=2;k

        if(j%k==0) break; /* j能夠被小于它的一個(gè)數(shù)整除就不是素?cái)?shù) */

        if(k>=j) /* j是素?cái)?shù) */

        { m=n-j;

        for(k=2;k

        if(m%k==0) break;

        if(k>=m) /* m也是素?cái)?shù),輸出結(jié)果 */

        { printf("%4d = %4d + %4d\n",n,j,m);

        break;

        }

        }

        }

        }

      首頁(yè) 1 2 3 尾頁(yè)
      責(zé)編:zhangjing0102