語法列表
絕對要背的標頭檔!
#include<bits/stdc++.h>
printf
功能同cout
#include<stdio.h>
#include<iostream>
using namespace std;
int main(void) {
//C
printf("This is a test!\n");
//C++
cout<<"This is a test!\n";
//=========================
//C
printf("我的幸運數字是%d,英文名字開頭是%c\n",7,'A');
//C++
cout<<"我的幸運數字是"<<7<<",英文名字開頭是"<<'A'<<"\n";
//=========================
return 0;
}
格式指定碼 | 輸出結果 |
---|---|
%c | 以字元方式輸出 |
%d | 10 進位整數輸出 |
%x, %X | 將整數以 16 進位方式輸出 |
%f | 浮點數輸出 |
%s | 字串輸出 |
scanf
功能同cin
#include <stdio.h>
int main(void) {
int input;
printf("請輸入數字:");
scanf("%d", &input);
printf("您輸入的數字:%d\n", input);
return 0;
}
scanf() 在接受輸入時,可以接受多個值,也可以指定輸入的格式,例如:
#include <stdio.h>
int main(void) {
int number1, number2;
printf("請輸入兩個數字,中間使用空白區隔):");
scanf("%d %d", &number1, &number2);
printf("您輸入的數字:%d %d\n", number1, number2);
printf("請再輸入兩個數字,中間使用-號區隔):");
scanf("%d-%d", &number1, &number2);
printf("您輸入的數字:%d-%d\n", number1, number2);
return 0;
}
sort
#include <stdio.h>
#include <iostream>
#include <algorithm>
// 演算法
using namespace std;
int arr[100];
int N;
// 奇數 < 偶數
// 小的 < 大的
// 3 6 2 1
// 1 3 2 6
bool cmp( int a , int b ){
// true 代表 a 跟 b 不會交換
// false 代表會交換
a .... b ...
if ( a % 2 == 1 ){
if ( b % 2 == 0 )
return true;
else
return a < b;
}
else{ // a 是偶數
if ( b % 2 == 1 )
return false;
else
return a < b;
}
// true
// return a > b;
...
}
int main(void) {
cin >> N;
for ( int i = 0 ; i < N ; i++ )
cin >> arr[i];
sort( arr , arr+N , cmp );
return 0;
}
reverse
reverse(array_begin,array_end);
參數部分不做解釋了,直接進入範例:
int x[8]={1,3,5,2,4,6,9,0};
sort(x,x+8);
此時x={0,1,2,3,4,5,6,9},這是升冪,再來透過reverse把它變成降冪:
reverse(x,x+8);
這時候x={9,6,5,4,3,2,1,0}
sizeof
int x[8]={1,3,5,2,4,6,9,0};
int x_end=sizeof(x)/sizeof(int);
sort(x,x+x_end);
上面的寫法利用sizeof取得陣列長度,這招很常見,一定要學起來! sizeof()這個函式可以取得變數佔用的記憶體量,把取得的值/變數型別就可以得到陣列長度了~
strlen
char s[] = "orangeApple";
cout<<strlen(s); //輸出"orangeApple"的總長度 11
abs 取絕對值
int a = -99;
int b = abs(a);
cout << "a 為 " << a << endl;
cout << "a 的絕對值為 " << b << endl;
sqrt
sqrt(欲開根號的值,或變數)
cout<<sqrt(16); //16開根號,答案為4
pow
cout<<pow(2,8); //2的8次方,輸出256
stack
#include <stack>
#include <iostream>
using namespace std;
int main(){
stack <int> s
s.push(10);
s.push(30);
cout << "stack的大小" << s.size();
cout << "stack最上面的值" << s.top();
s.pop(); // 取出30
if(!s.empty()){
cout<<"stack裡面還有東西";
}
}
queue
rand
上例的 rand() 將會傳回一個介於 0 到 RAND_MAX 之間的一個整數值,RAND_MAX 是 stdlib.h 定義的一個常數,其值在不同的系統有不同的大小,以 DOS 系統為例,其值為 32767 (215-1)。
取 1-10 的亂數 a=(rand() % 10) +1
取 1-100 的亂數 a=(rand() % 100) +1
取 100-1000 的亂數 a=(rand() % 901) +100
max
max(10,12); // return 12;
min
min(5,9); // return 5;
round(), ceil(), floor()
vector
http://mropengate.blogspot.tw/2015/07/cc-vector-stl.html
#include<bits/stdc++.h>
using namespace std;
int main(){
vector<int> ary(3,1);
ary[0]=2;
for(int i=0;i<ary.size();i++){
cout<<ary[i]<<" ";
}
cout<<endl;
ary.push_back(19);
for(int i=0;i<ary.size();i++){
cout<<ary[i]<<" ";
}
cout<<endl;
cout<<"結尾: "<<ary.back()<<endl;
cout<<"開頭: "<<ary.front()<<endl;
ary.insert ( ary.begin()+2 , 7 );
for(int i=0;i<ary.size();i++){
cout<<ary[i]<<" ";
}
cout<<endl;
}
C ++標準建議:
vector是那種應該在默認情況下使用的序列如果大多數插入和刪除操作發生在序列的頭部或尾部時,應該選用雙端隊列deque。
priority_queue
進化版的vector,可以在輸入資料時就幫你排訊,但其實感覺學vector就夠了
#include <iostream>
#include <queue>
using namespace std;
int main(){
priority_queue <int> pq; //預設數字大的最上面
pq.push(4);
pq.push(8);
pq.push(3);
pq.push(5);
pq.push(2);
while(!pq.empty()){
cout << pq.top() <<" ";
pq.pop();
}
// 輸出結果為:8 5 4 3 2
}
全域變數
#include<bits/stdc++.h>
using namespace std;
int x=10;
int main(){
cout<<"global x = "<<x<<endl;
int x = 20;
cout<<"int main() x = "<<x<<endl;
cout<<"global x = "<<::x<<endl;
}