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");
運行結果