C語言程式設計 練習題參考答案 第三章 (3) 迴圈結構

來源:互聯網
上載者:User
/*  3.9 求派的值*/

#include "stdio.h"
void main()
{
    int n;
    double sum=0;
    for(n=1;n<=10000;n++)
    {
     sum=sum+1.0/(4*n-3)-1.0/(4*n-1);
    }
    printf("pi的值為%lf\n",4*sum);
}

/*  3.9 求派的值*/

#include<stdio.h>
void main()
{
 double i=1, s=1.0, t=1.0;
 do
 {
  t=t*(-1)*((2*i-1)/(2*i+1));
  s=s+t;
  i++;
 }while (i<=10000000);
 printf("pi=%.8lf\n",s*4);
}
 /*  3.10 求最大公約數和最小公倍數  輾轉相除法:見下面的介紹。  gcd(m,n)=gcd(n,r)   */

#include "stdio.h"
void main()
{
    int  m,n,r,original_m,original_n;
    printf("輸入m和n,樣本 6 8\n");
    scanf("%d%d",&m,&n);
    original_m=m;
    original_n=n;
    r=m%n;
    while(r!=0)
    {
     m=n;
     n=r;
     r=m%n;
    }
    printf("最大公約數為%d,最小公倍數為%d\n",n,original_m*original_n/n);
}
輾轉相除法求兩個數的最大公約數的步驟如下:
先用小的一個數除大的一個數,得第一個餘數;
再用第一個餘數除小的一個數,得第二個餘數;
又用第二個餘數除第一個餘數,得第三個餘數;
這樣逐次用後一個數去除前一個餘數,直到餘數是0為止。那麼,最後一個除數就是所求的最大公約數(如果最後的除數是1,那麼原來的兩個數是互質數)。
例如求1515和600的最大公約數,
第一次:用600除1515,商2餘315;
第二次:用315除600,商1餘285;
第三次:用285除315,商1餘30;
四次:用30除285,商9餘15;
第五次:用15除30,商2餘0。
1515和600的最大公約數是15。

輾轉相除法是求兩個數的最大公約數的方法。如果求幾個數的最大公約數,可以先求兩個數的最大公約數,再求這個最大公約數與第三個數的最大公約數。這樣依次下去,直到最後一個數為止。最後所得的一個最大公約數,就是所求的幾個數的最大公約數。

/* 3.11  Sn=a+aa+aaa+...+aaa...a  */
#include <stdio.h>

void main( )
{
   int a,n,i;
   long sum=0, item;
   printf("請輸入整數n(n>=1且n<=9)\n");
   scanf("%d",&n);
   printf("請輸入一位元字a(1-9)\n");
   scanf("%d",&a);
   item=a;
   sum=a;
   for(i=1;i<n;i++ )
   {
     item=item*10+a;
     sum=sum+item;
   }
   printf("sum=%ld\n",sum);
}

 

/* 3.12  分數序列求和,前20項。 2/1+3/2+5/3+8/5+......  */
#include <stdio.h>

void main( )
{
   int i;
   float sum=0, item,fenzi=2,fenmu=1,jiufenmu;  
   for(i=1;i<=20;i++ )
   {
     item=fenzi/fenmu;
     jiufenmu=fenmu;
     printf("%f/%f ;\n",fenzi,fenmu);
     sum=sum+item;
     fenmu=fenzi;
     fenzi=fenzi+jiufenmu;
   }
   printf("sum=%f\n",sum);
}

 /*   3.13  2-999之間所有同構數 例.... 5×5=25 */

#include "stdio.h"
void main()
{
   int i;
   printf("2-999之間所有同構數:");
   for(i=2;i<=999;i++)
   {
    if(i>=2 && i<=9)
     if(i*i%10 == i)
       printf("%4d",i);
    if(i>=10 && i<=99)
     if(i*i%100 == i)
       printf("%4d",i);
    if(i>=100 && i<=999)
     if(i*i%1000 == i)
       printf("%4d",i);
   }

}

 /*   3.14  輸入10個數字,輸出所有負數,及負數的和(要求不用數組)   */

#include "stdio.h"
#include "math.h"
void main()
{
   int i;
   float x,sum=0;
   printf("\n請輸入十個數字,並按斷行符號鍵\n");
   for(i=0;i<=9;i++)
   {
     scanf("%f",&x);
     if(x<0)
      {
       printf("%f",x);
       sum=sum+x;
      }

   }
   printf("\n所有負數之和為:%f",sum);

}

 /*  例 3.15  任意輸入n個數,輸出其中最大數和最小數,並輸出他們在序列中的位置*/

#include "stdio.h"
#include "math.h"
void main()
{
   int i,n,max_location=1,min_location=1;
   float x,max=0,min=0;
   printf("你想輸入幾個數字(輸入一個整數後按斷行符號)");
   scanf("%d",&n);
   printf("\n請輸入%d個數字,並按斷行符號鍵\n",n);
   scanf("%f",&x);
   max=x;
   min=x;
   for(i=2;i<=n;i++)
   {
     scanf("%f",&x);
     if(x>max)
      {
       max=x;
       max_location=i;
      }
     if(x<min)
      {
       min=x;
       min_location=i;
      }

   }
   printf("\n最大數為%f,位置為:%d\n",max,max_location);
   printf("\n最小數為%f,位置為:%d\n",min,min_location);
}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.