函数
函数是C语言中非常重要的一部分,当你编写的代码过多时,会给观看者很大的压力,因为大量的代码全部放在main函数里,会使得程序的可读性大大降低,如果要修改程序,也会非常困难;因此,便存在了函数,使用函数可以使程序可读性大大上升,还可以是其调理更加简洁,有时还可以大幅度缩减代码量,为程序员和观看者创造了优利的条件。
构建函数时,首先要定义函数,从函数的类型,名称,参数,都要定义;其中main()被称为主函数,其他函数被称为子函数;如果子函数在main()函数之前,将不用在main()函数中定义;但如果在main()函数之后,则需要在main()函数中定义;或者直接将子函数定义为全局变量;这样,就可以再main()函数中使用所定义的子函数了;子函数不能调用main()函数。
#include<stdio.h>
#include<windows.h>
int main()
{
int a=5,b=9,c=3,n,m;
int Max(int i,int j);
n=Max(a,b);
m=Max(n,c);
printf("Max=%d\n",m);
system("pause");
return 0;
}
int Max(int i,int j)
{
if(i>j)
return i;
else
return j;
}
上述程序定义了Num函数比较大小,并返回最大值,连续两次调用Num函数,找出了a,b,c中最大的数,Max=9。
函数中一切计算改变的都是形参,如果想改变main()函数中的实参,就必须将实参的地址代入新建函数中,使之直接改变实参。
#include<stdio.h>
#include<windows.h>
int main()
{
int a=1,b=10;
int move1(int a,int b);
int move2(int a,int b);
move1(a,b);
printf("a=%5d b=%5d\n",a,b);
move2(a,b);
printf("a=%5d b=%5d\n",a,b);
system("pause");
return 0;
}
int move1(int a,int b)
{
int t;
t=a;
a=b;
b=t;
return 0;
}
int move2(int &a,int &b)
{
int t;
t=a;
a=b;
b=t;
return 0;
}
上述函数为交换a,b,的值,在经过move1函数后,a,b并没有交换,而在经过move2函数后,a,b交换了值;前者交换的是形参,实参并没有改变,而后者直接改变了实参,所以a,b的值交换了。
递归
递归是函数不断自我调用的一种方法,直到条件不满足时,并将返回值一次次返回给所调用的上一层函数,追后返回给main()函数;它可以轻松的解决一些特殊的问题,如:汉诺塔,八皇后等。
#include<stdio.h>
#include<windows.h>
int main()
{
int a,b;
int dg(int a);
scanf_s("%d",&a);
dg(a);
printf("%d的阶乘是%d\n",a,dg(a));
system("pause");
return 0;
}
int dg(int a)
{
if(a==1||a==0)
return 1;
else
return dg(a-1)*a;
}
上述函数可以输出a的阶乘,输入a,不断调用dg函数,使之达成所求数的阶乘。