【C语言】函数

阐述:

函数就是功能。每一个函数用来实现一个功能。函数名字要反映其代表的功能。

简单运用:

输出一行*,一行文字,再一行*。

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);
}
相关推荐
qystca17 分钟前
洛谷 P11242 碧树 C语言
数据结构·算法
冠位观测者24 分钟前
【Leetcode 热题 100】124. 二叉树中的最大路径和
数据结构·算法·leetcode
悲伤小伞29 分钟前
C++_数据结构_详解二叉搜索树
c语言·数据结构·c++·笔记·算法
m0_675988232 小时前
Leetcode3218. 切蛋糕的最小总开销 I
c++·算法·leetcode·职场和发展
佳心饼干-4 小时前
C语言-09内存管理
c语言·算法
物联网牛七七4 小时前
4、数据结构与算法解析(C语言版)--栈
c语言·栈操作
dbln4 小时前
贪心算法(三)
算法·贪心算法
songroom5 小时前
Rust: offset祼指针操作
开发语言·算法·rust
F-2H6 小时前
C语言:指针4(常量指针和指针常量及动态内存分配)
java·linux·c语言·开发语言·前端·c++
chenziang17 小时前
leetcode hot100 环形链表2
算法·leetcode·链表