2020, jeeeerrrpop
我們可以對於出現很多次的操作將他寫成函數,之後需要用時直接呼叫函數並傳入對應的參數,能使程式碼更簡潔,增加程式碼的可讀性。
if(a > b && c > b) mn = b;
else if(a > c && b > c) mn = c;
else mn = a;
// if we have min funciton
mn = min(a, min(b, c));
我們可以使用別人已經寫好的function
pow(a, b);
strcpy(c, d);
isdigit(x);
strlen(s);
rand();
我也想要自己寫 function!
我希望能寫一個函數傳入a, b 回傳 a + b
int a = 7;
int c = add(a, 122);
//c = 129
回顧一下
一般的函數大概會長這樣:
回傳的型態 函數名稱(參數 1, 參數 2, ...) {
各種處理
return 回傳值;
}
因此定義一個函數也需要這種架構。
int add(int a, int b) {
int sum = a + b;
return sum;
}
int main() {
int a = 7;
int c = add(a, 122);
}
Can it work?
int main() {
int a = 7, b = 1;
int c = add(a, b);
}
int add(int a, int b) {
int sum = a + b;
return sum;
}
需包含函數名稱、回傳型態、參數型態
int add(int, int);
int add(int, int);
int main() {
int a = 7;
int c = add(a, 122);
}
int add(int a, int b) {
int sum = a + b;
return sum;
}
Neoj289 福祿猴的反敗
輸入兩個球的半徑,輸出兩個球的表面積和。
我想寫一個函數去計算球的表面積
#include <iostream>
const int PI = 3;
int BallSurfaceArea(int r) {
return 4 * PI * r * r;
}
int main() {
int r1, r2;
std::cin >> r1 >> r2;
std::cout << BallSurfaceArea(r1) + BallSurfaceArea(r2);
}
double, char, int…
void
double abs(double x) {
if(x < 0) return -x;
else return x;
}
#include <iostream>
void print(){
std::cout << "<(_ _)>\n";
}
int main() {
print();
for(int i = 0; i < 13; i++) print();
return 0;
}
如果在某些時候你想跳出這個 function
void divide(double a, double b){
if(b == 0) {
std::cout << "Can't divide zero!\n";
return;
}
std::cout << a << " / " << b << " = " << a / b << "\n";
}
void test() {
std::cout << "in" << std::endl;
return;
std::cout << "Will this be printed?" << std::endl;
}
int, double, char…
int[], int*, …
int SumElement(int a[10], int n) {
int sum = 0;
for(int i = 0; i < n; i++) {
sum += a[i];
}
return sum;
}
// we can also write int a[], or int* a;
int SumMatrix(int n, int m, int mat[10][10]) {
int sum = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
sum += mat[i][j];
return sum;
}
//we can also write mat[][10]
#include <iostream>
void add7(int x) {
x += 7;
}
int main() {
int a = 0;
add7(a);
std::cout << a << std::endl;
return 0;
}
#include <iostream>
void add7(int &x) {
x += 7;
}
int main() {
int a = 0;
add7(a);
std::cout << a << std::endl;
return 0;
}
void swap(int a, int b) {
int t = a;
a = b;
b = t;
}
void swap(int &a, int &b) {
int t = a;
a = b;
b = t;
}
What will happen?
#include <iostream>
void add7(int x[], int id) {
x[id] += 7;
}
int main() {
int a[10] = {0};
add7(a, 5);
std::cout << a[5] << std::endl;
return 0;
}
並非把整個陣列傳進去,是傳了他的指標進去。
常見錯誤
#include <iostream>
int SumElement(int a[], int n) {
int sum = 0;
for(int i = 0; i < n; i++) {
sum += a[i];
}
}
int main() {
int a[5] = {1, 2, 3, 4, 5};
SumElement(a, 5);
std::cout << sum << std::endl;
}
int add(int a, int b, int MOD = 1000) {
return (a + b) % MOD;
}
int main() {
add(7122, 7122)
}
int test(int a, int b = 2, int c = 3) {
cout << a << ' ' << b << ' ' << c << endl;
}
int main() {
test(1, 7);
}