目錄
- 前言
- 一、第?個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
在代碼中如果使?了某個頭?件中的定義,就得包含對應的頭?件。
- 在C語?中頭?件的擴展名是 .h ,但是C++中的?法發?了?些變化,對?式C的頭?件保留了擴展名 .h ,但是C++??的?件沒有擴展名了。C語?頭?件:https://zh.cppreference.com/w/c/header
- 有些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函數非常的像;但其實兩者也有所以不同:
- cin 和 cout 是全局的流對象, cin 負責輸?數據, cout 負責輸出數據。
- endl 是 C++ 中?個特殊的操作符,效果是換?和刷新緩沖區,使?時必須包含在iostream 頭?件。
- << 是流插?運算符,和 cout 配合使?, >> 是流提取運算符,和 cin 配合使?,兩者容易混淆,?家?定要仔細區分,不可混?。
- 使?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++入門的知識點,并加以練習;下期見。