藍橋杯之c++入門(一)【第一個c++程序】

目錄

  • 前言
  • 一、第?個C++程序
    • 1.1 基礎程序
    • 1.2 main函數
    • 1.3 字符串
    • 1.4 頭文件
    • 1.5 cin 和 cout 初識
    • 1.6 名字空間
    • 1.7 注釋
  • 二、四道簡單習題(點擊跳轉鏈接)
    • 練習1:Hello,World!
    • 練習2:打印飛機
    • 練習3:第?個整數
    • 練習4:字符三角形
  • 總結


前言

從今天開始更新關于藍橋杯備賽的相關文章,這個系列不會從頭到尾徹底的學習c++,但是可以帶領大家講c++主要在競賽中用的語句和語法詳細的過一遍,所以需要有一定的語言基礎,本人也通過文章來打卡學習;


一、第?個C++程序

1.1 基礎程序

#include <iostream> //頭?件
using namespace std; //使?std的名字空間
int main() //main函數
{cout << "hello world!" << endl; //輸出:在屏幕打印"hello world!"return 0;
}

現在看不太懂沒事我們就這個程序來對c++進行一個入門學習:

1.2 main函數

學過C語言的都知道:main 函數是程序的??,C++ 的程序不管有多少?代碼,都是從 main 函數開始執?的, main 函數也被叫做:主函數。 main 前?的 int 表? main 函數執?結束的時候返回?個整型類型的值,?在 main 函數的最后寫 return 0; 正好前后呼應。

  • main 函數是程序的??
  • main 函數有且僅有?個
  • ?個項?中可以有多個 .cpp ?件,但是只能有?個 main 函數(因為程序的??只能有?個)關于函數, 這?不做過多描述,我們后?有專?的函數章節來講解。

1.3 字符串

在 C 語?中,使?單引號括起來?個字符,表?字符字?值,?如: ‘1’ , ‘a’ ,使?雙引號括起來多個字符表??個字符串,?如: “abcdef” , “hello world” ,字符串中可以有?個或者多個字符,也可以沒有任何字符, “” 表?空字符串。上?代碼中的 “hello world!” 就是?個字符串。這類字符和字符串表?的?式在C++也完全?持的

在C++的 STL 中?引?了 string 來表?字符串,功能更加強?,C 語?不?持,后期會詳細介紹。
上述的代碼中字符串的內容可以根據你的需要變換,可以??試試。

1.4 頭文件

前?的代碼中,寫的,

 #include <iostream> 

就是在包含頭?件,頭?件的名字叫:iostream ,使? #include <> 的形式進?包含。 iostream ?件中的 io 指的是輸?(進?程序的信息,簡單理解就是可以給程序輸?數據)和輸出(從程序中輸出的信息,簡單理解就是程序會打印數據在屏幕上)。
在 C++ 程序中要完成輸?和輸出的操作會涉及到 iostream ?件中的多個定義,所以就要包含這個頭?件的。?如:代碼中的 cout 是輸出流對象,就是?來完成數據輸出的,就需要包含頭?件。除了 iostream 這個頭?件之外,C++還有哪些頭?件呢?
C++的編譯器?帶了很多頭?件,每個頭?件都?持?組特定的?具。

C++庫函數相關頭?件:https://zh.cppreference.com/w/cpp/header
在代碼中如果使?了某個頭?件中的定義,就得包含對應的頭?件。

  1. 在C語?中頭?件的擴展名是 .h ,但是C++中的?法發?了?些變化,對?式C的頭?件保留了擴展名 .h ,但是C++??的?件沒有擴展名了。C語?頭?件:https://zh.cppreference.com/w/c/header
  2. 有些C的頭?件被轉換成C++頭?件,這些?件名被重命名,去掉了.h擴展名,并在?件名的前?加上了前綴c(表?來?C語?);例如:C語?中有關數學的頭?件名字是math.h ,在C++中就是 cmath 。當然還得注意,有時頭?件的C語?版本和C++版本相同,?有時候,新版本做了?些修改。

頭?件的命名約定:

頭文件類型約定實例說明
C++舊式風格.h結尾<iostream.h>C++程序可以使用,一些新的IDE可能不再支持
C舊式風格.h結尾<math.h>C、C++程序可以使用
C++新式風格沒有擴展名<iostream>C++程序可以使用,使用namespace std
轉換后的C加上前綴,沒有擴展名<cmath>C++程序可以使用,可能包含不是C的特性名

1.5 cin 和 cout 初識

cout << “hello world!” << endl; 這句代碼在上?的程序中是最重要的代碼,其他所有的代碼都是為了編寫這句代碼。
代碼中的 cout 是標準輸出流對象(針對控制臺,也就是屏幕),其實還有標準輸?流對象(針對的是鍵盤) cin 。
cout 是告訴程序把后?雙引號中的內容打印到標準輸出設備(屏幕)上,雙引號中的內容可以替換的。

#include <iostream>
using namespace std;
int main()
{int num;cin >> num; //獲取標準輸?cout << num << endl; //對獲取到的結果標準輸出return 0;
}

學過C語言的兄弟們就發現這與C語言中的printf和scanf函數非常的像;但其實兩者也有所以不同:

  1. cin 和 cout 是全局的流對象, cin 負責輸?數據, cout 負責輸出數據。
  2. endl 是 C++ 中?個特殊的操作符,效果是換?和刷新緩沖區,使?時必須包含在iostream 頭?件。
  3. << 是流插?運算符和 cout 配合使?>> 是流提取運算符,和 cin 配合使?,兩者容易混淆,?家?定要仔細區分,不可混?。
  4. 使?C++輸?輸出更?便,不需要像 printf / scanf 輸?輸出時那樣,需要?動控制格式。C++的輸?輸出可以?動識別變量類型。(后期會講到,再慢慢體會)
#include <iostream>
using namespace std;
int main() 
{float score = 0;cin >> score;//直接讀取的就是浮點數cout << score;//直接輸出的就是浮點數return 0;
}

1.6 名字空間

using namespace std; 這句代碼的意思是:使用名字空間 std (名字空間也叫命名空間)。

為了理解什么是名字空間,名字空間要解決什么問題,?家先看?下下?的例?:

?個學校?學?可能有重名,假設這個學校有3個叫張三的同學,那么每次?師喊張三的時候,其他
兩個張三就會誤會,是不是在喊??,這就是因為這三個張三其實在同?個范圍(空間)內的,就會
名字的沖突。
但是如果這個學校的學?分為三個班,分別是1班、2班、3班,把三個張三分別安排在不同的班級,
那么?師以后喊:1班的張三,那么2班、3班的張三就不會誤會了,這是不是就很好的解決了名字沖
突的問題。

其實這?的本質就是:1. 將名字進?了隔離,2. 在使?名字之前先交待使?哪個班級的名字
在這里插入圖片描述
在C++中,變量、函數和類都是?量存在的,這些變量、函數和類的名稱如果都存在于全局作?域中,可能會導致很多沖突。使? 名字空間 的?的是對標識符的名稱進?隔離,以避免命名沖突或名字污染, namespace 關鍵字的出現就是針對這種問題的。

std 是C++標準庫的名字空間名,C++將標準庫的定義實現都放到這個命名空間中,當我們需要使?標準庫中的內容時,就需要加上: using namespace std當有了這句代碼的時候,表?名字空間 std 中信息都是可?和可?的,?如: cin 、 cout 、 endl 等
在這里插入圖片描述
名字空間也是根據需要??可以定義的,這?就不加詳細介紹,可以??拓展學習。
當然直接使? using namespace std; 是?種簡單粗暴的做法,直接這樣使?,就意味著后續在
std 這個名字空間中的各種定義都可以直接使?,但是我們往往只是使?部分。所以名字空間其實也
可以這樣使?:

#incldue <iostream>
int main()
{std::cout << "hello world" << std::endl;return 0;
}

代碼中的 std::cout 的意思就是使? std 名字空間中的 cout 。
也就是用那個就拿那個,上面的就是直接一起拿來,想用就用;

采? std::cout 這種寫法,如果頻繁使?,在算法競賽中?較?煩,耽擱時間但是在企業中做軟件開發基本上都這樣寫的,這樣寫更好的避免名字沖突的問題,后期在慢慢琢磨。

1.7 注釋

C++?主要有兩種形式:單?注釋 // 和多?注釋 /* */
注釋本來是對代碼進?解釋的?字,要放在代碼中,但是??需編譯。注釋是給程序員??看的,編
譯器會忽略注釋,基于注釋是被編譯器忽略的這個特點,在代碼中有些代碼不再需要的時候也會使?
注釋的?式屏蔽。

單?注釋:指的是當前?不參與編譯和運?;
多?注釋:指的是被包含在內的多?不參與編譯和運?;

在VS環境中注釋和取消注釋的快捷鍵: Ctrl + K + C , Ctrl + K + U
在DevC++中注釋和取消注釋的快捷鍵: Ctrl + /

二、四道簡單習題(點擊跳轉鏈接)

練習1:Hello,World!

int main()
{cout << "Hello,World!" << endl;return 0;
}

練習2:打印飛機

int main()
{cout << "     **     " << endl;cout << "     **     " << endl;cout << "************" << endl;cout << "************" << endl;cout << "    *  *    " << endl;cout << "    *  *    " << endl;return 0;
}

練習3:第?個整數

#include <iostream>
using namespace std;
int main()
{int a,b;cin >> a >> b;cout << b << endl;return 0;
}

練習4:字符三角形

#include <iostream>
using namespace std;
int main()
{char c;cin >> c;cout << "  " << c << endl;cout << " " << c << c << c << endl;cout << c << c << c << c << c<< endl;return 0;} 

總結

這期我們主要講了c++入門的知識點,并加以練習;下期見。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/67033.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/67033.shtml
英文地址,請注明出處:http://en.pswp.cn/web/67033.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【C++初階】第11課—vector

文章目錄 1. 認識vector2. vector的遍歷3. vector的構造4. vector常用的接口5. vector的容量6. vector的元素訪問7. vector的修改8. vector<vector\<int\>>的使用9. vector的使用10. 模擬實現vector11. 迭代器失效11.1 insert插入數據內部迭代器失效11.2 insert插入…

【AIGC學習筆記】扣子平臺——精選有趣應用,探索無限可能

背景介紹&#xff1a; 由于近期業務發展的需求&#xff0c;我開始接觸并深入了解了扣子平臺的相關知識&#xff0c;并且通過官方教程自學了簡易PE工作流搭建的技巧。恰逢周會需要準備與工作相關的分享主題&#xff0c;而我作為一個扣子平臺的初學者&#xff0c;也想探索一下這…

mysql 學習6 DML語句,對數據庫中的表進行 增 刪 改 操作

添加數據 我們對 testdatabase 數據中 的 qqemp 這張表進行 增加數據&#xff0c;在這張表 下 打開 命令行 query console 在 軟件中就是打開命令行的意思 可以先執行 desc qqemp; 查看一下當前表的結構。 插入一條數據 到qqemp 表&#xff0c;插入時要每個字段都有值 insert…

Java Web-Request與Response

在 Java Web 開發中&#xff0c;Request 和 Response 是兩個非常重要的對象&#xff0c;用于在客戶端和服務器之間進行請求和響應的處理&#xff0c;以下是詳細介紹&#xff1a; Request&#xff08;請求對象&#xff09; Request繼承體系 在 Java Web 開發中&#xff0c;通…

李沐vscode配置+github管理+FFmpeg視頻搬運+百度API添加翻譯字幕

終端輸入nvidia-smi查看cuda版本 我的是12.5&#xff0c;在網上沒有找到12.5的torch&#xff0c;就安裝12.1的。torch&#xff0c;torchvision&#xff0c;torchaudio版本以及python版本要對應 參考&#xff1a;https://blog.csdn.net/FengHanI/article/details/135116114 創…

論文閱讀(十六):利用線性鏈條件隨機場模型檢測陣列比較基因組雜交數據的拷貝數變異

1.論文鏈接&#xff1a;Detection of Copy Number Variations from Array Comparative Genomic Hybridization Data Using Linear-chain Conditional Random Field Models 摘要&#xff1a; 拷貝數變異&#xff08;CNV&#xff09;約占人類基因組的12%。除了CNVs在癌癥發展中的…

Alibaba Spring Cloud 十三 Nacos,Gateway,Nginx 部署架構與負載均衡方案

在微服務體系中&#xff0c;Nacos 主要承擔“服務注冊與發現、配置中心”的職能&#xff0c;Gateway&#xff08;如 Spring Cloud Gateway&#xff09;通常負責“路由轉發、過濾、安全鑒權、灰度流量控制”等功能&#xff0c;而 Nginx 則常被用作“邊緣反向代理”或“統一流量入…

Next.js 實戰 (十):中間件的魅力,打造更快更安全的應用

什么是中間件&#xff1f; 在 Next.js 中&#xff0c;中間件&#xff08;Middleware&#xff09;是一種用于處理每個傳入請求的功能。它允許你在請求到達頁面之前對其進行修改或響應。 通過中間件&#xff0c;你可以實現諸如日志記錄、身份驗證、重定向、CORS配置、壓縮等任務…

ElasticSearch-文檔元數據樂觀并發控制

文章目錄 什么是文檔&#xff1f;文檔元數據文檔的部分更新Update 樂觀并發控制 最近日常工作開發過程中使用到了 ES&#xff0c;最近在檢索資料的時候翻閱到了 ES 的官方文檔&#xff0c;里面對 ES 的基礎與案例進行了通俗易懂的解釋&#xff0c;讀下來也有不少收獲&#xff0…

實驗二 數據庫的附加/分離、導入/導出與備份/還原

實驗二 數據庫的附加/分離、導入/導出與備份/還原 一、實驗目的 1、理解備份的基本概念&#xff0c;掌握各種備份數據庫的方法。 2、掌握如何從備份中還原數據庫。 3、掌握數據庫中各種數據的導入/導出。 4、掌握數據庫的附加與分離&#xff0c;理解數據庫的附加與分離的作用。…

技術中臺與終搜——2

文章目錄 5、語言處理與自動補全技術探測5.1 自定義語料庫5.1.1 語料庫映射OpenAPI5.1.2 語料庫文檔OpenAPI 5.2 產品搜索與自動補全5.2.1 漢字補全OpenAPI5.2.2 拼音補全OpenAPI 5.3 產品搜索與語言處理5.3.1 什么是語言處理&#xff08;拼寫糾錯&#xff09;5.3.2 語言處理Op…

15_業務系統基類

創建腳本 SystemRoot.cs 因為 業務系統基類的子類 會涉及資源加載服務層ResSvc.cs 和 音樂播放服務層AudioSvc.cs 所以在業務系統基類 提取引用資源加載服務層ResSvc.cs 和 音樂播放服務層AudioSvc.cs 并調用單例初始化 using UnityEngine; // 功能 : 業務系統基類 public c…

k8s優雅重啟

理論上處于terminating狀態的pod&#xff0c;k8s 就會把它從service中移除了&#xff0c;只用配置一個優雅停機時長就行了。kubectl get endpoints 驗證 因此&#xff0c;優雅重新的核心問題&#xff0c;是怎么讓空閑長連接關閉&#xff0c;再等待處理中的請求執行完。 一些底…

【Linux】華為服務器使用U盤安裝統信操作系統

目錄 一、準備工作 1.1 下載UOS官方系統 &#xff11;.&#xff12;制作啟動U盤 1.3 服務器智能管理系統iBMC 二、iBMC設置U盤啟動 一、準備工作 1.1 下載UOS官方系統 服務器CPU的架構是x86-64還是aarch64&#xff09;,地址&#xff1a;統信UOS生態社區 - 打造操作系統創…

27. 【.NET 8 實戰--孢子記賬--從單體到微服務】--簡易報表--報表服務

報表是每個記賬應用所具備的功能&#xff0c;要實現報表功能就需要把賬本的核心功能&#xff08;記賬&#xff09;完成&#xff0c;因此報表服務作為本專欄第一部分單體應用開發中最后一個要實現的功能&#xff0c;這一篇文章很簡單&#xff0c;我們一起來實現一個簡單的報表服…

基于 Node.js 的天氣查詢系統實現(附源碼)

項目概述 這是一個基于 Node.js 的全棧應用,前端使用原生 JavaScript 和 CSS,后端使用 Express 框架,通過調用第三方天氣 API 實現天氣數據的獲取和展示。 主要功能 默認顯示多個主要城市的天氣信息 支持城市天氣搜索 響應式布局設計 深色主題界面 優雅的加載動畫 技術棧 …

cursor重構谷粒商城04——vagrant技術快速部署虛擬機

前言&#xff1a;這個系列將使用最前沿的cursor作為輔助編程工具&#xff0c;來快速開發一些基礎的編程項目。目的是為了在真實項目中&#xff0c;幫助初級程序員快速進階&#xff0c;以最快的速度&#xff0c;效率&#xff0c;快速進階到中高階程序員。 本項目將基于谷粒商城…

leetcode 面試經典 150 題:簡化路徑

鏈接簡化路徑題序號71題型字符串解法棧難度中等熟練度??? 題目 給你一個字符串 path &#xff0c;表示指向某一文件或目錄的 Unix 風格 絕對路徑 &#xff08;以 ‘/’ 開頭&#xff09;&#xff0c;請你將其轉化為 更加簡潔的規范路徑。 在 Unix 風格的文件系統中規則如下…

如何在gitee/github上面搭建obsidian的圖床

在搭建圖床之前我們需要知道圖床是一個什么東西,圖床顧名思義就是存放圖片的地方&#xff0c;那么我們為什么要搭建圖床呢&#xff1f;因為我們在寫博客的時候&#xff0c;很多同學都是在本地使用typora或者是obsidian進行markdown語法的文章的書寫&#xff0c;文件格式通常都是…

JVM堆空間

JVM&#xff08;Java虛擬機&#xff09;堆空間是Java內存管理的核心區域之一&#xff0c;用于存儲Java對象實例。以下是關于JVM堆空間的詳細介紹&#xff1a; 1. 堆空間的作用 ? 存儲對象實例&#xff1a;幾乎所有的Java對象實例&#xff08;通過new關鍵字創建的對象&#xf…