今天,我们来谈谈C语言中的函数。注意这里的函数不是数学上的函数,不是自变量或因变量,而是程序。
此外,这个程序可以被另一个程序直接引用,也可以被称为子程序或子方法。
就像每次写代码都会率先写一个主函数,就是int main(){},这是一个主函数,所以这个函数之外的其他函数都可以称为子函数。
对函数定义的详细讲解
然而如下图所示,对于int main(){},它实际上有一个返回值,要写成return 0。之所以没有写在这里,是因为Xcode的默认返回值是0,但为了更严谨,还是写出来比较好。
常用的类型名称有很多,比如void、long、int等等。
我主要用int,当然看到这里,有些朋友会有疑问,int main和void main有什么区别?
其实区别很简单。你可以看到int和void,关键的区别在于它们。
Int类型表示返回值是int,而void没有返回值。
但是我们在编写的时候,main方法一般使用int main(){},因为很多编译器都需要一个返回值,默认返回值为0,而void没有返回值,可能会出现一些问题。
就像mac上的Xcode一样,使用void main后会有一个警告,所以为了更好的移植代码,我选择了使用int main(){}。
具体实例
说了这么多,看了这么多,还不如实际给几个问题有效。我计划在这里提两个问题,这是我前段时间提到的。
,一道很简单,就是对奇偶数的判断,另一道则是输出斐波那契数列,要求使用函数的形式做出这两道题。首先是奇偶数判断,给出流程图:
注意,为何我不把子函数放在主函数的后面呢,这里的原因我之后会提到。
其实思路非常明确,就是先写子函数,子函数的目的就是判断奇偶数,那奇偶数的判断条件我昨天也讲过了,就是除以2取余数,判断是否为0,为0则为偶数,否则为奇数。
代码实现:
#include<stdio.h>
void evenodd(int n){
if(n%2==0){//取余为0
printf("it is an evenn");
}
else{
printf("it is a oddn");
}
}
int main() {
//输入一个整数,主要是用来判断的
int number = 0;//定义一个整数
scanf("%d", &number);
evenodd(number);
}
至于为什么不把子函数这一块给放在后面呢,原因在于:
C99它是不支持隐式声明的,C语言啊是自上而下运行的,所以按照上图这样的顺序运行下去,在主函数里,压根就没有定义过evenodd,所以解决办法就是把evenodd的函数放到主函数前面去。
如下图所示,结果测试也是正确的。
其次是斐波那契数列,给出流程图:
与奇偶数判断相比,斐波那契数列在子函数中较为复杂了些,但是在主函数中就很简单了,直接调用即可。
代码实现:
#include<stdio.h>
void fibonacci(){
int a = 0;
int b = 1;
int sum = 0;
for(int i = 0; i < 10; i++){
printf("%d ",sum);
sum = a+b;
b = a;
a = sum;
}
printf("n");
}
int main() {
fibonacci();
}
结果测试:
总结
函数其实并不难,但是这也是一个需要掌握的方法,毕竟掌握了函数,在写程序的时候就能加快速度,减少重复工作。