C++條件及循環(huán)語(yǔ)句的綜合運(yùn)用實(shí)例
用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一項(xiàng)的絕對(duì)值小于10-7為止。根據(jù)給定的算法很容易編寫(xiě)程序如下:
#include <iostream> #include <iomanip> #include <cmath> using namespace std; int main( ) { int s=1; double n=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; return 0; }
運(yùn)行結(jié)果為
pi=3.141592
注意:不要把n定義為整型變量,否則在執(zhí)行“t=s/n;”時(shí),得到t的值為0(原因是兩個(gè)整數(shù)相除)。
【例】求Fibonacci數(shù)列前40個(gè)數(shù)。這個(gè)數(shù)列有如下特點(diǎn):第1、2個(gè)數(shù)為1、1。從第3個(gè)數(shù)開(kāi)始,每個(gè)數(shù)是其前面兩個(gè)數(shù)之和。即:
F1=1 (n=1) F2=1 (n=2) Fn=Fn-1+Fn-2(n≥3)
這是一個(gè)有趣的古典數(shù)學(xué)問(wèn)題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第3個(gè)月后每個(gè)月又生一對(duì)兔子,假設(shè)所有兔子都不死,問(wèn)每個(gè)月的兔子總數(shù)為多少?
根據(jù)給出的每月兔子總數(shù)的關(guān)系,可編寫(xiě)程序如下:
#include <iostream> #include <iomanip> using namespace std; int main( ) { long f1,f2; int i; f1=f2=1; for(i=1;i<=20;i++) { cout<<setw(12)<<f1<<setw(12)<<f2; //設(shè)備輸出字段寬度為12,每次輸出兩個(gè)數(shù) if(i%2==0) cout<<endl; //每輸出完4個(gè)數(shù)后換行,使每行輸出4個(gè)數(shù) f1=f1+f2; //左邊的f1代表第3個(gè)數(shù),是第1?2個(gè)數(shù)之和 f2=f2+f1; //左邊的f2代表第4個(gè)數(shù),是第2?3個(gè)數(shù)之和 } return 0; }
【例】找出100~200間的全部素?cái)?shù)。編寫(xiě)程序如下:
#include <iostream> #include <cmath> #include <iomanip> using namespace std; int main( ) { int m,k,i,n=0; bool prime;//定義布爾變量prime for(m=101;m<=200;m=m+2) //判別m是否為素?cái)?shù),m由101變化到200,增量為2 { prime=true;//循環(huán)開(kāi)始時(shí)設(shè)prime為真,即先認(rèn)為m為素?cái)?shù) k=int(sqrt(m)); //用k代表根號(hào)m的整數(shù)部分 for(i=2;i<=k;i++) //此循環(huán)作用是將m被2~根號(hào)m除,檢查是否能整除 if(m%i==0) //如果能整除,表示m不是素?cái)?shù) { prime=false; //使prime變?yōu)榧? break; //終止執(zhí)行本循環(huán) } if (prime)//如果m為素?cái)?shù) { cout<<setw(5)<<m; //輸出素?cái)?shù)m,字段寬度為5 n=n+1; //n用來(lái)累計(jì)輸出素?cái)?shù)的個(gè)數(shù) } if(n%10==0) cout<<endl; //輸出10個(gè)數(shù)后換行 } cout<<endl;//最后執(zhí)行一次換行 return 0; }
【例】譯密碼
為使電文保密,往往按一定規(guī)律將電文轉(zhuǎn)換成密碼,收?qǐng)?bào)人再按約定的規(guī)律將其譯回原文。例如,可以按以下規(guī)律將電文變成密碼:將字母A變成字母E,a變成e,即變成其后的第4個(gè)字母,W變成A,X變成B,Y變成C,Z變成D。見(jiàn)圖3.20,字母按上述規(guī)律轉(zhuǎn)換,非字母字符不變,如"Wonderful!"轉(zhuǎn)換為"Asrhivjyp!"。
輸入一行字符,要求輸出其相應(yīng)的密碼。
程序如下:
#include <iostream> using namespace std; int main( ) { char c; 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; return 0; }
運(yùn)行結(jié)果如下:
I am going to Beijing!↙ M eq ksmrk xs Fimnmrk!
while語(yǔ)句中括號(hào)內(nèi)的表達(dá)式有3個(gè)作用:
從鍵盤(pán)讀入一個(gè)字符,這是用getchar函數(shù)實(shí)現(xiàn)的;
將讀入的字符賦給字符變量c;
判別這個(gè)字符是否為'\n'(即換行符)。如果是換行符就執(zhí)行while語(yǔ)句中的復(fù)合語(yǔ)句(即花括號(hào)內(nèi)的語(yǔ)句),對(duì)輸入的非換行符的字符進(jìn)行轉(zhuǎn)換處理。
按前面分析的思路對(duì)輸入的字符進(jìn)行處理,有一點(diǎn)請(qǐng)讀者注意,內(nèi)嵌的if語(yǔ)句不能寫(xiě)成:
if (c>'Z'|| c>'z') c=c-26;
因?yàn)樗行?xiě)字母都滿足“c>'Z'”條件,從而也執(zhí)行“c=c-26;”語(yǔ)句,這就會(huì)出錯(cuò)。因此必須限制其范圍為“c>'Z' && c<='Z'+4”,即原字母為'W'到'Z',在此范圍以外的不是原大寫(xiě)字母W~Z,不應(yīng)按此規(guī)律轉(zhuǎn)換。
欄 目:C語(yǔ)言
下一篇:C++中字符串以及數(shù)組和指針的互相使用講解
本文標(biāo)題:C++條件及循環(huán)語(yǔ)句的綜合運(yùn)用實(shí)例
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/2731.html
您可能感興趣的文章
- 04-02c語(yǔ)言沒(méi)有round函數(shù) round c語(yǔ)言
- 01-10深入理解C++中常見(jiàn)的關(guān)鍵字含義
- 01-10使用C++實(shí)現(xiàn)全排列算法的方法詳解
- 01-10深入第K大數(shù)問(wèn)題以及算法概要的詳解
- 01-10c++中inline的用法分析
- 01-10用C++實(shí)現(xiàn)DBSCAN聚類(lèi)算法
- 01-10深入全排列算法及其實(shí)現(xiàn)方法
- 01-10全排列算法的非遞歸實(shí)現(xiàn)與遞歸實(shí)現(xiàn)的方法(C++)
- 01-10C++大數(shù)模板(推薦)
- 01-10深入理解堆排序及其分析


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 04-02c語(yǔ)言函數(shù)調(diào)用后清空內(nèi)存 c語(yǔ)言調(diào)用
- 04-02func函數(shù)+在C語(yǔ)言 func函數(shù)在c語(yǔ)言中
- 04-02c語(yǔ)言的正則匹配函數(shù) c語(yǔ)言正則表達(dá)
- 04-02c語(yǔ)言用函數(shù)寫(xiě)分段 用c語(yǔ)言表示分段
- 04-02c語(yǔ)言中對(duì)數(shù)函數(shù)的表達(dá)式 c語(yǔ)言中對(duì)
- 04-02c語(yǔ)言編寫(xiě)函數(shù)冒泡排序 c語(yǔ)言冒泡排
- 04-02c語(yǔ)言沒(méi)有round函數(shù) round c語(yǔ)言
- 04-02c語(yǔ)言分段函數(shù)怎么求 用c語(yǔ)言求分段
- 04-02C語(yǔ)言中怎么打出三角函數(shù) c語(yǔ)言中怎
- 04-02c語(yǔ)言調(diào)用函數(shù)求fibo C語(yǔ)言調(diào)用函數(shù)求
隨機(jī)閱讀
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10C#中split用法實(shí)例總結(jié)
- 04-02jquery與jsp,用jquery
- 01-10delphi制作wav文件的方法