阐述:
函数就是功能。每一个函数用来实现一个功能。函数名字要反映其代表的功能。
简单运用:
输出一行*,一行文字,再一行*。
#include<stdio.h>
int main(){void print_star();void print_message();print_star();print_message();print_star();return 0;
}void print_star(){printf("***************\n");
}void print_message(){printf("Hello world!\n");
}
函数的实参与形参的传递
比较大小。
#include<stdio.h>
int main(){int max(int x,int y);int a,b,c;printf("Enter two numbers :\n");scanf("%d %d",&a,&b);c = max(a,b);printf("%d is max\n",c);return 0;
}int max(int x,int y){int z;z = x > y ? x : y;return(z);
}
函数的嵌套使用
比较4个数的大小。
#include<stdio.h>
int main(){int max4(int a,int b,int c,int d); // 对 max4 函数的声明int a,b,c,d,max;printf("Enter 4 numbers :\n");scanf("%d %d %d %d",&a,&b,&c,&d);max = max4(a,b,c,d);printf("max = %d\n",max);return 0;
}int max4(int a,int b,int c,int d){ // 定义 max4 函数int max2(int a,int b);int m;m = max2(a,b);m = max2(m,c);m = max2(m,d);return(m);
}int max2(int a,int b){ // 定义 max2 函数if(a > b){return a; // 若 a 大,则将 a 作为返回值}else{return b;}
}
函数的递归调用
求n!
#include<stdio.h>
int main(){int fac(int n);int n;int y;printf("Enter a number :");scanf("%d",&n);y = fac(n);printf("%d! = %d",n,y);return 0;
}int fac(int n){ int f;if(n < 0){printf("n < 0,data error!");}else if(n == 0 || n == 1){f = 1;}else{f = fac(n - 1)*n;}return (f);
}
数组作为函数参数
在一个一维数组score内,放5个学生的成绩,求平均成绩。
#include<stdio.h>
int main(){float average(float array[5]);float score[5],aver;int i;printf("Enter 5 scores :\n");for(i = 0;i < 5;i++){scanf("%f",&score[i]);}printf("\n");aver = average(score);printf("average score is %5.2f\n",aver);return 0;
}float average(float array[5]){int i;float aver,sum = array[0];for(i = 1;i < 10;i++){sum = sum + array[i];}aver = sum/5;return(aver);
}
用选择法对数组中10个整数按由小到大排序。
#include<stdio.h>
int main(){void sort(int array[],int n);int a[10],i;printf("Enter array :\n");for(i = 0;i < 10;i++){scanf("%d",&a[i]);}sort(a,10);printf("The sorted array :\n");for(i = 0;i < 10;i++){printf("%d ",a[i]);}printf("\n");return 0;
}void sort(int array[],int n){int i,j,k,t;for(i = 0;i < n-1;i++){k = i;for(j = i+1;j < n;j++){if(array[j] < array[k]){k = j;}}t = array[k];array[k] = array[i];array[i] = t;}
}
多维数组作函数参数
有一个3×4矩阵,求所有元素中的最大值。
#include<stdio.h>
int main(){int max_value(int array[][4]);int a[3][4] = {{1,3,5,7},{2,4,6,8},{13,16,15,18}};printf("Max value is %d\n",max_value(a));return 0;
}int max_value(int array[][4]){int i,j,max;max = array[0][0];for(i = 0;i < 3;i++){for(j = 0;j < 4;j++){if(array[i][j] > max){max = array[i][j];}}}return (max);
}
局部变量和全局变量
有一个一维数组,内放10个学生成绩,写一个函数,当主函数调用此函数后,能求出平均分、最高分和最低分。
#include<stdio.h>
float Max = 0,Min = 0; // 定义全局变量 Max 和 Min
int main(){float average(float array[],int n);float ave,score[10];int i;printf("Enter 10 scores :\n");for(i = 0;i < 10;i++){scanf("%f",&score[i]);}ave = average(score,10);printf("max = %5.2f\nmin = %5.2f\naverage = %5.2f\n",Max,Min,ave);return 0;
}float average(float array[],int n){int i;float aver,sum = array[0];Max = Min = array[0];for(i = 1;i < n;i++){if(array[i] > Max){Max = array[i];}else if(array[i] < Min){Min = array[i];}sum = sum + array[i];}aver = sum / n;return(aver);
}