C语言第五课:函数

一、调用有参函数

例 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);
}

使用函数的递归的时候,一定要写出初始状态的值,然后一定要写出相邻之间的关系是什么

发布了13 篇原创文章 · 获赞 15 · 访问量 2169

猜你喜欢

转载自blog.csdn.net/weixin_44337241/article/details/104209249