国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++條件及循環語句的綜合運用實例

2020-05-23 14:15:34
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了C++條件及循環語句的綜合運用實例,能夠幫助C++初學者更好地掌握C++的邏輯語句用法,需要的朋友可以參考下

用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一項的絕對值小于10-7為止。根據給定的算法很容易編寫程序如下:

 

 
  1. #include <iostream> 
  2. #include <iomanip> 
  3. #include <cmath> 
  4. using namespace std; 
  5. int main( ) 
  6. int s=1; 
  7. double n=1,t=1,pi=0; 
  8. while((fabs(t))>1e-7) 
  9. pi=pi+t; 
  10. n=n+2; 
  11. s=-s; 
  12. t=s/n; 
  13. pi=pi*4; 
  14. cout<<"pi="<<setiosflags(ios::fixed)<<setprecision(6)<<pi<<endl; 
  15. return 0; 

運行結果為

 

 
  1. pi=3.141592 

注意:不要把n定義為整型變量,否則在執行“t=s/n;”時,得到t的值為0(原因是兩個整數相除)。

【例】求Fibonacci數列前40個數。

這個數列有如下特點:第1、2個數為1、1。從第3個數開始,每個數是其前面兩個數之和。即:

 

 
  1. F1=1 (n=1) 
  2. F2=1 (n=2) 
  3. Fn=Fn-1+Fn-2(n≥3) 

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

根據給出的每月兔子總數的關系,可編寫程序如下:

 

 
  1. #include <iostream> 
  2. #include <iomanip> 
  3. using namespace std; 
  4. int main( ) 
  5. long f1,f2; 
  6. int i; 
  7. f1=f2=1; 
  8. for(i=1;i<=20;i++) 
  9. cout<<setw(12)<<f1<<setw(12)<<f2; 
  10. //設備輸出字段寬度為12,每次輸出兩個數 
  11. if(i%2==0) cout<<endl; 
  12. //每輸出完4個數后換行,使每行輸出4個數 
  13. f1=f1+f2; 
  14. //左邊的f1代表第3個數,是第1?2個數之和 
  15. f2=f2+f1; 
  16. //左邊的f2代表第4個數,是第2?3個數之和 
  17. return 0; 

【例】找出100~200間的全部素數。

編寫程序如下:

 

 
  1. #include <iostream> 
  2. #include <cmath> 
  3. #include <iomanip> 
  4. using namespace std; 
  5. int main( ) 
  6. int m,k,i,n=0; 
  7. bool prime;//定義布爾變量prime 
  8. for(m=101;m<=200;m=m+2) //判別m是否為素數,m由101變化到200,增量為2 
  9. prime=true;//循環開始時設prime為真,即先認為m為素數 
  10. k=int(sqrt(m)); //用k代表根號m的整數部分 
  11. for(i=2;i<=k;i++) //此循環作用是將m被2~根號m除,檢查是否能整除 
  12. if(m%i==0) //如果能整除,表示m不是素數 
  13. prime=false//使prime變為假 
  14. break//終止執行本循環 
  15. if (prime)//如果m為素數 
  16. cout<<setw(5)<<m; //輸出素數m,字段寬度為5 
  17. n=n+1; //n用來累計輸出素數的個數 
  18. if(n%10==0) cout<<endl; //輸出10個數后換行 
  19. cout<<endl;//最后執行一次換行 
  20. return 0; 

【例】譯密碼

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

輸入一行字符,要求輸出其相應的密碼。

C++條件及循環語句的綜合運用實例

程序如下:

 

 
  1. #include <iostream> 
  2. using namespace std; 
  3. int main( ) 
  4. char c; 
  5. while ((c=getchar( ))!='/n'
  6. if((c>='a' && c<='z') || (c>='A' && c<='Z')) 
  7. c=c+4; 
  8. if(c>'Z' && c<='Z'+4 || c>'z'
  9. c=c-26; 
  10. cout<<c; 
  11. cout<<endl; 
  12. return 0; 

運行結果如下:

 

 
  1. I am going to Beijing!↙ 
  2. M eq ksmrk xs Fimnmrk! 

while語句中括號內的表達式有3個作用:

從鍵盤讀入一個字符,這是用getchar函數實現的;

將讀入的字符賦給字符變量c;

判別這個字符是否為'/n'(即換行符)。如果是換行符就執行while語句中的復合語句(即花括號內的語句),對輸入的非換行符的字符進行轉換處理。

按前面分析的思路對輸入的字符進行處理,有一點請讀者注意,內嵌的if語句不能寫成:

if (c>'Z'|| c>'z') c=c-26;

因為所有小寫字母都滿足“c>'Z'”條件,從而也執行“c=c-26;”語句,這就會出錯。因此必須限制其范圍為“c>'Z' && c<='Z'+4”,即原字母為'W'到'Z',在此范圍以外的不是原大寫字母W~Z,不應按此規律轉換。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汾阳市| 禄劝| 车险| 九龙城区| 宁陵县| 乐亭县| 余庆县| 马鞍山市| 怀宁县| 资阳市| 长海县| 屏南县| 贞丰县| 绥江县| 清镇市| 平和县| 安达市| 三都| 广水市| 成安县| 建阳市| 怀集县| 攀枝花市| 钦州市| 博野县| 登封市| 六盘水市| 无为县| 德安县| 谢通门县| 徐水县| 开原市| 突泉县| 佛教| 简阳市| 桦南县| 梁山县| 札达县| 安多县| 札达县| 宾阳县|