【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);
}
相关推荐
Moniane2 分钟前
Web爬虫指南
爬虫·算法
电鱼智能的电小鱼20 分钟前
服装制造企业痛点解决方案:EFISH-SBC-RK3588 柔性化吊挂调度方案
网络·人工智能·嵌入式硬件·算法·制造
夕颜11121 分钟前
降噪算法的效果分析
算法
Code小翊25 分钟前
希尔排序基础理解
数据结构·算法·排序算法
_dindong40 分钟前
笔试强训:Week -2
笔记·学习·算法
Pluchon43 分钟前
硅基计划4.0 算法 二叉树深搜(DFS)
java·数据结构·算法·leetcode·深度优先·剪枝
颜酱1 小时前
用导游的例子来理解 Visitor 模式,实现AST 转换
前端·javascript·算法
CUC-MenG1 小时前
2025牛客国庆集训派对day7 M C 个人题解
数学·算法·线段树·差分·扫描线
wangjialelele1 小时前
端口号、常见协议和套接字
linux·运维·服务器·c语言·网络
deng-c-f1 小时前
Linux C/C++ 学习日记(26):KCP协议(二):kcp源码分享
c语言·c++·学习·网络编程·kcp