c語言怎么調入函數?
1、打開CFree,按ctrl加N創建一個新的文件。2、然后開始調用函數。
3、按F9進行調試后發現沒有錯誤。
4、按F5執行程序。
5、輸入想要輸入的數字。
6、按ENTER鍵輸出結果,檢驗符合結果,說明函數調用成功。
函數調用的一般形式為:函數名(實參列表);
實參可以是常數、變量、表達式等,多個實參用逗號,分隔。
在C語言中,函數調用的方式有多種,例如:
// 函數作為表達式中的一項出現在表達式中
z = max(x, y);
m = n + max(x, y);
// 函數作為一個單獨的語句
printf("%d", a);
scanf("%d", &b);
// 函數作為調用另一個函數時的實參
printf( "%d", max(x, y) );
total( max(x, y), min(m, n) );
在函數調用中還應該注意的一個問題是求值順序。所謂求值順序是指對實參列表中各個參數是自左向右使用呢,還是自右向左使用。對此,各系統的規定不一定相同。
【示例】在VC6.0和C-Free 5.0下運行以下代碼。
#include <stdio.h>
int main(){
int i=8;
printf("%d %d %d %d\n",++i,++i,--i,--i);
return 0;
}
運行結果:
8 7 6 7
可見VC 6.0是按照從右至左的順序求值。如果按照從左至右求值,結果應為:
9 10 9 8
函數的嵌套調用
函數不能嵌套定義,但可以嵌套調用,也就是在一個函數的定義中出現對另一個函數的調用。這樣就出現了函數的嵌套調用,即在被調函數中又調用其它函數。
【示例】計算sum = 1! + 2! + 3! + ... + (n-1)! + n!
分析:可以編寫兩個函數,一個用來計算階乘,一個用來計算累加的和。
#include <stdio.h>
//求階乘
long factorial(int n){
int i;
long result=1;
for(i=1; i<=n; i++){
result *= i;
}
return result;
}
// 求累加的和
long sum(long n){
int i;
long result = 0;
for(i=1; i<=n; i++){
//嵌套調用
result += factorial(i);
}
return result;
}
int main(){
printf("1!+2!+...+9!+10! = %ld\n", sum(10));
return 0;
}
運行結果:
1!+2!+...+9!+10! = 4037913
函數聲明和函數原型
C語言代碼由上到下依次執行,函數定義要出現在函數調用之前。
但是,如果在函數調用前進行了函數聲明,那么函數定義就可以出現在任何地方了,甚至是其他文件。
函數聲明的一般形式為:
返回值類型 函數名( 類型 形參, 類型 形參… );
或為:
返回值類型 函數名( 類型, 類型…);
函數聲明給出了函數名、返回值類型、參數列表(參數類型)等與該函數有關的信息,稱為函數原型(Function Prototype)。
函數原型的作用是告訴編譯器與該函數有關的信息,讓編譯器知道函數的存在,以及存在的形式,即使函數暫時沒有定義,也不會出錯。
更改上面的代碼,將 factorial 和 sum 函數的定義放到 main 函數后面:
#include <stdio.h>
// 函數聲明
long factorial(int n); //也可以寫作 long factorial(int);
long sum(long n); //也可以寫作 long sum(long);
int main(){
printf("1!+2!+...+9!+10! = %ld\n", sum(10));
return 0;
}
//求階乘
long factorial(int n){
int i;
long result=1;
for(i=1; i<=n; i++){
result *= i;
}
return result;
}
// 求累加的和
long sum(long n){
int i;
long result = 0;
for(i=1; i<=n; i++){
//嵌套調用
result += factorial(i);
}
return result;
}
運行結果:
1!+2!+...+9!+10! = 4037913