今天我们来提一提C语言中的函数,注意,这里的函数可不是数学术语中的函数,不是自变量、因变量这种,而是一段程序。
且,该段程序是可以被另一段程序直接引用的,也可以叫做是子程序或者叫做子方法。
正如我每次在写代码的时候,都会率先写好一个主函数,也就是int main(){},这就是一个主函数,那在该函数外的其他函数,就可以称作为子函数了。
对函数定义的详细讲解
如下图所示,不过关于int main(){}的话,其实它有一个返回值,也就是要用return 0写出来的,之所以我这里没写是因为Xcode默认返回值为0,不过为了严谨一些,还是写上比较好。
我们一般常用的类型名有很多void、long、int等等等等。
我主要用的就是int,当然,看到这儿,有的小伙伴会有疑问,int main和void main的区别是什么呢。
其实区别很简单,可以看到int和void两个就知道,关键区别在于这两者。
int类型说明返回值为int,而void呢,就是没有返回值。
不过我们一般在写的时候,主方法普遍用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();
}
结果测试:
总结
函数其实并不难,但是这也是一个需要掌握的方法,毕竟掌握了函数,在写程序的时候就能加快速度,减少重复工作。