【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);
}
相关推荐
土豆.exe2 小时前
Fastjson2 2.0.53 哈希碰撞 RCE:从原理到三种打法
算法·哈希算法
黄河123长江2 小时前
有限Abel群的结构()
算法
Jerry3 小时前
LeetCode 92. 反转链表 II
算法
骊城英雄3 小时前
Rust从入门到精通-trait
人工智能·算法·rust
caishenzhibiao3 小时前
期货先行者主图 同花顺期货通指标
java·c语言·c#
可编程芯片开发3 小时前
基于PI控制算法的pwm直流电机控制系统Simulink建模与仿真
算法
怕浪猫4 小时前
2840亿参数只卖白菜价:DeepSeek V4 Flash 正式版上线,Agent 能力暴涨6倍
人工智能·算法
让学习成为一种生活方式4 小时前
苄基异喹啉生物碱糖基转移酶UGT74AN1晶体--Journal of Agricultural and Food Chemistry
人工智能·算法
alphaTao4 小时前
LeetCode 每日一题 2026/7/27-2026/8/2
python·算法·leetcode
2501_926978334 小时前
提示工程的实战报告(二):模型的失败模式与边界行为
人工智能·深度学习·算法