# 函式
## 介紹:
由[判斷質數](https://chiscoj.com/problem/b011)這題舉例:
你可能會寫成這樣:
```cpp
#include<stdio.h>
int main(){
int n;
while(scanf("%d",&n)!=EOF){
int flag=1;
for(int i=2;i*i<=n;i++){
if(n%i==0){
printf("No\n");
flag=0;
break;
}
}
if(flag){
printf("Yes\n");
}
}
}
```
但其實你也可以寫成這樣:
```cpp
#include<stdio.h>
bool check(int n){
for(int i=2;i*i<=n;i++){
if(n%i==0){
return 0;
}
}
return 1;
}
int main(){
int n;
while(scanf("%d",&n)!=EOF){
if(check(n)){
printf("Yes\n");
}else{
printf("No\n");
}
}
}
```
而下面這個部分就是我們自定義的函式
```cpp
bool check(int n){
for(int i=2;i*i<=n;i++){
if(n%i==0){
return 0;
}
}
return 1;
}
```
函示的功用就是讓你的程式碼變得淺顯易懂
---
## 宣告
利用資料型態宣告。
| 資料型態 | 回傳 |
| -------- |:--------------:|
| void | 不需要回傳參數 |
| int | 需要回傳整數 |
| folat | 需要回傳浮點數 |
| double | 需要回傳浮點數 |
| char | 需要回傳浮點數 |
舉例:
```cpp
void function1(){
return;
}
int function2(){
return 整數
}
float funtion3(){
return 浮點數
}
.
.
.
.
```
---
我們宣告的時候可以傳我們想要的變數進去。
```c
#include<stdio.h>
void f(int n){
printf("%d",n);
}
int main(){
int n=10;
f(n);
}
```
輸出
```
10
```
---
我們也可以傳兩個變數進去。
```c
#include<stdio.h>
void f(int n,int n2){
printf("%d &d",n,n2);
}
int main(){
int n=10,n2=20;
f(n);
}
```
輸出
```
10 11
```
---
## 宣告位置
有兩種
第一種
```c=
#include<stdio.h>
void f(int n){
printf("%d",n);
}
int main(){
int n;
scanf("%d",&n);
f(n);
}
```
第二種
```c=
#include<stdio.h>
void f(int n);
int main(){
int n;
scanf("%d",&n);
f(n);
}
void f(int n){
printf("%d",n);
}
```
因為編譯器是由上往下開始編譯
所以這樣會報錯
```c=
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
f(n);
}
void f(int n){
printf("%d",n);
}
```
###### tags: `中和高中`