C語言中可以使用系統函數也可以使用自己的函數,就是自定義函數
自定義函數分為四種
第一種:無參無返回值的
函數的聲明
void sayH();
函數的實現
void sayH(){
printf("你好");
}
第二種:有參數無返回值
函數的聲明:
void pxsbx(int c,int k);
函數的實現:
void pxsbxx(int c,int k){
int i,j;
for (i=0; i<c; i++) {
for (j=0; j<=i; j++) {
printf(" ");
}
for (j=0; j<k; j++) {
if (j==0||j==k-1||i==0||i==c-1) {
printf("*");
}else{
printf(" ");
}
}
printf("\n");
}
}
函數的調用
int c,k;
printf("請輸入長:");
scanf("%d",&c);
printf("請輸入寬:");
scanf("%d",&k);
pxsbxx(c, k);
運行結果

3,有參數有返回值
聲明:
int add1(int num1,int num2,int num3);
實現
int add1(int num1,int num2,int num3){
int sum=num1+num2+num3;
return sum;
}
調用
int num1,num2,num3,sum;
scanf("%d%d%d",&num1,&num2,&num3);
sum=add1(num1, num2,num3);
printf("%d",sum);
效果

第四種:有參數無返回值
聲明
void add(int num1,int num2);
實現
void add(int num1,int num2)
{
int sum=num1+num2;
printf("%d\n",sum);
}
二,遞歸函數(兩個簡易的遞歸調用)
1,階乘
函數的聲明
int MyFun(int num);
函數的實現
int MyFun(int num){
// 普通函數
// int sum1=1;
// for (int i=1; i<=num; i++) {
// sum1*=i;
// }
// return sum1;
// 遞歸調用
if (num==1||num==0) {
return 1;
}else {
return num*MyFun(num-1);
}
}
調用
printf("sum=%d\n",MyFun(6));
運行效果

2,菲波那切數列數列
函數的聲明
int fbsnq(int num);
函數的實現
int fbsnq(int num){
// 遞歸
if(num==1||num==2){
return 1;
}
return fbsnq(num-1)+fbsnq(num-2);
//普通
// int n1=1,n2=1,temp=0;
// if (num==1||num==2) {
// return 1;
// }
// int i=2;
// for(;i<num;i++){
// temp=n1+n2;
// n1=n2;
// n2=temp;
// }
// return temp;
}
函數的調用
for (int i=1; i<=30; i++) {
if ((i-1)%5==0) {
printf("\n");
}
printf("%10d", fbsnq(i));
}
printf("\n\n");
運行結果
