第五天函数复习

1.函数的定义和使用
1.C语言中是由函数组成的,为了方便阅读程序,快速的查找到错误C语言编写的时候都是有模块进行组合的(函数)
函数的定义
数据类型 函数名(形式参数)
例如
int Code(int n,int b)//只要有形式参数那么实际参数就要传值进来
{
return n+b;//返回他们两个相加的数
}
int main()
{
int i = Code(a,b);//注意实参传过去的只是一个值,函数中的n和b都会新建一个变量用来保存他们.
}
用函数打印 摇钱树的 树字
void tree()//树
{
char* tree[13]{
” * *”,
” * *”,
” * *”,
* * *”,
” * * * *“,
* * * *”,
” * * * * *”,
“* * * * * * *”,
” * * * * *”,
” * *”,
” * *”,
” * * *”,
” * * *”,

};
int i = 0;
for (i = 0; i < 13; i++)
{
    printf("%s\n", tree[i]);//打印出来
}
printf("\n");

}
变量作函数参数传值要注意的问题
函数里面形参的变量都是新建变量.所以在函数内部进行变量交换是不会影响main函数里面的值.
函数整理
1.函数的原型和调用
使用函数前必须事先定义或者声明函数
定义: 数据类型 函数名 (形式参数)
函数声明 数据类型 函数名 (形式参数);
2.函数的形参和实参
函数的形参和实参,函数定义的时候括号里面的是形参,
调用函数的时候传入的值是实际参数
当作为函数调用参数的时候,函数内部的形式参数会接受实际参数的值,但是函数的形式参数会在内存中新建一个变量用来接收.所以在函数内部改变变量的值不会影响别的函数里面参数的值.单向传递.
3.函数的递归
函数可以调用自己,这成为函数的递归.
递归可以理解为此函数调用别的函数,只不过别的函数和此函数是一样的.
递归分为先序递归和后续递归.
先序递归会按照顺序输出,后续递归会按照逆序输出.
例题,求斐波拉奇序列
0,1,1,2,3,5,8,13,21….每次都是加他们前边之间的和
算法
int DG(int n )//求斐波拉的第几个数的值是
{
if(n==0)
return 0;
if(n==1)
return 1;
else
{
retutn DG(n-1)+DG(n-2);//总是他前边的数加上后边的数字.
}
}
例题2:递归求字符串的长度
int DG(char *str,int n)//分别传入字符串数组,还有字符串数组从哪里开始.
if(str[n]!=”)//判断条件,如果从数组第一个元素开始检测他后边的元素是否等于0等于0就代表字符串结束,返回0之前的所有数字.
{
return DG(str,n+1)
}
else
{
return n;
}
例题三,求任意一个数的二进制,(递归求法)
int DG(int n)//传入一个10进制的数
{
//10转二进制是取余数/2
int i = n%2;//吧取余数之后的数赋值给i
if(n>0)//如果是n>0的时候就执行DG如果等于0那么就代表没有余数了
{
DG(n/2);
printf(“%d\n”,i);//放在递归函数后面那么执行完之后才会一步一步的逆置输出.
}
}

例题4求10转16进制
int DG(int n)//同十进制一样,这里是换成%16 /16了
{
int i = n%16;
if(n>0)
{
DG(n/16);
printf(“%c”,HEX(i));//注意这里我有加了一个函数,因为如果不加这个函数咱们输入10他显示的市十六进制的10而不是a
有人可能要问了%x不行吗,这些
}你们都可以去试试
}

char HEX(int n)//这个函数调用不解释了.
{
switch (n)
{
case 0: return’0’;
case 1: return’1’;
case 2: return’2’;
case 3: return’3’;
case 4: return’4’;
case 5: return’5’;
case 6: return’6’;
case 7: return’7’;
case 8: return’8’;
case 9: return’9’;
case 10:return’a’;
case 11:return’b’;
case 12:return’c’;
case 13:return’d’;
case 14:return’e’;
case 15:return’f’;
default:’0’;
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值