阐述:
函数就是功能。每一个函数用来实现一个功能。函数名字要反映其代表的功能。
简单运用:
输出一行*,一行文字,再一行*。
cpp
#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");
}
函数的实参与形参的传递
比较大小。
cpp
#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个数的大小。
cpp
#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!
cpp
#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个学生的成绩,求平均成绩。
cpp
#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个整数按由小到大排序。
cpp
#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矩阵,求所有元素中的最大值。
cpp
#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个学生成绩,写一个函数,当主函数调用此函数后,能求出平均分、最高分和最低分。
cpp
#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);
}