今上午开始讲到了函数,函数在c语言中是很重要的的部分。
函数的定义:函数名,参数列表,返回值。
函数的几种类型:
1没有返回值,没有参数
2没有返回值,但是有参数
3有返回值,但是没有参数
4有返回值,有参数
形参变量还有实参
1形参变量只有在被调用时才会分配内存单元,在调用结束时,即释放所分配的内存单元,因此,形参只有在函数内部使用
2实参可以是常量,变量,表达式,函数等,无论实参是何种类型的量,在进行函数调用时,他们必须有确定的值,一便把这些值传递的实参。
3函数在调用时发生的数据传递是单向传递的,只能把实参的值传递形参,不能反向传递,在内存中,形参还有实占有不同对的单元,在函数调用时,给形参分配存储单元,因此,在函数调用时,形参的值发生变化,实参的值是不会发生变化的。
函数的递归调用
函数的递归调用在C语言中是很重要的,重要的事情说三遍,
递归的三要是:1重复调用自己 2一定要有边界,不然死循环 3算法
下面是函数的递归调用常用例子
用递归把十进制转为二进制
#include<stdio.h>
#include"day8.h"
//void main(){
//add();
//
//}
void get(int a){
int i;
if (a == 0) return 0;
else {
i = a % 2;
get(a/2);
printf("%d", i);
}
}
void main(){
int num;
printf("输入的十进制数\n");
scanf_s("%d", &num);//输入的十进制数
get(num);
system("pause");
}
递归求偶数的和
#include<stdio.h>
#include"day8.h"
//void main(){
//add();
//
//}
int s = 0;
void get(i){
if (i <= 100){
if (i%2==0){
s += i;
}
get(++i);
printf("%d", s);
}
else if(i>100){
return 0;
}getchar();
}
void main(){
int i = 1;
get(i);
}
随机数0到n之间偶数的和
//#include<stdio.h>
//#include "day8.h"
void add(){
int n, i, j;
int s = 0;
scanf_s("%d",&n);
getchar();//输人随机数n
for (i = 2; i <= n; i++)
{
for (j = 2; j <= i - 1; j++)
{
if (i%j == 0)
break;
}
if (j == i)
s = s + i;
printf("%d,%d\n",i,s);
}
getchar();
getchar();
}