01 01 01 第一部分 C++編程知識 C++入門 第一個C++程序

第一部分 ?C++編程知識

第一章 C++入門 —— 第一個C++程序

一、第一個C++程序代碼展示

//寫一個C++程序,實現在屏幕上打印 “hello world” 
#include <iostream>
using namespace std;
int main()
{cout << "hello world" << endl;return 0;
}

main函數

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

· main函數是程序的入口

· main函數有且僅有一個

· 一個項目中可以有多個.cpp文件,但是只能有一個main函數(因為程序的入口只能有一個)。

????????關于函數,這里不做過多描述,我們后面有專門的函數章節來講解。在這里需要知道的是,編寫一個C++程序,必須包含一個main函數,并且記住main函數的格式(與C語言的main函數完全相同)。


字符串

????????在C語言中(C++語言是完全兼容C語言的),使用單引號括起來一個字符,表示字符字面值,例如'A'、'1'、'@'等,它們在內存中以ASCII碼的形式存儲。例如,字符'A'的ASCII碼值是65,字符'a'的ASCII碼值是97。字符類型在C++語言中是char類型,它通常占用1個字節的內存空間。

????????使用雙引號括起來多個字符表示一個字符串,比如:"abcdef"?,?"hello world",字符串中可以有一個或者多個字符,也可以沒有任何字符,""表示空字符串。

????????上面代碼中的"hello world!"就是一個字符串。在C語言中往往用字符數組來表示一個字符串;在C++的STL中又引入了string類來表示字符串(C語言不支持),提供了一種更高效、更安全的辦法處理字符串,同時也支持更多對于字符串的操作,后期會詳細介紹。上述的代碼中字符串的內容可以根據需要變換成任意內容,可以自行嘗試。


四、頭文件

????????前面的代碼中,寫的#include?<iostream>,就是在包含頭文件,頭文件的名字叫:iostream,使用#include<?>的形式進行包含。iostream文件中的io指的是輸入(進入程序的信息,簡單理解就是可以給程序輸入數據——input)和輸出(從程序中輸出的信息,簡單理解就是程序會打印數據在屏幕上——output)。因此iostream即一個表示輸入輸出流的頭文件。

????????在C++程序中要完成輸入和輸出的操作會涉及到iostream文件中的多個定義,所以就要包含這個頭文件。比如:代碼中的cout是輸出流對象,就是用來完成數據輸出的,就需要包含頭文件。

????????我們可以把一個頭文件理解為一個工具箱,想要使用里面的工具,就需要包含這個頭文件。當然除了iostream這個頭文件之外,C++還有大量的頭文件。

????????C++的編譯器自帶了很多頭文件,每個頭文件都支持一組特定的工具。在代碼中如果使用了某個頭文件中的定義,也就是使用了對應的工具,就得包含對應的頭文件。

????????C++庫函數相關頭文件:https://zh.cppreference.com/w/cpp/header

????????關于C++語言中的頭文件,有以下需要注意的地方:

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++語言中的頭文件命名約定:

頭文件類型

約定

實例

說明

C++語言舊式風格

以 .h結尾

<iostream.h>

C++程序可以使用

但是一些新的IDE可能不再支持

C語言舊式風格

以 .h結尾

<math.h>

C程序、C++程序均可使用

C++語言新式風格

沒有擴展名

<iosream>

C++程序可以使用,使用namespace std

轉換后的C

加上前綴

但沒有擴展名

<cmath>

C++程序可以使用,可能包含的不是C的特性

????????我們現在學習的編程風格便是C++語言新式風格,可能還會結合C語言中的頭文件,但是不推薦使用C++語言舊式風格了。


五、cin和cout的初識

????????cout?<<?"hello world!"?<<?endl;這句代碼在上面的程序中是最重要的代碼,其他所有的代碼都是為了編寫這句代碼。

????????代碼中的cout是標準輸出流對象(針對控制臺,也就是屏幕),其實還有標準輸入流對象(針對的是鍵盤)cin。

????????cout是告訴程序把后面雙引號中的內容打印到標準輸出設備(屏幕)上,雙引號中的內容是可以替換的。

#include <iostream>
using namespace std;
int main()
{int num = 0;//num其實是一塊空間,可以存放一個整數cin >> num; //輸入操作,輸入一個整數存放在num中cout << num << endl; // 輸出操作,將num中的數值打印在屏幕上 return 0;
}

????????上面這段代碼實現了由鍵盤輸入一個整數,再在屏幕上打印出來,接下來對cin和cout進行幾點說明:

1、cin和cout是全局的流對象,cin負責輸入數據,cout負責輸出數據。它們是C++標準輸入輸出庫的核心部分,通過這些流對象,可以很方便地實現數據的輸入和輸出操作。

2、endl是C++中一個特殊的操作符,效果是換行和刷新緩沖區,使用時必須包含iostream頭

文件。

3、<<?是流插入運算符,和cout配合使用,>>?是流提取運算符,和cin配合使用,兩者容易混淆,一定要仔細區分,不可混用。

4、使用C++輸入輸出更方便,不需要像C語言中的printf?/?scanf輸入輸出時那樣,需要手動控制格式。C++的輸入輸出可以自動識別變量類型。

????????接下來我們再使用一段代碼來展示在C++語言中輸入輸出一個浮點型(小數):

#include <iostream>
using namespace std;
int main(){float num = 0.0;cin >> num; cout << num << endl; return 0;
}

六、名字空間

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

????????為了理解什么是名字空間,名字空間要解決什么問題,先來看下面的一個例子:一個學校里學生可能有重名,假設這個學校有3個叫張三的同學,那么每次老師喊張三的時候,其他兩個張三就會誤會,是不是在喊自己,這就是因為這三個張三其實在同一個范圍(空間)內的,就會有名字的沖突。

????????但是如果這個學校的學生分為三個班,分別是1班、2班、3班,把三個張三分別安排在不同的班級,那么老師以后喊:1班的張三,那么2班、3班的張三就不會誤會了,這就很好的解決了名字沖突的問題。

????????其實這里的本質就是:將名字進行了隔離同時在使用名字之前先交待使用哪個班級的名字。

????????在C++中,變量、函數和類都是大量存在的,這些變量、函數和類的名稱如果都存在于全局作用域中,可能會導致很多沖突。比如,你定義了一個名為sort的函數,而標準庫中也有一個sort函數,如果沒有名字空間,編譯器就不知道你到底要調用哪一個。使用名字空間的目的是對標識符的名稱進行隔離,以避免命名沖突或名字污染,namespace關鍵字的出現就是針對這種問題的。

????????std是C++標準庫的名字空間名,C++將標準庫的定義實現都放到這個命名空間中,當我們需要使用標準庫中的內容時,就需要加上:using namespace std;當有了這句代碼的時候,表示名字空間std中信息都是可見和可用的,比如:cin、cout、endl等。

????????名字空間也是根據需要自己定義的,但是在算法競賽當中基本使用不到,這里就不加詳細介紹,大家可以自行拓展學習。

????????當然直接使用using namespace std;是一種簡單粗暴的做法,直接這樣使用,就意味著后續在std這個名字空間中的各種定義都可以直接使用,但是我們往往只是使用部分。所以名字空間其實也可以這樣使用:

#include <iostream>
int main()
{int num = 5;std::cout << num << std::endl;return 0;
}

????????上面代碼中的std::cout的意思就是使用std名字空間中的cout。采用std::cout這種寫法,如果頻繁使用,在算法競賽中比較麻煩,耽擱時間。因此在藍橋杯這樣的競賽中,我們還是建議直接使用using namespace std;的形式。

????????但是在企業中做軟件開發基本上都使用類似std::cout的寫法,這樣寫可以更好的避免名字沖突的問題,當然在通過后期更深入的技術學習中可以體會得到。


七、注釋

????????C++語言中主要有兩種注釋形式:單行注釋?//?和多行注釋?/*???*/?。

????????注釋是對代碼進行解釋的文字(對代碼進行解釋或者對代碼文檔進行必要的說明),要放在代碼中,但是又無需編譯(編譯器不會對注釋進行編譯)。注釋是給程序員自己看的,在編寫帶代碼的時候寫必要的注釋是非常好的習慣,方便自己理解的同時也方便別的程序員閱讀你的代碼,編譯器會忽略注釋,基于注釋是被編譯器忽略的這個特點,在代碼中有些代碼不再需要的時候也會使用注釋的方式屏蔽。

????????單行注釋:指的是當前行不參與編譯和運行。比如下面這段代碼中使用的均為單行注釋。

#include <iostream>
using namespace std;
int main()
{int num = 0;//num其實是一塊空間,可以存放一個整數cin >> num; //輸入操作,輸入一個整數存放在num中cout << num << endl; // 輸出操作,將num中的數值打印在屏幕上 return 0;
}

????????多行注釋:指的是被包含在內的多行不參與編譯和運行。比如下面這段代碼就是一個多行注釋。

/*
編寫人:劉博實
編寫時間:2025年08月01日
編寫內容:C++語言的第一個程序
*/
#include <iostream>

????????在DevC++中注釋和取消注釋的快捷鍵:Ctrl?+?/


【練習一】

????????編寫一個能夠輸出Hello,World!的程序。

· 輸出提示:使用英文標點符號,“Hello,World!”后面沒有空格,H和W為大寫字母。?

【參考答案】

#include <iostream>
using namespace std;
int main()
{cout << "Hello,World!" << endl;return 0;
}

【本題注意點】

????????1、仔細讀題、審題。

????????2、注意語法細節:main函數的寫法、大括號的匹配、中英文標點的使用、包含頭文件以及命名空間的寫法。


【練習二】

????????在屏幕輸出信息,輸出一架小飛機。請編寫程序輸出這架小飛機。

【參考答案】

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

【本題注意點】

????????OJ題目輸出的結果有嚴格的檢查,代碼輸出的結果必須和題目要求統一才是可以的。所以在接下來的習題中,如果有要求在特定情況下的輸出,我們可以考慮將對應內容直接進行復制粘貼。


練習三

????????輸入三個整數,整數之間由一個空格分隔。把第二個輸入的整數輸出。

· 輸入格式:只有一行,共三個整數,整數之間由一個空格分隔。

· 輸出格式:只有一行,一個整數,即輸入的第二個整數。

【參考答案】

#include <iostream>
using namespace std;
int main()
{int num1 = 0;int num2 = 0;int num3 = 0;cin >> num1 >> num2 >> num3;cout << num2 << endl;return 0;
}

【本題注意點】

? ? ? ? 1、這里的三個整數,可以分三次讀入,也可以一次讀入,要獲取到第二個輸入值時才能輸出結果。

? ? ? ? 2、cin是支持連續讀入幾個數值的;cout也是支持連續輸出幾個數值的。


【練習四

????????給定一個字符,用它構造一個底邊長5個字符,高3個字符的等腰字符三角形。

· 輸入格式:輸入只有一行,包含一個字符。

· 輸出格式:該字符構成的等腰三角形,底邊長5個字符,高3個字符。

· 說明/提示:對于100%的數據,輸入的字符是ASCII中的可見字符。

【參考答案】

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

【本題注意點】

????????在接下來進行“數據類型”的學習時,會了解到ASCII碼表,ASCII碼表前32位其實都是不可見字符。而ASCII碼表總共包含的范圍是0~127。

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

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

相關文章

進制定義與轉換詳解

文章目錄&#x1f4d8; 進制定義與轉換詳解一、進制的含義二、常見進制介紹1. 十進制&#xff08;Decimal&#xff0c;Base-10&#xff09;2. 二進制&#xff08;Binary&#xff0c;Base-2&#xff09;3. 八進制&#xff08;Octal&#xff0c;Base-8&#xff09;4. 十六進制&am…

【安卓筆記】用MVC、MVP、MVVM來實現井字棋案例

0. 環境&#xff1a;電腦&#xff1a;Windows10Android Studio: 2024.3.2編程語言: JavaGradle version&#xff1a;8.11.1Compile Sdk Version&#xff1a;35Java 版本&#xff1a;Java111. 首先、簡單實現井字棋的功能。功能拆解&#xff1a;1. 棋盤為3x32. 點擊棋盤button&a…

【洛谷】單向鏈表、隊列安排、約瑟夫問題(list相關算法題)

文章目錄單向鏈表題目描述題目解析代碼隊列安排題目描述題目解析代碼約瑟夫問題題目描述題目解析代碼單向鏈表 題目描述 題目解析 這道題因為有大量的任意位置插入刪除&#xff0c;所以肯定不能用數組&#xff0c;用鏈表是最合適的&#xff0c;而在算法競賽通常都用靜態鏈表&a…

當人機交互邁向新紀元:腦機接口與AR/VR/MR的狂飆之路

從手機到 “頭盔”&#xff1a;交互終端的變革猜想??在當今數字化時代&#xff0c;智能手機無疑是我們生活中不可或缺的一部分。它集通訊、娛樂、辦公等多種功能于一身&#xff0c;成為了人們與外界交互的主要窗口。然而&#xff0c;隨著科技的飛速發展&#xff0c;智能手機作…

InfluxDB HTTP API 接口調用詳解(二)

實際應用案例演示 1. 數據寫入案例 假設在一個物聯網設備數據采集場景中&#xff0c;有多個傳感器設備持續采集環境的溫度和濕度數據。我們以 Python 語言為例&#xff0c;使用requests庫來調用 InfluxDB 的 Write 接口將數據寫入 InfluxDB。 首先&#xff0c;確保已經安裝了…

世運會線上知識競賽答題pk小程序怎么做

隨著2025年成都世界運動會的來臨&#xff0c;越來越多的企事業單位組織員工進行線上知識競賽&#xff0c;那么答題PK小程序該怎么做&#xff0c;接下來我們來一一分析&#xff1a; 世運會線上知識競賽答題pk小程序怎么做一、答題功能&#xff1a;支持多種題型&#xff0c;如選擇…

Java畢業設計 | 基于微信小程序的家校互動作業管理系統(Spring Boot+Vue.js+uni-app+AI,附源碼+文檔)

Java畢業設計 | 基于微信小程序的家校互動作業管理系統&#xff08;Spring BootVue.jsuni-app&#xff0c;附源碼文檔&#xff09;&#x1f3af; 畢業設計私人教練 專注計算機畢設輔導第 6 年&#xff0c;累計 1v1 帶飛 800 同學順利通關。從選題、開題、代碼、論文到答辯&…

CentOS8 使用 Docker 搭建 Jellyfin 家庭影音服務器

CentOS8 使用 Docker 搭建 Jellyfin 家庭影音服務器 一、前言 由于 Jellyfin 的 GPL 協議和 Intel 的 media-driver (iHD) Linux 驅動&#xff08;部分開源&#xff09;在協議上不兼容的緣故&#xff0c;Jellyfin 官方的 Docker 鏡像&#xff1a;jellyfin/jellyfin 并不包含 …

PyTorch武俠演義 第一卷:初入江湖 第4章:損失玉佩的評分風波

第一卷&#xff1a;初入江湖 第4章&#xff1a;損失玉佩的評分風波比武開幕 晨鐘響徹山谷&#xff0c;PyTorch派三年一度的"模型比武大會"正式開始。各分舵弟子列隊入場&#xff0c;林小碼跟在Tensor大師身后&#xff0c;眼睛瞪得溜圓——只見&#xff1a; "卷積…

HttpServletRequestWrapper存儲Request

HTTP請求的輸入流只能被讀取一次&#xff0c;再想獲取就獲取不到了&#xff0c;那有什么方法可以緩存呢&#xff0c;我們可以自定義一個HttpServletRequest&#xff0c;或者是想在請求參數中統一添加或刪除參數也可以使用此類進行改造&#xff0c;然后通過過濾器繼續向下流轉。…

算法:數組part02: 209. 長度最小的子數組 + 59.螺旋矩陣II + 代碼隨想錄補充58.區間和 + 44. 開發商購買土地

算法&#xff1a;數組part02: 209. 長度最小的子數組 59.螺旋矩陣II 代碼隨想錄補充58.區間和 44. 開發商購買土地 209. 長度最小的子數組題目&#xff1a;https://leetcode.cn/problems/minimum-size-subarray-sum/description/ 文章講解&#xff1a;https://programmercarl…

Spring 核心知識點梳理 1

目錄 Spring Spring是什么&#xff1f; Spring中重要的模塊 Spring中最重要的就是IOC(控制反轉)和AOP(面向切面編程) 什么是IOC DI和IOC之間的區別 為什么要使用IOC呢&#xff1f; IOC的實現機制 什么是AOP Aop的核心概念 AOP的環繞方式 AOP發生的時期 AOP和OOP的…

Kafka運維實戰 07 - kafka 三節點集群部署(混合模式)(KRaft 版本3.7.0)

目錄環境準備主機準備補充說明JDK安裝 (三臺主機分別執行)下載jdkjdk安裝kafka 部署(三臺主機分別執行)kafka 下載kafka 版本號結構解析kafka 安裝下載和解壓安裝包(3臺主機都執行)配置 server.properties &#xff08;KRaft 模式&#xff09;192.168.37.10192.168.37.11192.16…

linux內核與GNU之間的聯系和區別

要理解操作系統&#xff08;如 GNU/Linux&#xff09;的組成&#xff0c;需要明確 內核&#xff08;Kernel&#xff09; 和 GNU 工具鏈 各自的功能&#xff0c;以及它們如何協作構成完整的操作系統。以下是詳細分析&#xff1a;1. 內核&#xff08;Kernel&#xff09;的功能 內…

文件包含學習總結

目錄 漏洞簡介 漏洞原理 漏洞分類 漏洞防御 漏洞簡介 程序開發人員一般會把重復使用的函數寫到單個文件中&#xff0c;需要使用某個函數時直接調用此文件&#xff0c;而無需再次編寫&#xff0c;這種文件調用的過程一般被稱為文件包含。程序開發人員一般希望代碼更靈活&…

TQZC706開發板教程:創建PCIE項目

本例程基于zc706開發板&#xff0c;使用xdma核創建PCIE項目&#xff0c;最終實現插入主機可識別出Xilinx設備。在vivado中創建一個空的706項目。創建完成后添加IP核-->搜索xdma-->雙擊打開配置。添加XDMA核如下所示basic配置peic id中設置設備號等信息&#xff0c;這里保…

科技賦能景區生.態,負氧離子氣象監測站筑牢清新防線

負氧離子氣象監測站&#xff0c;如同景區空氣質量的堅固防線&#xff0c;默默守護著每一寸土地的清新。?它以精準的監測能力為防線基石。借助 “吸入式電容收集法”&#xff0c;能敏銳捕捉空氣中負氧離子的蹤跡&#xff0c;精準測量其濃度&#xff0c;同時將溫度、濕度、PM2.5…

AMD官網下載失敗,不讓賬戶登錄下載

別使用163郵箱 使用QQ郵箱&#xff0c;然后用GPT生成一個外國&#xff0c;比如日本的地區信息填上去就可以下載了

Elasticsearch-8.17.0 centos7安裝

下載鏈接 https://www.elastic.co/downloads/past-releases/elasticsearch-8-17-0 https://www.elastic.co/downloads/past-releases/logstash-8-17-0 https://www.elastic.co/cn/downloads/past-releases/kibana-8-17-0https://artifacts.elastic.co/downloads/elasticsearch/…

windows下SAS9.4軟件下載與安裝教程

SAS 9.4是SAS公司推出的一款功能強大的統計分析軟件&#xff0c;廣泛應用于數據分析、商業智能、預測分析、數據挖掘及統計建模等多個領域。數據處理與管理能力&#xff1a;SAS 9.4支持多種數據格式的導入導出&#xff0c;包括JSON、XML等&#xff0c;便于處理來自Web和API的數…