【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);
}
相关推荐
南巷逸清风22 分钟前
LeetCode 101.对称二叉树
c++·python·算法·leetcode
纪怽ぅ36 分钟前
浅谈——深度学习和马尔可夫决策过程
人工智能·python·深度学习·算法·机器学习
七月巫山晴36 分钟前
QChart中柱形图的简单使用并实现【Qt】
开发语言·数据结构·c++·qt·算法·排序算法
韭菜盖饭42 分钟前
LeetCode每日一题685---冗余连接 II
算法·leetcode·职场和发展
计算机学姐1 小时前
基于协同过滤算法的旅游网站推荐系统
vue.js·mysql·算法·mybatis·springboot·旅游·1024程序员节
一个不喜欢and不会代码的码农1 小时前
力扣1381:设计一个支持增量操作的栈
数据结构·算法·leetcode
如意.7591 小时前
【C++】——高效构建与优化二叉搜索树
算法
繁依Fanyi1 小时前
ArrayList和linkedList的区别
java·开发语言·算法
@小码农1 小时前
2024 CCF CSP-J/S 2024 第二轮认证 真题试卷
算法
今天秃头了吗??2 小时前
贪心算法入门(一)
java·数据结构·算法·贪心算法