直譯式語言/動態語言
直接轉譯執行
次慢
網頁
直譯式語言/動態語言
直接轉譯執行
最慢
AI
編譯語言
預先編譯
最快
競賽程式
高度自定義
都要自己安裝
輕量化
整合是開發環境
安裝方便
吃效能
Online Judge
# PRESENTING CODE
線上評測系統
一個讓你練習程式設計與演算法的地方
會在後端有個伺服器執行你上傳的程式
對於特定的題目會有特定的輸入與輸出
如果你的程式輸入後的輸出與標準一樣
就會得到AC的結果la欸我字數都一樣欸
# PRESENTING CODE
建北電資OJ
https://iscoj.fg.tp.edu.tw/
一一、一二學長前年把他復活的,題目還有點少,等待我們的努力QAQ
# PRESENTING CODE
AC(accepted) 你通過了
WA(wrong answer) 你錯了
MLE(memory limit exceed) 你花了太多記憶體
TLE(time limit exceed) 你花了太多時間
CE(compile error) 你的程式編譯失敗
RE(runtime error) 你戳到不能戳的記憶體
SYSTEM ERROR 你爛了 就這樣 去問出題者
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<"Hello 暑訓!\n";
}
# 你第一次寫程式
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<"Hello 暑訓!\n";
}
# 你第一次寫程式
#include<標頭檔>
萬用標頭檔: bits/stdc++.h
使用命名空間
標準函式庫
程式起始處
運行完結束
cout<<"要輸出的東西";
\n 換行
記得加 ;
資料型態 | 用途 | 記憶體大小 |
---|---|---|
int | 整數-2³¹~2³¹-1(約2*10⁹~-2*10⁹) | 4 bytes |
long long | 更大的整數 -2⁶³~2⁶³-1(約9*10¹⁸~-9*10¹⁸) | 8 bytes |
float | 浮點數 (可以有小數點的數字) | 4 bytes |
double | 更精確浮點數 (可以有小數點的數字) | 8bytes |
char | 字元 | 1 byte |
string | 字串 | 可變 |
與變數意義相關
只能用大小寫字母、數字、_
、$
數字不可作為變數名稱的開頭
大小寫意義不同
不可使用保留字
資料型態 變數名稱;
資料型態 變數名稱=初始值;
資料型態 變數名稱, 另一個變數名稱;
int a;
int b=7;
int c=5,d=3,e,f,g;
0 | 1 | 2 | 3 | 4 | 5 | 6 |
---|
資料型態 變數名稱[陣列長度];
資料型態 變數名稱[]={初始值1,初始值2,初始值3};
資料型態 變數名稱[陣列長度], 另一個變數名稱[陣列長度];
int a[5];
int b[]={3,7,9,2};
int c[]={5};
#include<bits/stdc++.h>
using namespace std;
int main(){
int arr[]={1,5,8,3,4,5,7};
cout<<a[0]<<" "<<a[6]<<"\n";
}
從0開始
getline(cin,sting_name);
cin.getline(w,20);
#include<bits/stdc++.h>
using namespace std;
int main(){
string str1,str2;
cin>>str1>>str2;
cout<<str1<<"\n";
cout<<str2<<"\n";
}
輸入
]輸出
# = 賦值運算子
#include<bits/stdc++.h>
using namespace std;
int main(){
int a=7,b=-807;
a=b;
cout<<a;
}
# PRESENTING CODE
猜輸出結果
# + - * / % () 運算子
#include<bits/stdc++.h>
using namespace std;
int main(){
int a=7,b=199,c=11;
cout<<a*(b+a)%c<<"\n";
}
# PRESENTING CODE
猜輸出結果
# ++ -- 運算子
#include<bits/stdc++.h>
using namespace std;
int main(){
int a=1558;
cout<<a++<<"\n";
cout<<a<<"\n";
}
# PRESENTING CODE
猜輸出結果
# += -= *= /= %= 運算子
a+=b;
a=a+b;
就是懶
# == != >= <= > < 關係運算子
# == != >= <= > < 關係運算子
# if 用法
if(條件){
執行的東西一; //條件成立(true)時執行
執行的東西二;
}
用法1
if(條件) 執行的東西;
用法2
小提示: 等等講到的 else if else for while 都可以這樣歐
前面條件不成立(否則)
且
這個的條件成立
# else if 用法
if(條件a){
執行的東西a;
}
else if(條件b){
執行的東西b;
}
else if(條件c){
執行的東西c;
}
條件a
條件b
條件c
# else if 用法
if(條件a){
執行的東西a;
}
else if(條件b){
執行的東西b;
}
else if(條件c){
執行的東西c;
}
else{
執行的東西d;
}
條件a
條件b
條件c
# 爛寫法
cout<<"Hello World!\n";
cout<<"Hello World!\n";
cout<<"Hello World!\n";
cout<<"Hello World!\n";
cout<<"Hello World!\n";
cout<<"Hello World!\n";
cout<<"Hello World!\n";
cout<<"Hello World!\n";
for(int i=0;i<8;i++) cout<<"Hello World!\n";
# for 用法
for(史前初始化;判斷條件;迴圈結束後){
執行的東東;
}
# 爛寫法
cout<<"Hello World!\n";
cout<<"Hello World!\n";
cout<<"Hello World!\n";
cout<<"Hello World!\n";
cout<<"Hello World!\n";
cout<<"Hello World!\n";
cout<<"Hello World!\n";
cout<<"Hello World!\n";
for(int i=0;i<8;i++) cout<<"Hello World!\n";
#include<bits/stdc++.h>
using namespace std;
int main(){
for(int s=0;s<5;s++){
cout<<s<<"\n";
}
}
# PRESENTING CODE
猜輸出結果
#include<bits/stdc++.h>
using namespace std;
int main(){
for(int s=0;s<5;s++){
//dosomething
}
}
# PRESENTING CODE
猜輸出結果
# while 用法
while(每次做之前判斷){
要做的事;
}
當表示式為真,不斷重複執行
和if的差別
while 內會一直重複,if 只會執行一次
# while 用法
#include <bits/stdc++.h>
using namespace std;
int main(){
int a = 12;
while (a < 23) {
cout << a << " ";
a = a + 3;
}
cout << endl << "after while: a=" << a << endl;
return 0;
}
12 15 18 21
after while: a=24
# while 用法
while(true){
//do something
}
在這個情況下 程式永遠不會結束(?
最後會無限的執行直到程式崩潰
for(;;){
//do something
}
# while 用法
while(true){
//do something
if(something){
break;
}
}
判到something為真時,
就會成功跳出迴圈la
# while 用法
while(true){
//do something 1
if(判斷式){
continue;
}
//do something 2
}
做完something 1之後
若判斷式為真,便會跳過something 2
直接進行下一次迴圈(for迴圈也能用喔
# PRESENTING CODE