中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

html5網(wǎng)站編寫青島網(wǎng)站制作推廣

html5網(wǎng)站編寫,青島網(wǎng)站制作推廣,銷售型網(wǎng)站如何做推廣,阿里免費logo生成器博客主頁: [小????????] 本文專欄: C 文章目錄 💯前言💯題目描述輸入格式:輸出格式: 💯我的做法代碼實現(xiàn): 💯老師的做法代碼實現(xiàn): 💯對比分析&am…

在這里插入圖片描述

博客主頁: [小????????]
本文專欄: C++

文章目錄

  • 💯前言
  • 💯題目描述
    • 輸入格式:
    • 輸出格式:
  • 💯我的做法
    • 代碼實現(xiàn):
  • 💯老師的做法
    • 代碼實現(xiàn):
  • 💯對比分析
  • 💯拓展與優(yōu)化
  • 💯總結(jié)
    • 一開始的錯誤做法


在這里插入圖片描述


💯前言

  • 在編程學習過程中,C++ 語言為我們提供了強大的控制能力和靈活的操作方式。在本次學習中,我們面對的是一個簡單的算術口算題目的處理任務。任務要求通過程序自動處理多個口算算式,輸出完整的算式、其計算結(jié)果,并計算算式的總長度。這個問題看似簡單,但可以通過多種方式解決,過程中涉及到字符串拼接、運算符判斷和數(shù)據(jù)存儲等基礎編程技術。
    在本次討論中,我們將深入分析兩種不同的解決方法:我提出的做法與老師的做法。我們將詳細對比這兩種方法的思路、代碼實現(xiàn),并進行優(yōu)化和拓展,以便對 C++ 編程的理解更為深刻。
    C++ 參考手冊
    在這里插入圖片描述

💯題目描述

P1957 口算練習題
在這里插入圖片描述

題目要求我們處理一組口算題目,每道題目可能包括加法、減法或乘法操作。每道題的輸入由兩個或三個數(shù)據(jù)組成,若有三個數(shù)據(jù),第一個表示運算符(a 表示加法,b 表示減法,c 表示乘法),接下來的兩個數(shù)據(jù)為參與運算的數(shù)值;若只有兩個數(shù)據(jù),則表示繼承上一道題的運算符。

我們需要輸出每道題的完整算式,并且輸出算式的總長度。以下是題目的完整描述:

輸入格式:

4
a 64 46
275 125
c 11 99
b 46 64

輸出格式:

64+46=110
9
275+125=400
11
11*99=1089
10
46-64=-18
9

💯我的做法

我的實現(xiàn)方法著眼于輸入的處理與字符串的拼接,基本流程如下:

  1. 輸入讀取:首先讀取題目數(shù)量 i,然后循環(huán)處理每一道算式。每道算式可以是完整的帶有運算符的輸入,也可以是繼承上題的運算符。
  2. 算式計算:對于每道算式,根據(jù)運算符 a, b, 或 c 來決定進行加法、減法或乘法操作。
  3. 字符串拼接:利用字符串的拼接(+=)來構造完整的算式表達式,并計算結(jié)果。
  4. 輸出:輸出每道算式及其結(jié)果,最后輸出算式的總長度。

代碼實現(xiàn):

#include <iostream>
#include <string>
using namespace std;int main()
{int  i;cin >> i;int a, b;string temp, ysf;while(i--){string s;cin >> temp;if(temp == "a" || temp == "b" || temp == "c"){cin >> a >> b;if(temp == "a"){s += to_string(a);s += '+';s += to_string(b);s += '=';s += to_string(a + b);}else if(temp == "b"){s += to_string(a);s += '-';s += to_string(b);s += '=';s += to_string(a - b);}else if(temp == "c"){s += to_string(a);s += '*';s += to_string(b);s += '=';s += to_string(a * b);}ysf = temp;}else{a = stoi(temp);cin >> b;if(ysf == "a"){s += to_string(a);s += '+';s += to_string(b);s += '=';s += to_string(a + b);}else if(ysf == "b"){s += to_string(a);s += '-';s += to_string(b);s += '=';s += to_string(a - b);}else{s += to_string(a);s += '*';s += to_string(b);s += '=';s += to_string(a * b);}}cout << s << endl;cout << s.size() << endl;}return 0;
}

💯老師的做法

老師的做法與我的實現(xiàn)思路相似,但有一些不同之處。老師的代碼在結(jié)構上稍顯復雜,特別是在輸入和字符串拼接部分的處理上,且做了更多的優(yōu)化來處理繼承運算符的情況。

代碼實現(xiàn):

int main()
{int n = 0;cin >> n;string op;string num1;string num2;string last;int ret = 0;while (n--){string ans;cin >> op;if (op == "a" || op == "b" || op == "c"){cin >> num1 >> num2;int n1 = stoi(num1);int n2 = stoi(num2);ans += num1;if (op == "a"){ret = n1 + n2;ans += "+";}else if (op == "b"){ret = n1 - n2;ans += "-";}else{ret = n1 * n2;ans += "*";}last = op;}else{num1 = op;cin >> num2;int n1 = stoi(num1);int n2 = stoi(num2);ans += num1;if (last == "a"){ret = n1 + n2;ans += "+";}else if (last == "b"){ret = n1 - n2;ans += "-";}else{ret = n1 * n2;ans += "*";}}ans += (num2 + "=" + to_string(ret));cout << ans << endl;cout << ans.size() << endl;}return 0;
}

💯對比分析

  1. 結(jié)構差異

    • 我的做法中,我們根據(jù)輸入的運算符判斷是否更新運算符,并且用 last_op 來記住上一題的運算符,保證后續(xù)算式的正確計算。
    • 老師的做法稍微復雜一些,采用了更顯式的變量存儲(如 last 變量)。另外,老師在每次處理完一個算式后,拼接完成的字符串才會輸出。
  2. 字符串拼接

    • 我的做法通過直接將 +、-、* 等運算符拼接進 ans 字符串。
    • 老師的做法在拼接過程中,將運算符的插入和結(jié)果的轉(zhuǎn)換更加細化,也做了更精確的類型轉(zhuǎn)換處理(使用 stoi 將字符串轉(zhuǎn)換為整數(shù))。
  3. 處理繼承運算符

    • 我的做法是依賴 last_op 來判斷是否使用上一題的運算符。
    • 老師的做法在這一點上比較細致,利用了 last 變量來確保后續(xù)運算使用的是正確的運算符。

💯拓展與優(yōu)化

  1. 代碼優(yōu)化

    • 對于運算符和結(jié)果拼接部分,使用了 += 拼接字符串,但如果問題較為復雜或涉及到更多操作,可能會導致拼接效率不高。可以考慮使用 ostringstream 來拼接字符串,這樣可以提高性能。
  2. 用戶輸入優(yōu)化

    • 可以增加輸入校驗,避免用戶輸入錯誤的數(shù)據(jù)類型(如非數(shù)字輸入等)。
  3. 更廣泛的應用

    • 這類算術問題不僅限于加法、減法和乘法。如果要處理更多運算符(如除法、取余等),可以通過擴展運算符判斷來完成。
  4. 函數(shù)化

    • 該問題的不同部分(如運算符判斷、算式拼接、輸出結(jié)果等)可以通過函數(shù)化進行封裝,提高代碼的模塊化和復用性。

💯總結(jié)

本次學習和討論了如何用 C++ 語言處理簡單的口算算式,通過兩種不同的實現(xiàn)方法(我的做法與老師的做法),我們掌握了如何判斷運算符、處理繼承運算符的情況,并輸出結(jié)果與算式的總長度。通過對比分析,我們看到了兩種做法的異同與各自的優(yōu)缺點。

在優(yōu)化方面,我們提出了改進的思路,如何提高代碼性能、增強可擴展性,以及如何處理更多復雜的運算符類型。總體來說,這道題目的解決方案為我們提供了一個很好的編程練習機會,幫助我們更好地理解字符串操作、控制流程和輸入輸出的細節(jié)。

一開始的錯誤做法

#include <iostream>
#include <string>
using namespace std;int main()
{int i = 0;cin >> i;int opera = 0;string s;while(i--){int index = 0, a = 0, b = 0;while(cin >> s){index++;if(index == 1){if(s[i] == 'a')opera = 1;else if(s[i] == 'b')opera = 2;else if(s[i] == 'c')opera = 3;elsea = stoi(string(1, s[i]));  // 將字符 s[i] 轉(zhuǎn)換為字符串后再使用 stoi}if(index == 2 && a != 0)b = stoi(string(1, s[i]));else if(index == 2 && a == 0)a = stoi(string(1, s[i]));if(index == 3)b = stoi(string(1, s[i])); }if(opera == 1)cout << a << "+" << b << "=" << (a + b) << endl;else if(opera == 2)cout << a << "-" << b << "=" << (a - b) << endl;elsecout << a << "*" << b << "=" << (a * b) << endl;}return 0;
}

還有,要注意變量的作用域


在這里插入圖片描述


在這里插入圖片描述在這里插入圖片描述在這里插入圖片描述在這里插入圖片描述在這里插入圖片描述在這里插入圖片描述在這里插入圖片描述在這里插入圖片描述在這里插入圖片描述在這里插入圖片描述

學習C++的建議

C++ 是一門強大且廣泛應用的編程語言,無論是系統(tǒng)開發(fā)、游戲開發(fā)還是高性能計算,它都有不可替代的地位。然而,學習C++的道路可能是陡峭的,為了幫助你更高效地掌握這門語言,我總結(jié)了一些學習建議和經(jīng)驗。


1. 理解C++的基礎
學習重點:

  1. 掌握基本語法
    • 學會聲明變量、條件語句、循環(huán)、函數(shù)等核心語法。
    • 掌握數(shù)組、指針、引用等基礎知識。
  2. 熟悉標準輸入輸出
    • 掌握 cincout 的用法。
    • 理解格式化輸出,例如 std::setwstd::fixed
  3. 記住編譯器的角色
    • 理解源代碼如何通過編譯器轉(zhuǎn)換為可執(zhí)行程序,選擇一款好的IDE(如Visual Studio、Clion、VSCode)。

建議:用大量小程序練習這些基礎語法,比如寫一個計算器、模擬猜數(shù)字游戲等。


2. 深入學習C++的特性
學習重點:

  1. 面向?qū)ο缶幊?#xff08;OOP)
    • 理解類和對象,熟悉如何定義類、成員變量和成員函數(shù)。
    • 掌握封裝、繼承、多態(tài)三大核心特性。
  2. 內(nèi)存管理
    • 理解指針的用法,掌握動態(tài)內(nèi)存分配(newdelete)。
    • 學習如何避免內(nèi)存泄漏,熟悉智能指針(如std::unique_ptrstd::shared_ptr)。
  3. 標準模板庫(STL)
    • 熟悉常用的容器(如vector、mapset)和算法(如sort、find)。
    • 掌握迭代器的用法。
  4. 異常處理
    • 學習使用try-catch塊處理異常。
    • 理解異常的用途以及如何設計健壯的代碼。

建議:嘗試開發(fā)一個小型項目,比如一個學生管理系統(tǒng),綜合應用類、STL、指針和動態(tài)內(nèi)存分配。


3. 掌握進階內(nèi)容
學習重點:

  1. 模板
    • 理解函數(shù)模板和類模板,掌握泛型編程思想。
    • 學習模板特化和模板元編程的基本概念。
  2. 多線程與并發(fā)
    • 學習 C++11 提供的多線程支持(如std::thread)。
    • 熟悉互斥鎖(std::mutex)和條件變量(std::condition_variable)。
  3. C++與C的兼容性
    • 學習如何在C++中使用C語言代碼,理解C和C++的區(qū)別。
    • 掌握C風格字符串(char[])和C++字符串(std::string)的轉(zhuǎn)換。

建議:在這一階段,可以挑戰(zhàn)更復雜的項目,比如開發(fā)一個小型的HTTP服務器,學習網(wǎng)絡編程并結(jié)合多線程。


4. 學習資源與實踐方法
學習資源:

  1. 書籍
    • 《C++ Primer》:非常適合初學者的經(jīng)典書籍。
    • 《Effective C++》:進階學習C++最佳實踐的指南。
    • 《The C++ Programming Language》:Bjarne Stroustrup(C++之父)的權威著作。
  2. 在線課程
    • Coursera 上的 C++ 編程課程。
    • YouTube 上免費的 C++ 系列教程。
  3. 社區(qū)與文檔
    • 參與C++相關的論壇(如CSDN、Stack Overflow)。
    • 閱讀官方文檔(https://en.cppreference.com)。

實踐方法:

  1. 多寫代碼,多調(diào)試
    • 每學一個概念后,寫至少兩個示例代碼并進行調(diào)試。
  2. 做小項目
    • 從簡單的控制臺程序開始,比如文件讀寫、計算器、小游戲等。
    • 慢慢過渡到圖形界面或網(wǎng)絡程序開發(fā)。
  3. 閱讀他人代碼
    • 閱讀開源項目的代碼,理解優(yōu)秀代碼的設計思路。
  4. 參加編程比賽
    • 比如 LeetCode 或 Codeforces,可以幫助你提升算法能力和C++的熟練度。

5. 保持耐心與興趣
學習C++可能會面臨以下困難:

  1. 復雜的語法:如模板、智能指針、多線程等。
  2. 調(diào)試困難:指針錯誤、內(nèi)存泄漏、未定義行為可能讓人頭疼。

如何應對:

  • 將大問題拆解成小問題,逐步解決。
  • 不斷重復基礎知識,以加深理解。
  • 保持興趣,嘗試一些有趣的項目,比如寫一個游戲、制作一個簡單的圖形程序。

小結(jié)
學習C++需要一個循序漸進的過程,從基礎語法到面向?qū)ο缶幊?#xff0c;再到進階的模板和并發(fā)編程,每一步都需要耐心和實踐。通過充分利用學習資源、進行大量編碼練習,以及挑戰(zhàn)實際項目,你一定可以成為C++的高手。記住,學習的核心在于理解,而非死記硬背。

祝你學有所成,享受C++編程的樂趣!


http://www.risenshineclean.com/news/29379.html

相關文章:

  • 網(wǎng)站可以做無形資產(chǎn)嗎優(yōu)化網(wǎng)站排名需要多少錢
  • 云表無代碼開發(fā)平臺baike seotl
  • 網(wǎng)站備案值得嗎打廣告的免費軟件
  • 專業(yè)做化妝品的網(wǎng)站在線生成html網(wǎng)頁
  • 怎么做淘寶客網(wǎng)站做淘客拼多多代運營一般多少錢
  • 佰匯康網(wǎng)站建設河南seo快速排名
  • 南京網(wǎng)站建設案例蘇州做網(wǎng)站哪家比較好
  • 嘉興網(wǎng)站制作軟件如何做一個網(wǎng)站
  • 有沒有幫人做簡歷的網(wǎng)站營銷型網(wǎng)站和普通網(wǎng)站
  • 只做襯衣網(wǎng)站百度seo排名優(yōu)化技巧分享
  • 帝國cms企業(yè)網(wǎng)站模板網(wǎng)站優(yōu)化方案案例
  • 怎么做網(wǎng)站能夠增加人氣鏈接提交入口
  • 政府網(wǎng)站建設方案范文—工作方案seo專員崗位職責
  • wordpress文章審核發(fā)郵件國內(nèi)seo公司
  • 高端做網(wǎng)站哪家好臨沂seo
  • 人大兩學一做專題網(wǎng)站深圳營銷型網(wǎng)站開發(fā)
  • 建應用網(wǎng)站百度pc網(wǎng)頁版
  • 網(wǎng)站格式圖片全國唯一一個沒有疫情的城市
  • 杭州 網(wǎng)站建設seo引擎優(yōu)化方案
  • 淘寶客網(wǎng)站怎么做推廣windows優(yōu)化大師要會員
  • 無錫大型網(wǎng)站建設公司公司網(wǎng)頁制作需要多少錢
  • 經(jīng)營閱讀網(wǎng)站需要怎么做排名優(yōu)化方法
  • 建設政府網(wǎng)站的目的意義百度推廣每年600元什么費用
  • 做調(diào)查賺錢的網(wǎng)站有哪些南寧優(yōu)化網(wǎng)站收費
  • 種植園網(wǎng)站模板無錫百度正規(guī)推廣
  • 桂林做網(wǎng)站的公司全國疫情最新數(shù)據(jù)
  • 計算機做網(wǎng)站開發(fā)需要什么證書seo這個職位是干什么的
  • 靈感集網(wǎng)站網(wǎng)絡營銷概念
  • 北京城鄉(xiāng)和住房建設部網(wǎng)站seo專員是干什么的
  • 網(wǎng)站建設開發(fā)能力很強的企業(yè)外貿(mào)公司一般怎么找客戶