十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
返回類型 函數(shù)名(參數(shù)1, 參數(shù)2…)
{
//函數(shù)體
(返回值, 除了void類型都要有返回值, 跟返回類型對應)
;
}
int main()
{return 0; //向操作系統(tǒng)返回0, 代表程序正常結(jié)束
}
自定義函數(shù)如果自己寫的這個函數(shù)寫在main函數(shù)前面, 就可以不寫函數(shù)聲明
如果寫在main函數(shù)后面的話, 必須在main函數(shù)前面寫他的聲明
函數(shù)聲明 → 函數(shù)類型 函數(shù)名(參數(shù)類型 (變量名), 參數(shù)類型 (變量名))
#include//add函數(shù)在main后面, 所以需要加一個函數(shù)聲明
int add(int, int); //參數(shù)的名字可以省略
int main()
{int a = 5, b = 6;
printf("%d", add(a, b));
return 0;
}
int add(int a, int b)
{return a + b;
}
#include//不寫聲明
int add(int a, int b)
{return a + b;
}
int main()
{int a = 5, b = 6;
printf("%d", add(a, b));
return 0;
}
傳值調(diào)用和傳址調(diào)用#include//傳值調(diào)用
void swap(int a, int b) //a 和 b是形式參數(shù)
{int t = a;
a = b;
b = t;
}
int main()
{int a = 3, b = 4;
printf("交換前a = %d b = %d\n", a, b);
swap(a, b); // a 和 b是實際參數(shù)
printf("交換后a = %d b = %d\n", a, b);
return 0;
}
#includevoid hahaha()
{printf("hahaha");
}
//傳址調(diào)用
void swap(int &a, int &b) //a 和 b是形式參數(shù)
{int p = a;
a = b;
b = p;
hahaha();
}
int main()
{int a = 3, b = 4;
printf("交換前a = %d b = %d\n", a, b);
swap(a, b); // a 和 b是實際參數(shù)
printf("交換后a = %d b = %d\n", a, b);
return 0;
}
傳值調(diào)用: 只是把swap(a, b) 里面a和b的 值 copy 了一份給了swap(int a, int b)里面的a 和 b
函數(shù)調(diào)用的時候傳的參數(shù) 如swap(a, b); 里面的a 和 b 為實際參數(shù)
void swap(int a, int b) 里面的a 和 b為形式參數(shù), a 和 b是定義在 swap這個??臻g里面新開的變量,只是把原來swap(a, b)里面a和b的值賦值給了它, 因此如果只是在swap(int a, int b)函數(shù)里面對a和b進行操作的話, 不會影響到main函數(shù)??臻g里面的a和b, 在執(zhí)行完swap函數(shù)之后會銷毀
swap(int *a, int *b) 也只是把a和b的地址作為參數(shù)傳進來了,而并沒有真正對a和b進行操作
傳址調(diào)用: void swap(int &a, int &b) &相當于直接把a和b定義在內(nèi)存中的地址給到了這個函數(shù), 這個函數(shù)的操作會對內(nèi)存中真正的a和b進行操作
全局變量全局變量定義在堆里面的, 如果對全局變量進行修改的話, 是會真正產(chǎn)生影響的
#includeint n = 10;
void add()
{n++; //真正對堆里面的n進行操作
}
int main()
{add();
printf("%d", n);
return 0;
}
//局部變量優(yōu)先 → 仍然是對棧中的n進行操作, 不會對全局變量定義在堆中的n有影響
#includeint n = 10;
void add(int n) //實際影響的是棧里面的n, 而不是上面的定義在堆里面的n
{n++;
}
int main()
{add();
printf("%d", n);
return 0;
}
值為10的時候: n是定義在棧里面(局部變量) → 傳值調(diào)用 / 局部變量優(yōu)先, int add(int n) 跟 全局變量的n重名了
值為11的時候: 前提是n為全局變量, add的參數(shù)不是n
報錯的情況: 前提是n為全局變量, add的參數(shù)不是n + 全局變量n定義在add函數(shù)后面
數(shù)組作為函數(shù)參數(shù)//如果傳的是數(shù)組的話, 對數(shù)組元素進行操作會直接改變數(shù)組的值
#includevoid change(int q[]) // int* q
{q[1] = 2;
q[2] = 4;
}
int main()
{int q[5] = {0};
change();
printf("%d %d", q[1], q[2]);
return 0;
}
遞推
遞歸
6-1 sdut-C語言實驗-計算組合數(shù)int fun(int n, int m)
{//遞歸邊界
if(m == 0 || n == 1 || m == n) return 1;
return fun(n - 1, m - 1) + fun(n - 1, m);
}
6-2 sdut-C語言實驗- n個數(shù)的排序void sort(int *p, int n)
{for(int i = 1; i<= n - 1; i++)
{for(int j = 0; j< n - i; j++)
{if(p[j] >p[j + 1])
{int t = p[j];
p[j] = p[j + 1];
p[j + 1] = t;
}
}
}
}
void sort(int *p, int n)
{for(int i = 1; i<= n - 1; i++)
{for(int j = 0; j< n - i; j++)
{if(*(p + j) >*(p + j + 1))
{int t = *(p + j);
*(p + j) = *(p + j + 1);
*(p + j + 1) = t;
}
}
}
}
6-3 sdut- C語言實驗——矩陣下三角元素之和上下三角都是以主對角線為界限
下三角 → j<= i
int f(int (*p)[10], int n)
{int sum = 0;
for (int i = 0; i< n; i++)
{for(int j = 0; j< n; j++)
{if(j<= i) sum += p[i][j];
}
}
return sum;
}
6-4 sdut-C語言實驗- Nlong long int f(long long int n)
{long long ans = 1;
for(int i = 1; i<= n; i++)
{ans *= i;
}
return ans;
}
6-5 sdut-C語言實驗-使用函數(shù)驗證哥德巴赫猜想int isPrime(int x)
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧