一、调用有参函数
例一、编写一程序,要求用户输入4个数字,输出前两个数中的最大数、后两个书中的最大数、以及四个数中的最大数。
1.0/3 不使用函数
#include<stdio.h>
int main(void)
{
float a[4];
int i;
float t, u, v;
for(i=0; i<=3; i++)
{
printf("请输入第%d个数字:", i+1);//有关数组时刻不忘i+1
scanf("%f", &a[i]);
}
if(a[0]<a[1])
{
t=a[1];
}
else
{
t=a[0];
}
if(a[2]<a[3])
{
u=a[3];
}
else
{
u=a[2];
}
if(t<u)
{
v=u;
}
else
{
v=t;
}
printf("前两个数中的最大数%f\n", t);
printf("后两个数中的最大数%f\n", u);
printf("四个数中的最大数%f\n", v);
return 0;
}
2.0/3
#include<stdio.h>
float max(float x, float y);
int main(void)
{
float a[4];
int i;
float t, u, v;
for(i=0; i<=3; i++)
{
printf("请输入第%d个数字", i+1);
scanf("%f", &a[i]);
}
t=max(a[0], a[1]);
u=max(a[2], a[3]);
v=max(t, u);
printf("t=%f, u=%f, v=%f", t, u, v);
return 0;
}
float max(float x, float y)
{
if(x>y)
{
return x;
}
else
{
return y;
}
}
3.0/3
//函数部分
float max(float x, float y)
{
return x>y?x:y;
}
例二、有两个小组,分别有5名学生和10名学生。请编程输入这些学生的成绩,并调用一个aver函数求这两个小组的平均分。
⚠️1.编写函数时形参是一个数组和数组的大小
2.定义函数时要定义行参的类型
1.0/1
#include<stdio.h>
float aver(float a[],int n);
int main(void)
{
float a1[5], a2[10];
int i;
printf("请输入第一个小组的成绩");
for(i=0; i<=4; i++)
{
scanf("%f", &a1[i]);
}
printf("请输入第二个小组的成绩");
for(i=0; i<=9; i++)
{
scanf("%f", &a2[i]);
}
printf("%f\n", aver(a1, 5));
printf("%f\n", aver(a2, 10));
return 0;
}
float aver(float a[], int n)
{
float sum=a[0], AverNum;
int i;
for(i=1; i<=n; i++)
{
sum=sum+a[i];
}
AverNum=sum/n;
return AverNum;
}
二、调用无参函数
(只做事情不返回值)
例一
1.0/2
(普通方法)
1.0/2
(调用无参函数)
#include<stdio.h>
void a();
void b();
void c();
int main(void)
{
a();
b();
c();
a();
b();
c();
return 0;
}
void a()
{
printf("1234567\n");
}
void b()
{
printf("猴博士是大帅逼\n");
}
void c()
{
printf("7654321\n");
}
例二、将10个整数由小到大排序
1.0/2
(不使用函数)
#include<stdio.h>
int main(void)
{
int a[10];
int i, j, t;
for(i=0; i<=9; i++)
{
printf("请输入第%d个整数", i+1);
scanf("%d", &a[i]);
}
for(i=0; i<=8; i++)
{
for(j=i+1; j<=9; j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for(i=0; i<=9; i++)
{
printf("%d ", a[i]);
}
return 0;
}
2.0/2
#include<stdio.h>
void Order(int a[], int n);
int main(void)
{
int a[10];
int i;
for(i=0; i<=9; i++)
{
printf("请输入第%d个数字", i+1);
scanf("%d", &a[i]);
}
Order(a,10);//已经完成排序,只需要输出
for(i=0; i<=9; i++)
{
printf("%d ", a[i]);
}
return 0;
}
void Order(int a[], int n)
{
int i, j, t;
for(i=0; i<=n-2; i++)
{
for(j=i+1; j<=n-1; j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
}
三、函数的嵌套
例一、编程输入4个整数,并找出其中最大的数
#include<stdio.h>
int max4(int a, int b, int c, int d);
int max2(int a, int b);
int main(void)
{
int a, b, c, d, Max;
printf("请输入4个整数:\n");
scanf("%d %d %d %d", &a, &b, &c, &d);
Max=max4(a,b,c,d);
printf("最大数为%d\n", Max);
return 0;
}
int max4(int a, int b, int c, int d)
{
return max2(max2(max2(a,b),c),d);
}
int max2(int a, int b)
{
return a>b?a:b;
}
四、函数的递归
(不常用,在这里就不说了)