一、调用有参函数
例 1:编写一程序,要求用户输入 4 个数字,输出前两个数中的
最大数、后两个数中的最大数以及四个数中的最大数。
#include<stdio.h>
int main()
{
float max(float x,float y);
float a[4];
int i;
float u,v,w;
for(i=0;i<=3;i++)
{
printf("请输入第%d个数字:",i+1);
scanf("%f",&a[i]);
}
u=max(a[0],a[1]);
v=max(a[2],a[3]);
w=max(u,v);
printf("前两个数中最大的数为:%f\n",u);
printf("后两个数中最大的数为:%f\n",v);
printf("四个数中最大的数为:%f\n",w);
return 0;
}
float max(float x,float y)
{
return(x>y?x:y);
}
例 2:有两个小组,分别有 5 名学生和 10 名学生。请编程输入
这些学生的成绩,并调用一个 aver 函数求这两个小组的平均分。
#include<stdio.h>
int main()
{
float aver(float a[],int n);
float zu1[5],zu2[10];
int i;
printf("请输入第一组学生成绩(5名学生):\n");
for(i=0;i<=4;i++)
{
scanf("%f",&zu1[i]);
}
printf("请输入第二组学生成绩(10名学生):\n");
for(i=0;i<=9;i++)
{
scanf("%f",&zu2[i]);
}
printf("第一组平均分是:%f\n",aver(zu1,5));
printf("第二组平均分是:%f\n",aver(zu2,10));
//注意:在函数例需要调用整个数组的时候,都是使用数组的名字,而不是[]里面加上某一个数字,
//并且,当我们这个函数需要知道数组总共有多少个元素的时候,都是使用逗号加上元素个的形式写出来
//这点需要记住,用数组都是这么用的
return 0;
}
float aver(float a[],int n)
{
float sum=a[0],pingjunshu;
int i;
for(i=0;i<n;i++)
{
sum=sum+a[i];
}
pingjunshu=sum/n;
return(pingjunshu);
}
注意:在函数例需要调用整个数组的时候,都是使用数组的名字,而不是[ ]里面加上某一个数字,并且,当我们这个函数需要知道数组总共有多少个元素的时候,都是使用逗号加上元素个的形式写出来。这点需要记住,用数组都是这么用的
二、调用无参函数
例1:请编程输出以下内容:
1234567
我是大帅逼
7654321
我是大帅逼
7654321
我是大帅逼
#include<stdio.h>
int main()
{
void a();
void b();
void c();
a();
b();
c();
b();
c();
b();
return 0;
}
void a()
{
printf("1234567\n");
}
void b()
{
printf("我是大帅逼\n");
}
void c()
{
printf("7654321\n");
}
例 2:请编程输入 10 个整数,并将这 10 个数由小到大排序。
#include<stdio.h>
int main()
{
void sort(int a[],int n);
int a[10],i;
for(i=0;i<=9;i++)
{
scanf("%d",&a[i]);
}
sort(a,10);
printf("排序后的整数依次是:\n");
for(i=0;i<=9;i++)
{
printf("%d\t",a[i]);
}
printf("\n");
return 0;
}
void sort(int a[],int n)
{
int x,y,t;
for(x=0;x<n-1;x++)
{
for(y=x+1;y<n;y++)
{
if(a[x]>a[y])
{
t=a[x];
a[x]=a[y];
a[y]=t;
}
}
}
}
三、函数的嵌套
例 1:请编程输入 4 个整数,并找出其中最大的数。
#include<stdio.h>
int main()
{
int max4(int a,int b,int c,int d);
int a,b,c,d,zuidashu;
printf("请输入4个整数:\n");
scanf("%d%d%d%d",&a,&b,&c,&d);
zuidashu=max4(a,b,c,d);
printf("最大数为:%d\n",zuidashu);
return 0;
}
int max4(int a,int b,int c,int d)
{
int max2(int a,int b);
return(max2(max2(max2(a,b),c),d));
}
int max2(int a,int b)
{
return(a>b?a:b);
}
四、函数的递归
例 1:有 5 个学生,第 5 个学生比第 4 个学生大 2 岁,第 4 个学生
比第 3 个学生大 2 岁,第 3 个学生比第 2 个学生大 2 岁,第 2 个
学生比第 1 个学生大 2 岁,第 1 个学生是 10 岁。请编程计算出第
5 个学生的年龄。
#include<stdio.h>
int main()
{
int age(int n);
printf("第5个学生的年龄是:%d\n",age(5));
return 0;
}
int age(int n)
{
int nianling;
if(n==1)
{
nianling=10;
}
else
{
nianling=age(n-1)+2;
}
return(nianling);
}
例 2:用递归方法求 n!
#include<stdio.h>
int main()
{
int jiecheng(int n);
int n;
printf("请输入一个整数:");
scanf("%d",&n);
printf("%d!=%d\n",n,jiecheng(n));
return 0;
}
int jiecheng(int n)
{
int result;
if(n<0)
{
printf("n不能小于0!");
}
else if(n==0||n==1)
{
result=1;
}
else
{
result=jiecheng(n-1)*n;
}
return(result);
}
使用函数的递归的时候,一定要写出初始状态的值,然后一定要写出相邻之间的关系是什么