用範例學習
學習其他語言的程式設計最佳方法之一,就是透過 提供大量範例程式因此建議您複製及貼上 將以下每個程式轉換為文字檔並加以編譯。然後嘗試實驗。 擴充這些範例程式,您就會更加熟悉 您將會更有信心地編寫來自 C++ 的程式 。
範例 1:讓編譯器正常運作!
複製下列傳統程式,請先複製並貼上 並編譯成文字檔提供編譯操作說明 請按這裡。
您可能已詳細完成教學課程中這個程式的細節 所以這裡不會逐行提供說明以下幾點 但有註意可讀性的部分。這是指留言 以及格式,讓程式更容易閱讀、瞭解及維護
- 我們編寫的每項程式都以標頭註解開頭,提供名稱 其聯絡資訊、簡短說明和使用方式 (如有相關)。每個函式都從作業和使用方式的註解開始。
- 我們會在程式碼出現時,以完整的句子加入說明註解 而非記錄本身。舉例來說,如果處理過程很複雜、沒有明顯影響 有趣或值得關注的議題
- 請一律使用描述性名稱:變數會以小寫字詞分隔 透過 _,如 my_variable 所示。函式名稱會使用大寫字母來標記字詞, 如同 MyExcitingFunction() 中一樣常數開頭為「k」並使用 。
- 縮排是兩個倍數的倍數。第一層是兩個空格如果進一步 需要縮排,而使用四個空格、六個空格等。
// hello.cpp: Maggie Johnson
// Description: a program that prints the immortal saying "hello world"
#include <iostream>
using namespace std;
int main() {
cout << "Hello World!" << endl;
return 0;
}
試試以下實驗:
- 最重要的是,確保您能夠編譯並執行這個程式。
- 修改上述程式,顯示「Hello World!」平均跑了 4 次 共 6 行,每一行都列印在 17 個空格的欄位中。適合放置郵件用途 執行這個步驟請按這裡 瞭解如何透過 Cout 設定輸出格式請按這裡 查看解決方案
- 使用您剛才完成的程式,看看如何輸出「Hello 全世界!」在 17 個空格的欄位中,靠左對齊 (預設為 靠右對齊)。按這裡查看解決方案。
範例 2:取得輸入內容
在 C++ 中,使用 cin 即可輕鬆地從鍵盤取得輸入內容。範例如下:
// get_input.cpp: Maggie Johnson
// Description: Illustrate the use of cin to get input.
#include <iostream>
using namespace std;
int main() {
int input_var = 0;
// Enter the do while loop and stay there until either
// a non-numeric is entered, or -1 is entered. Note that
// cin will accept any integer, 4, 40, 400, etc.
do {
cout << "Enter a number (-1 = quit): ";
// The following line accepts input from the keyboard into
// variable input_var.
// cin returns false if an input operation fails, that is, if
// something other than an int (the type of input_var) is entered.
if (!(cin >> input_var)) {
cout << "You entered a non-numeric. Exiting..." << endl;
break;
// exit the do while loop
}
if (input_var != -1) {
cout << "You entered " << input_var << endl;
}
} while (input_var != -1);
cout << "All done." << endl;
return 0;
}實驗:
- 發生輸入錯誤時,串流就會「中斷」。五金退貨
false,程式就會停止。防範這類錯誤非常重要
就像我們在上方計畫中一樣如果想從錯誤中復原
而不是讓程式停止?請從以下兩個步驟中還原:
錯誤訊息:
- 清除 cin.clear() 的錯誤。
- 從訊息串中移除不正確的字元。方法很簡單,只要使用 cin.ignore() 即可。
請使用這兩個步驟編寫一個從錯誤輸入中復原的程式。使用 ,透過 Google 搜尋這些方法的運作方式。如需解決方案,請按這裡。
範例 3:這個程式會輸出什麼內容?
#include <iostream>
using namespace std;
int main() {
cout << " 1\t2\t3\t4\t5\t6\t7\t8\t9" << endl << "" << endl;
for (int c = 1; c < 10; c++) {
cout << c << "| ";
for (int i = 1; i < 10; i++) {
cout << i * c << '\t';
}
cout << endl;
}
return 0;
} 範例 4:分解技巧使一切更輕鬆...
現在就開始編寫電腦遊戲吧!第一,較為簡單 但這是開始我們的任務是編寫程式來實作猜測 遊戲。我們的程式會產生 0 到 100 之間的隨機數字。播放器必須 猜猜密碼程式會提供提示,例如「非常高」或「那是 過低」直到玩家最後猜到秘密號碼為止。
我們將以三個步驟完成這個遊戲。
- 瞭解如何在指定範圍內產生隨機數字。
- 建立主要函式,可處理玩家猜測的字詞,並提供 提示
- 新增系統允許多次猜測所需的值,直到玩家猜測為止 號碼。
這個開發程序稱為「分解」 子工作中,每個子工作都可以輕鬆執行
從步驟 1 開始,執行 Google 搜尋,瞭解如何產生隨機號碼 開發應用程式請嘗試搜尋「rand C++」。這裡是 我們的解決方案
針對步驟 2,我們需要從播放器接收整數輸入內容 (適當 進行 cin 錯誤檢查),然後比對密碼是否存在。嘗試並撰寫 請務必自行檢查遊戲的這個部分,再檢查 解決方案。
最後,我們需要新增迴圈,持續收集玩家的猜測資訊 直到他們最後猜到秘密號碼為止完成本章節的 計畫,您可以查看我們的解決方案。
解構是程式設計人員必須學習的重要技能之一。 能夠將任務拆解成易於管理的部分 不論專案規模大小或規模,都很重要以下是一些 還能練習分解的其他機會
- 許多日常工作都有助於培養解構技能。
這可能會意外發現您的想法真的實現了!
例如,我得清理一個很混亂的廚房 小女孩正烤一個蛋糕) 我把任務拆開來做規畫 防止之後重做我不想清洗 如果吧台上有很多需要清理的東西,我去清理 因為他們之後可能必須再次爬樓梯也許是我將所有食材 先進行;將所有餐點移到接收器中清理計數器清洗 餐點;最後來清潔地板有其他執行方式 但透過先思考這類問題,我有助於定義 不必重新執行
以日常工作做為發展分解技能的範例。 誰知道,還能提高你在家中的效率!
- 兩個整數的最大公因數是指
會平均分配兩者例如 gcd(12, 18) = 6, gcd(-4, 14) = 2。
「gcd」是最有效率的運算方式,就是使用 Euclidean 演算法。寫作
一個程式,其中的函式會針對兩個整數計算 gcd。請嘗試
直接執行函式 - 這有助您瞭解演算法如何
能夠正常運作。
明確定義子工作,例如找出歐幾里德的程式碼 演算法;為演算法建立非遞迴函式;以此類推:這裡為 我們的解決方案
範例 5:數學解謎
運算的其中一項力量是 暴力搜尋 解決問題試用和錯誤功能對於某些問題沒有幫助。 事實上,電腦特別擅長解決這類問題。請考慮以下幾點:
馬 $10 美元、豬比 $3 美元,兔子只有 $0.50 美元。農夫買了 100 件 每隻動物 $100 美元,他買了幾隻動物?
這個問題有個非常簡單的解決方式。看看是否能找到 ,再開始觀看 我們的產品。
你也可以試試另一個做法:
你可以用多少方式,在書架上整理 6 本不同書籍 (由左至右)?
這次我們只會為您提供解決方案,並讓您編寫程式: 720。
範例 6:建議參考的字串
以下的程式會輸出什麼?
#include <iostream>
using namespace std;
int main() {
string str1 = "To be or not to be, that is the question";
string str2 = "only ";
string str3 = str1.substr(6, 12);
str1.insert(32, str2);
str1.replace(str1.find("to be", 0), 5, "to jump");
str1.erase(9, 4);
cout << str1 << endl;
for (int i = 0; i < str3.length(); i++)
cout << str3[i]; cout << endl;
}按一下 這裡取得協助。
範例 7:分解的後續步驟 - 您工作的第一天
你剛剛是 ExerShoe 公司的銷售專員,這家公司專門擔任 高階運動鞋,每雙 225 美元左右。老闆已給予你 有三種補償選項,您必須在一開始 天:
- 每週 $600 美元的直接薪資;
- 薪資為每小時 $7.00 美元,外加 10% 的佣金;
- 無薪資,但每雙鞋售出 20% 佣金和 $20 美元
你是 C++ 程式設計專家,知道如何編寫程式來 決定最佳薪酬選項
對大型程式進行分解的常見做法是 主要函式,為解決問題的大綱。接著: 我們會編寫函式來執行每項工作
以下是主要計畫的第一段憑證:
GetInput(WeeklySales); CalcMethod1(WeeklySales); CalcMethod2(WeeklySales); CalcMethod3(WeeklySales);
請確認您是否可以實作這些函式,再參閱 解決方案。
範例 8:哪些地區可使用這項服務?
下列程式的輸出內容為何?
// scope.cpp, Maggie Johnson
// Description: A program to illustrate different scopes
#include <iostream>
using namespace std;
int a = 18;
int b = 6;
int function1(int a, int b) {
return a - b;
}
int function2() {
int c;
c = a + b;
return c;
}
int main() {
int b = 12;
int c = 0;
a = function1(b, a);
c = function2();
cout << "a: " << a << " b: " << b << " c: " << c << endl;
}選好答案後,請到這裡查看我們註解版本的程式碼。
範例 9:處理檔案
C++ 中的檔案處理是使用 fstream 執行。如要儲存檔案 宣告串流,然後使用「out」開啟模式。檢查此項目 。
// file.cpp, Maggie Johnson
// Description: An illustration of file processing
#include <fstream>
#include <iostream>
using namespace std;
int main() {
char first_name[30], last_name[30]; int age;
char file_name[20];
// Collect the data.
cout << "Enter First Name: "; cin >> first_name;
cout << "Enter Last Name: "; cin >> last_name;
cout << "Enter Age: "; cin >> age;
cout << endl << "Enter the name of the file: "; cin >> file_name;
// Create an ofstream called People, open the stream for output.
ofstream People(file_name, ios::out);
// Write the output to the stream.
People << first_name << endl << last_name << endl << age << endl; return 0;
} - 試試看能否瞭解如何開啟剛剛建立的檔案,然後顯示 實體媒介包括儲存空間陣列 傳統硬碟、磁帶和 USB 隨身碟等請參閱這裡提供的解決方案。
- 現在,請確認您是否能夠修改這個程式,以便讓使用者輸入多個 會透過迴圈儲存資料記錄。我們也想讀取所有資料 請參閱這裡提供的解決方案。
現在您可以開始嘗試一些運動和 專案!
身為 Google 軟體工程師
歡迎閱讀這篇文章 網站。
運動與專案
下列運動將會 讓基本 C++ 更有經驗我們並未針對這些練習提供解決方案 建立自己的專案 因為我們鼓勵您與其他同學合作 稍後您會在 BigQueryML AutoML 和自訂訓練中使用這些模型
- 板球常有的板球按照目前溫度的比例呈現。
將板球每分鐘朗讀的次數增加 40 次,再除以 40
乘以 4 即可產生隨機性參數編寫能做為輸入內容的程式
每分鐘的鬧鈴數量,以及目前的溫度。適用對象
例如
Number of chirps: 120 The temperature is: 40.0 degrees.
- 編寫用於計算程式設計課程最終成績的程式
所需內容評分機制如下:
Final grades will be based on the following: 40% Assignments 15% Midterm Examination 35% Final Examination 10% Class Participation Grade
您的程式應要求使用者提供四個作業分數:中期 最終和各階段的成績然後計算並列印最終分數。 計算方式是將四項作業分數加總 再乘以 0.4 (40%)。接著將中期分數乘以 再 0.15 時,最終比 0.35 截止,活動報名截止日期為 0.1。接著是 將這些乘法的結果相加。
在這個程式中,您可以使用函式。您可以建立函式 取得輸入內容,方法是將要顯示的字串做為參數傳入 應該在容易解釋的口袋中以下是執行作業的範例:
Enter the score for the first assignment. 75 Enter the score for the second assignment. 85 Enter the score for the third assignment. 82 Enter the score for the fourth assignment. 94 Enter the score for the midterm. 81 Enter the score for the final. 89 Enter the score for the section grade. 100 The final grade is: 86.9
- 隨著電子碼錶越來越便宜且準確無誤
可能也無法準確測量時間編寫程式
產生的輸入內容 (以秒為單位)
代表小時、分鐘和秒鐘例如:
Number of seconds: 3662 Hours: 1 Minutes: 1 Seconds: 2
- 假設我們要列印以下項目的橫幅:
「免費大力推薦威脅」
我們的字母看起來相當大,因為這是橫幅:
敬上 依此類推FFFFF F FFF F F EEEEE E EEE E EEEEE
做得好,您可能會注意到 把所有凹槽放入主函式後,速度會更快 以便放入函式所以我們可以有「printE」函式 和「printZ」函式等。
使用函式編寫程式,為字詞或詞組建立橫幅 大量重複的字母可能的應用方式如下:
FREEZY BREEZE MAKES FLEAS SNEEZE TWEETLE BEETLE PADDLE BATTLE SIX SICK CHICKS KICK SUE SEWS SUE'S SOCKS BEN BENDS BIM'S BROOM
- 這裡是「魔法數字」問題:要求使用者輸入三位數的號碼
第一位數大於最後一個位數的數字。您的程式將撤銷
並將撤銷次數從原始數字減去撤銷。最後
反轉產生的數字,然後將該數字加回去反轉的形式。輸出
最終結果。使用者輸入的原始數字必須是整數
而非 3 個字元思考如何編寫會傳遞
做為輸入值,並傳回該數字的相反數。範例:
input number: 901 reverse it: 109 subtract: 901 - 109 = 792 reverse it: 297 add: 297 + 792 = 1089
- 根據法律規定,食品製造商必須設有有效期限
但法律有漏洞
到期日為任何特定表單舉例來說
斯瓦希里文,仍不合法。
Nadine 是 Ralph Nader 的第三堂表兄弟,是自認的食物品質間諜。 她知道許多食品產品製造商已開始將 產品到期日,以免客戶知道
但編碼確實能讓零售商知道到期日 或是他們願意接受
常見的編碼方法如下:
- 將 1 月到 12 月的月份編碼為「A」到「L」
- 將日期的每個數字編碼為「Q」到「Z」
- 將年份編碼為「A」到「Z」代表 1 到 26 新增到 1995
娜娜在今年發現了一塊特別可疑的麵包,《ARZM》。 編寫節目來判斷日期。
- 這是知名的卡片技巧。要求使用者輸入 三位數的號碼您可以將數字視為 ABC (其中 A、B、C 是三個) 數字)。現在,請找出 ABC、BCA 和 CAB 除以 11。我們將這些餘數命名為 X、Y Z。請將其新增為 X+Y、Y+Z、Z+X。如果有任何加總是奇數、增加或 減少 11 (無論運算會降低正數) 超過 20;請注意,如果總和是 9,請回報此狀況並停止處理程序)。最後 將所有總和除以半數產生的數字為 A、B、C。寫作 實作此演算法的程式。
以下內容應先分解,再編寫程式。 盡可能使用函式建立結構完善的計畫。