C++入門教程
---------------------------------------------------------- 一. 初識C++ ---------------------------------------------------------
1. 什麼是C++.
c++是一種較為基礎的程式語言,雖然沒有Python,Scratch那麼高階,但是它應用範圍很廣.不論是資訊奧賽還是國家考試,都會出現它的身影.所以,學好c++成了入門計算機的第一步
2. C++的編譯.
所有的c++程式碼都需要編譯成EXE檔案.這裡推薦幾款好用而又著名的編譯器:
(1) Devc++
(2) CodeBlocks
(3) Visual Studio Code
3. 基本格式.
#include<bits/stdc++.h>//標頭檔案,這個是萬能的
#include<iostream>//標頭檔案
using namespace std;//名稱空間
int main()//main主函式
{
return 0;//返回函式,考試必須寫
}
4. 影片連結.
我為此做過一個影片,大家可以撥冗看一下
bilibili
----------------------------------------------------- 二. C++的基本語法 -------------------------------------------------------
1. 命名變數.
在我們做數學題的時候,經常會碰到設未知數的問題.這個"未知數"有點像我們的變數,是隨機的.
格式: <型別名> + '空格' + <變數名>
例如:
int a;//int 型別,是整數型,範圍:-2147483647~2147483647;
double b;//double 型別,是浮點(小數)型;
long long c;//long long 型別,長整型,大約能存到18,19位;
char d;//char 型別,字元形式,至於什麼是字元形式,大家可以上網查一下ASCII碼錶;
string str;//string 型別,是字串型,可以想象成是很多個char連在一起;
bool n;//布林值,即 0 或 1 ;
2. 輸入輸出.
在我們執行其他的程式時,都會看見上面有一行一行的文字,這就使我們想到:我們在程式設計序時,如何輸入輸出呢?下面,給幾個例子給大家.
(1) 格式化輸入輸出.
scanf("");
printf("...(你想說的東東)");
其中,scanf
的括號中的雙引號中的內容可以是你想輸入的變數.
例如:
-
%d
指的是int
型別的數; -
%c
指的是char
型別的數; -
lld
指的是long long
型別的數;
但是,格式化輸入輸出的應用並不是很廣,大家把重點放在下一條上.
(2) 流輸入輸出.
cin>>k>>p>>o;
cout<<"言吾MYB是大傻瓜"<<"你好,我是言吾MYB"<<o<<endl;
其中, <<
和 >>
後可以加無限多的東西.
- 雖然流輸入輸出更加方便快捷,但是速度會更慢.
如果想達到同樣的效果,需加上這一句話:
std::ios::sync_with_stdio(false);
就能提高速度啦!
- 補:
之前,大家在程式碼中碰到了這樣的東西:
<程式碼>//...
那麼,這個 //...
是什麼東東呢??
它叫做註釋,是寫程式碼的人為了讓他人理解程式碼寫的玩意.
//
後面的內容,編譯器都是不看的.
前面我們已經講到了輸入輸出,那麼如何運算呢?今天,我們將繼續學習基本運算.
3. 基本運算.
(1) 加減乘除.
加減乘除和數學運算一樣,例如:
c=a+b;//將a+b的值給c;
c=a*b;
c=a/b;
c=a-b;
- 其中,被賦值的數放在等號的左邊
注:
當某數自身加減時,可用
<某數>+=<加上的數>
或<某數>=<某數>+<加上的數>
來解決.特別的,當自身加一時,可用
<某數>++
的形式來解決.
(2) 判斷運算.
當我們想要判斷這個式子是否正確時,就需要用到判斷語句.
格式:
if(<判斷的式子>==<結果>)//判斷是否等於.
{
<寫下你想做的事情>
}
if<判斷的式子>>=<結果>)//判斷是否大於等於.
{
<寫下你想做的事情>
}
.....
總之,運算子有以下幾種:
>= | > | !(非,不是,也就是為0) |
---|---|---|
<= | < | ? |
== | !=(不等於) | ...... |
- 其中,若這個式子不成立,則他的值為0;反之,為1.
(3) 迴圈運算.
在我們程式設計的過程中,難免會碰到迴圈的情況,如迴圈算數等.
1) while
格式:
while(<判斷>)
{
<寫上你要寫的內容>
}
- 注:
1.<判斷>的內容為判斷的算式,前面講過.
2.判斷的算式既可以是一個式子(例如:a+b==1
),也可以是一個數字,其中除了0
的值為0以外,其他全是1.
2) for(重點)
格式:
for(<起始點>;<終點>;<自加>)
{
<寫上你要寫的內容>
}
例如:
for(int i=1;i<=100;i++)
//句子的意思是:
//定義一個 i ,從 1 開始,一直加到 100 ,每次自加 1 ;
{
sum++;
}
所以,for語句相當於:
int i=<起始點>;
while(i<=<界限>)
{
<寫上你要寫的內容>
i++;//<自加>
}
4. 陣列(重點)
1) 定義及用法.
(一) 一維陣列
格式:
int a[100];
// 定義陣列a,大小為100;
int b[200];
char c[1000];
long long d[2618];
等等.
用法
(1). 迴圈輸入
例:迴圈輸入一組資料,輸出他們的和.
程式碼:
#inclde<bits/stdc++.h>
using namespace std;
int a[101];
int n;
long long sum=0;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
sum+=a[i];
}
cout<<sum;
return 0;
}
(2). 迴圈輸入+排序
例:輸入一組資料,輸出它的從小到大的排序
程式碼:
*具體演算法後面會講解.
#inclde<bits/stdc++.h>
using namespace std;
int a[101];
int n;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+1+n);
for(int i=1;i<=n;i++)
cout<<a[i];
return 0;
}
(二) 二維陣列
格式:
int a[10][14514];
// 定義a二維陣列,大小為10*14514.
char k[14514][666];
long long kkk[1526][5];
等等.
用法:
儲存圖,二維資料等等,不舉例.
- 補:上節課,我們講了一維陣列和二維陣列,但是,有沒有三維陣列和其他陣列嗎?
答案是有.
格式:
<資料型別> + 空格 + <資料名稱>[第一維][第二維][第三維]...[第 n 維];
表示方法為:
<資料名稱> + [][][]...[];
5. 函式(超重點)
格式:
<資料型別> + 空格 + 函式名稱(任意名稱) + `(` + <多個變數> + `)`
{
}
在學習的時候,我們看到,主程式的開頭是:
int main()
{
return 0;
}
6. 結構體
有時,我們會碰到一個物體的幾種資訊,例如一個學生的語文,數學,英語成績.這時,我們就要用到結構體來儲存資訊.
格式:
struct <結構體名稱>
{
<結構體成員列表>
};
// 其中,“;"的前面可以加上你要定義的變數,如a[10];
也可以這樣定義變數:<結構體名稱> + 空格 + 變數名稱;
例:
輸入一組學生的成績:語文,數學,英語,輸出其總成績.
程式碼:
#include<bits/stdc++.h>
using namespace std;
int n;
struct chengji
{
int chi,ma,en;
int total;
}a[101];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].chi>>a[i].ma>>a[i].en;
total=a[i].chi+a[i].ma+a[i].en;
}
for(int i=1;i<=n;i++)
cout<<a[i].total<<' ';
return 0;
}
7. 其他一些東西
C++的基本教程,基本上已經學完,但是,有一些細節還需要講一下.
(1) 井號鍵.
眼下,井號鍵後面跟兩種:include 和 define;
#define
格式:
#define <被替代的程式碼> <替換的程式碼>
- 注意,後面不加分號.
(2) 函式.
函式儘量寫在組函式的前面,並且函式可以互相呼叫.