《算法笔记》基础知识汇总(4)

1.函数

定义:是一个实现一定功能的语句的集合,并在需要时可以反复调用而不需要重写。

无参函数: 不需要提供参数就可以执行的函数

void    如果自定义函数只是单纯实现一些语句而不需要返回值,就可以用void

#include

void print1(){
	printf("Hahhhh,\n");
	printf("Good idea!\n");
}

int main(){
	print1();
	return 0;
}

有参函数:

#include

int judge(int x){//n是整数 
	if(x>0) return 1;
	else if(x==0) return 0;
	else return -1;
}

int main(){
	int a,ans;
	scanf("%d",&a);
	ans=judge(a);
	printf("%d\n",ans);
	return 0;
}

注意: judge 函数作用对象是整数,如果输入double型的数字,函数就判断不准确了

 

全局变量:

#include
int x;
void change(){
	x=x+1;
}
int main(){
	x=10;
	change();
	printf("%d\n",x);
	return 0;
}

结果: 11

 

局部变量:

#include
void change(int x){//形参
	x=x+1;
}
int main(){
	int x=10;//实参
	change(x);
	printf("%d\n",x);
	return 0;
}

结果:10

分析:  局部变量例子中,change函数的参数 x 为局部变量,  仅在函数内部生效,通过 change(x)传进去的 x 其实只是一个副本,也就是change函数里的参数 x 和 main函数里的 x 其实是作用于两个不同函数的不同变量。称为值传递,

 

多个参数

#include
//找出最大数 
int max(int a,int b,int c){
	int m;
	if(a>=b&&a>=c) m=a;
	else if(b>=a&&b>=c) m=b;
	else m=c;
	return m;
}
int main(){
	int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	printf("%d\n",max(a,b,c));
	return 0;
}

 

以数组作为函数的参数

第一维不需要填写长度,如果是第二维,那么第二维需要填写长度

数组作为参数时,在函数中对数组元素的修改就等于对原数组元素的修改。

这一点区别于局部变量。

#include
void change(int a[],int b[][5]){
	a[0]=1;
	a[1]=3;
	a[2]=5;
	b[0][0]=1;
}
int main(){
	int a[3]={0};
	int b[5][5]={0};
	change(a,b);
	for(int i=0;i<3;i++){
		printf("%d\n",a[i]);
	}
	return 0;
}

 

函数的嵌套调用

此例相当于求三个数中的最大值

#include
int max1(int a,int b){
	if(a>b) return a;
	else return b;
} 
int max2(int a,int b,int c){
	int temp=max1(a,b);
	temp=max1(temp,c);
	return temp;
}
int main(){
	int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	printf("%d\n",max2(a,b,c));
	return 0;
}

 

函数的递归调用:一个函数调用该函数本身,自己调用自己的过程。

你可能感兴趣的:(PAT,Basic,Level)