日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

您好,歡迎來電子發(fā)燒友網! ,新用戶?[免費注冊]

當前位置:電子發(fā)燒友網 > 圖書頻道 > 電子 > 《C++程序設計實踐例題》 > 第1章 第一章

第3節(jié) 第三部分

例3.1 各行小數(shù)點對齊。

#include <iostream>

#include <iomanip>

usingnamespacestd;

intmain( )

{

doublea=123.456,b=3.14159,c=-3214.67;

cout<<setiosflags(ios∷fixed)<<setiosflags(ios∷right)<<setprecision(2);

      cout<<setw(10)<<a<<endl;

      cout<<setw(10)<<b<<endl;

      cout<<setw(10)<<c<<endl;

return0;

}

 

例3.10 求1+2+3+…+100。

用流程圖表示算法,見圖3.10。

根據(jù)流程圖寫出程序:

#include <iostream>

usingnamespacestd;

intmain( )

{inti=1,sum=0;

   while(i<=100)

    { sum=sum+i;

      i++;

    }

cout<<"sum="<<sum<<endl;

}

 

例3.11 用do-while語句求1+2+3+…+100。

先畫出流程圖,見圖3.12。

可編寫出下面的程序:

#include <iostream>

usingnamespacestd;

intmain( )

{inti=1,sum=0;

 do

  { sum=sum+i;

    i++;

   }while(i<=100);

 cout<<"sum="<<sum<<endl;

 return0;

}

 

例3.12 用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一項的絕對值小于10的-7次方為止。

根據(jù)給定的算法很容易編寫程序如下:

#include <iostream>

#include <iomanip>

#include <cmath>

    usingnamespacestd;

intmain( )

{ints=1;

 doublen=1,t=1,pi=0;

 while((fabs(t))>1e-7)

   {pi=pi+t;

  n=n+2;

  s=-s;

  t=s/n;

 }

 pi=pi*4;

 cout<<"pi="<<setiosflags(ios∷fixed)<<setprecision(6)<<pi<<endl;

return0;

}

 

例3.13 求Fibonacci數(shù)列前40個數(shù)。這個數(shù)列有如下特點:第1、2個數(shù)為1、1。從第3個數(shù)開始,每個數(shù)是其前面兩個數(shù)之和。即

F1=1           (n=1)

F2=1           (n=2)

Fn=Fn-1+Fn-2   (n≥3)

這是一個有趣的古典數(shù)學問題:有一對兔子,從出生后第3個月起每個月都生一對兔子。小兔子長到第3個月后每個月又生一對兔子。假設所有兔子都不死,問每個月的兔子總數(shù)為多少?

可以從書中表3.4看出兔子數(shù)的規(guī)律。

根據(jù)給出的每月兔子總數(shù)的關系,可以編寫程序如下:

#include <iostream>

#include <iomanip>

usingnamespacestd;

intmain( )

{longf1,f2;

 inti;

 f1=f2=1;

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

   {cout<<setw(12)<<f1<<setw(12)<<f2;

//設備輸出字段寬度為12,每次輸出兩個數(shù)

    if(i%2==0) cout<<endl;

//每輸出完4個數(shù)后換行,使每行輸出4個數(shù)

    f1=f1+f2;

//左邊的f1代表第3個數(shù),是第1、2個數(shù)之和

    f2=f2+f1;

//左邊的f2代表第4個數(shù),是第2、3個數(shù)之和

   }

   return0;

 }

 

例3.14 找出100~200間的全部素數(shù)。

編寫程序如下:

#include <iostream>

#include <cmath>

#include <iomanip>

usingnamespacestd;

intmain( )

{intm,k,i,n=0;

 boolprime;      //定義布爾變量prime

 for(m=101;m<=200;m=m+2)     //判別m是否為素數(shù),m由101變化到200,增量為2

   {prime=true;   //循環(huán)開始時設prime為真,即先認為m為素數(shù)

k=int(sqrt(m));          //用k代表根號m的整數(shù)部分

    for(i=2;i<=k;i++)        //此循環(huán)的作用是將m被2~根號m除,檢查是否能整除

if(m%i==0)             //如果能整除,表示m不是素數(shù)

{ prime=false;       //使prime變?yōu)榧?/p>

break;             //終止執(zhí)行本循環(huán)

}

    if(prime)               //如果m為素數(shù)

      {cout<<setw(5)<<m;     //輸出素數(shù)m,字段寬度為5

       n=n+1;                //n用來累計輸出素數(shù)的個數(shù)

      }

    if(n%10==0) cout<<endl;  //輸出10個數(shù)后換行

   }

 cout<<endl;                  //最后執(zhí)行一次換行

 return0;

}

 

例3.15 譯密碼。為使電文保密,往往按一定規(guī)律將電文轉換成密碼,收報人再按約定的規(guī)律將其譯回原文。例如,可以按以下規(guī)律將電文變成密碼:將字母A變成字母E,a變成e,即變成其后的第4個字母,W變成A,X變成B,Y變成C,Z變成D。見圖3.20。字母按上述規(guī)律轉換,非字母字符不變。如"Wonderful!"轉換為"Asrhivjyp!"。輸入一行字符,要求輸出其相應的密碼。

圖3.20

程序如下:

#include <iostream>

usingnamespacestd;

intmain( )

{charc;

 while((c=getchar( ))!='\n')

   {if((c>='a' && c<='z') || (c>='A' && c<='Z'))

      {c=c+4;

       if(c>'Z' && c<='Z'+4|| c>'z') c=c-26;

      }

    cout<<c;

   }

 cout<<endl;

 return0;

 

例3.2 輸出單個字符。

#include <iostream>        //或者包含頭文件stdio.h:#include <stdio.h>

usingnamespacestd;

intmain( )

{chara,b,c;

 a='B';b='O';c='Y';

 putchar(a);putchar(b);putchar(c);putchar('\n');

 putchar(66);putchar(79);putchar(89);putchar(10);

 return0;

}

 

例3.3 輸入單個字符。

#include <iostream>

usingnamespacestd;

intmain( )

{charc;

 c=getchar( ); putchar(c+32); putchar('\n');

 return0;

}

 

例3.4 用scanf和printf函數(shù)進行輸入和輸出。

#include <iostream>

usingnamespacestd;

intmain( )

{inta; floatb; charc;

 scanf("%d %c %f",&a,&c,&b);           //注意在變量名前要加地址運算符&

 printf("a=%d,b=%f,c=%c\n",a,b,c);

 return0;

}

 

例3.5 求一元二次方程式ax2+bx+c=0的根。a,b,c的值在運行時由鍵盤輸入,它們的值滿足b2-4ac≥0。

根據(jù)求x1,x2的算法。它可以編寫出以下C++程序:

#include <iostream>

#include <cmath>              //由于程序要用到數(shù)學函數(shù)sqrt,故應包含頭文件cmath

usingnamespacestd;

intmain( )

{float  a,b,c,x1,x2;

 cin>>a>>b>>c;

 x1=(-b+sqrt(b*b-4*a*c))/(2*a);

 x2=(-b-sqrt(b*b-4*a*c))/(2*a);

 cout<<"x1="<<x1<<endl;

 cout<<"x2="<<x2<<endl;

 return0;

}

 

例3.6 求三角形的面積。

#include <iostream>

#include <cmath>                //使用數(shù)學函數(shù)時要包含頭文件cmath

#include <iomanip>              //使用I/O流控制符要包含頭文件iomanip

usingnamespacestd;

intmain( )

{

 doublea,b,c;

 cout<<"please enter a,b,c:";

 cin>>a>>b>>c;

 if(a+b>c && b+c>a && c+a>b)

  {                                      //復合語句開始

   doubles,area;                        //在復合語句內定義變量

   s=(a+b+c)/2;

   area=sqrt(s*(s-a)*(s-b)*(s-c));

   cout<<setiosflags(ios∷fixed)<<setprecision(4); //指定輸出的數(shù)包含4位小數(shù)

   cout<<"area="<<area<<endl;                 //在復合語句內輸出局部變量的值

  }                                           //復合語句結束

elsecout<<"it is not a trilateral!"<<endl;

return0;

}

 

例3.7 輸入一個字符,判別它是否為大寫字母,如果是,將它轉換成小寫字母;如果不是,不轉換。然后輸出最后得到的字符。

#include <iostream>

usingnamespacestd;

intmain( )

{

  charch;

  cin>>ch;

  ch=(ch>='A' && ch<='Z')?(ch+32):ch;        //判別ch是否大寫字母,是則轉換

  cout<<ch<<endl;

  return0;

}

 

例3.8 編寫程序,判斷某一年是否為閏年。

#include <iostream>

usingnamespacestd;

intmain( )

{ intyear;

  boolleap;

  cout<<"please enter year:";      //輸出提示

  cin>>year;                       //輸入年份

  if(year%4==0)                   //年份能被4整除

    {if(year%100==0)               //年份能被4整除又能被100整除

      {if(year%400==0)            //年份能被4整除又能被400整除

          leap=true;               //閏年,令leap=true(真)

       elseleap=false;}           //非閏年,令leap=false(假)

     else                         //年份能被4整除但不能被100整除肯定是閏年

         leap=true;}              //是閏年,令leap=true

  else                            //年份不能被4整除肯定不是閏年

      leap=false;                 //若為非閏年,令leap=false

  if(leap)

     cout<<year<<" is ";          //若leap為真,就輸出年份和“是”

  else

     cout<<year<<" is not ";      //若leap為真,就輸出年份和“不是”

  cout<<" a leap year."<<endl;    //輸出“閏年”

  return0;

}

 

例3.9 運輸公司對用戶計算運費。路程(s)越遠,每公里運費越低。標準如下:

       s<250km                         沒有折扣

       250≤s<500                      2%折扣

       500≤s<1000                     5%折扣

      1000≤s<2000                     8%折扣

      2000≤s<3000                    10%折扣

      3000≤s                          15%折扣

設每公里每噸貨物的基本運費為p(price的縮寫),貨物重為w(wright的縮寫),距離為s,折扣為d(discount的縮寫),則總運費f(freight的縮寫)的計算公式為

f = p * w * s * (1- d)

圖3.8

據(jù)此寫出程序如下:   

#include <iostream>

usingnamespacestd;

intmain( )

{intc,s;

 floatp,w,d,f;

 cout<<"please enter p,w,s:";

 cin>>p>>w>>s;

 if(s>=3000) c=12;

 elsec=s/250;

 switch(c)

 { case0:d=0;break;

   case1:d=2;break;

   case2:

   case3:d=5;break;

   case4:

   case5:

   case6:

   case7:d=8;break;

   case8:

   case9:

   case10:

   case11:d=10;break;

   case12:d=15;break;

 }

  f=p*w*s*(1-d/100.0);

  cout<<"freight="<<f<<endl;

  return0;

}

?
昂仁县| 文化| 宁强县| 大厂| 通州区| 元朗区| 河北省| 当阳市| 大新县| 多伦县| 林口县| 固安县| 红河县| 当阳市| 车致| 连平县| 新沂市| 建水县| 商河县| 金秀| 澄迈县| 宁德市| 兰州市| 太谷县| 北宁市| 咸宁市| 巧家县| 黔江区| 宁河县| 永新县| 年辖:市辖区| 会东县| 丹棱县| 渑池县| 嵊州市| 麻江县| 华宁县| 灌云县| 玉山县| 乳山市| 浮梁县|