實驗目的
1. 掌握c++中類c部分的編程知識: 數據類型,常量,變量,運算符,表達式,分支結構,循環結構
2. 掌握C++中數據輸入和輸出的基本方法
3. 熟練使用c++程序開發環境,掌握c++程序編寫、編譯、運行、調試的方法
實驗准備
實驗前,請圍繞以下內容結合教材、網絡檢索學習指定內容。
1. 開發環境使用 devc++中編寫、運行c++程序的步驟 code::blocks中編寫、運行、調試c++程序的步驟 參考鏈接 vs2017中編寫、運行、調試c++程序的步驟 參考鏈接
2. 簡單的c++程序結構 學習/復習教材「2.1.3 C++程序實例」
3. c++中數據輸入輸出的基本方法
學習/復習教材2.3節,學習C++中I/O流、預定義的插入符<<和提取符>>的基本用法。
4. if語句、switch語句、while語句、do…while語句的用法 學習/復習教材2.4節,通過示例理解背后簡單算法及c++分支語句、循環語句的用法。
5. 自定義數據類型: typedef,枚舉類型用法 學習/復習教材2.5節,結合示例理解枚舉類型和int型在類型轉換時的注意事項。
實驗內容
Part1: 驗證性內容
在c++開發環境中編寫、編譯、運行、調試一個簡單的c++程序
運行2.4節所有編程示例,理解c++編程基礎及I/O流對象cin,cout的基本用法
Part2: 編程練習
教材第2章習題2-28 教材第2章習題2-29 教材第2章習題2-32 教材第2章習題2-34
2-28 實現一個簡單的菜單程序,運行時顯示"Menu:A(dd) D(elete) S(ort) Q(uit),Select one:",提示用戶輸入。A表示增加,D表示刪除,S表示排序,Q表示退出。輸入為A、D、S時分別提示“數據已經增加、刪除、排序”,輸入為Q時程序結束。
(1)使用 if...else 語句
#include<iostream> using namespace std; int main(){ char m; while(1) { cout<<"Menu:A(dd) D(elete) S(ort) Q(uit),Select one:"; cin>>m; if(m=='A') cout<<"Data has added"<<endl; else if(m=='D') cout<<"Data has deleted"<<endl; else if(m=='S') cout<<"Data has sorted"<<endl; else if(m=='Q') break; else cout<<"Data error"<<endl; } }
運行結果
(2)使用switch語句
#include<iostream> using namespace std; int main(){ char m; while(1){ cout<<"Menu:A(dd) D(elete) S(ort) Q(uit),Select one:"; cin>>m; if(m=='Q') break; switch(m){ case 'A':cout<<"Data has added"<<endl;break; case 'D':cout<<"Data has deleted"<<endl;break; case 'S':cout<<"Data has sorted"<<endl;break; default:cout<<"Data error"<<endl;break; } } return 0; }
運行結果
2-29 用窮舉法找出1~100間的質數並顯示出來。分別使用while,do···while,for循環語句實現。
(1)使用while語句
#include<iostream> #include<math.h> using namespace std; int main(){ int number=2,i; while(number<100){ i=2; while(i<=sqrt(number)&&number%i!=0){ i++; } if(i>sqrt(number)) cout<<number<<" "; number++; } return 0; }
運行結果
(2)使用do···while語句
#include<iostream> #include<math.h> using namespace std; int main(){ int number=2,i; do{ i=1; do{ i++; }while((i<=sqrt(number)&&number%i!=0)); if(i>sqrt(number)) cout<<number<<" "; number++; } while(number<100); return 0; }
運行結果
(3)使用for語句
#include<iostream> #include<math.h> using namespace std; int main(){ int number,i; for(number=2;number<100;number++){ for(i=2;i<sqrt(number);i++) if(number%i==0) break; if(i>sqrt(number)) cout<<number<<" "; } return 0; }
運行結果
2-32 在程序中定義一個整型變量,賦予1~100的值。要求用戶猜這個數,比較兩個數的大小,把結果提示給用戶,直到猜對為止。分別使用while,do···while語句實現循環。
(1)使用while語句
#include<iostream> #include<cstdlib> #include<ctime> using namespace std; int main(){ srand(time(NULL)); int random_number=rand()%100+6; cout<<"Enter the number you guess between 1 and 100:"; int guess_number; cin>>guess_number; int wrong=1; while(wrong) { if(random_number>guess_number){ cout<<"bigger than your guess,guess again:"; cin>>guess_number; } else if(random_number<guess_number){ cout<<"smaller than your guess,guess again:"; cin>>guess_number; } else{ cout<<"congratulations!Guessed it!"<<endl; wrong=0; } } return 0; }
運行結果
(2)使用do···while語句
#include<iostream> #include<cstdlib> #include<ctime> using namespace std; int main(){ srand(time(NULL)); int random_number=rand()%100+6; cout<<"Enter the number you guess between 1 and 100:"; int guess_number; cin>>guess_number; int wrong=1; do { if(random_number>guess_number){ cout<<"bigger than your guess,guess again:"; cin>>guess_number; } else if(random_number<guess_number){ cout<<"smaller than your guess,guess again:"; cin>>guess_number; } else{ cout<<"congratulations!Guessed it!"<<endl; wrong=0; } } while(wrong); return 0; }
運行結果
2-34口袋中有紅、黃、藍、白、黑5種顏色的球若干。每次從口袋中取出3個不同顏色的球,問有多少種取法?
(1)有序的取法
#include<iostream> using namespace std; enum Ball{Red,Yellow,Blue,White,Black}; void transform(int number); int main(){ int count=0; for(int catch1=Red;catch1<=Black;catch1++) for(int catch2=Yellow;catch2<=Black;catch2++) for(int catch3=Blue;catch3<=Black;catch3++) { transform(catch1); transform(catch2); transform(catch3); cout<<endl; count++; } cout<<"There are "<<count<<" ways"<<endl; return 0; } void transform(int number){ switch(number){ case Red:cout<<"Red ";break; case Yellow:cout<<"Yellow ";break; case Blue:cout<<"Blue ";break; case White:cout<<"White "; break; case Black:cout<<"Black";break; } }
運行結果
(2)無序的取法
#include<iostream> using namespace std; enum Ball{Red,Yellow,Blue,White,Black}; void transform(int number); int main(){ int count=0; for(int catch1=Red;catch1<=Black;catch1++) for(int catch2=catch1+1;catch2<=Black&&catch2>catch1;catch2++) for(int catch3=catch2+1;catch3<=Black&&catch3>catch2;catch3++) { transform(catch1); transform(catch2); transform(catch3); cout<<endl; count++; } cout<<"There are "<<count<<" ways"<<endl; return 0; } void transform(int number){ switch(number){ case Red:cout<<"Red ";break; case Yellow:cout<<"Yellow ";break; case Blue:cout<<"Blue ";break; case White:cout<<"White "; break; case Black:cout<<"Black";break; } }
運行結果
評論:
https://www.cnblogs.com/zcq1224/p/10544256.html