GOTO语句和函数调用、递归

//关机程序:只要运行电脑就在一分钟内关机
//如果输入“张霞”,就取消关机。
//shutdowm -s -t 60 设置关机;shutdowm -a  取消关机
//C语言:system()执行系统命令

GOTO语句适合多层循环时跳出循环,同时,GOTO语句只能在一个函数范围内跳转,不能跨函数

//自定义函数:函数名、函数类型,函数返回类型 EG:int fun(int a,int b);

用函数求出两个数中的最大值

//用函数交换两个数字的值

方法一:加&可以将函数Swap中的值改变后返回

 方法一:用指针,地址来改变其值

指针:a=10,pa=&a;*pa=20;此时a的值为20

//传值调用:实参仅把值传给形参,形参里面值得变化不影响实参的值

传址调用:实参将地址传给形参,形参可以根据地址来对实参的数值进行改动

练习:1.写一个函数可以判断一个数是不是素数

2.写一个函数判断一年是不是闰年

3.写一个函数,实现一个整形有序数组的二分查找

4.写一个函数,每调用一次这个函数,就会将num的值增加1

1.写一个函数可以判断一个数是不是素数

2.写一个函数判断一年是不是闰年

3.写一个函数,实现一个整形有序数组的二分查找

4.写一个函数,每调用一次这个函数,就会将num的值增加1

//函数的嵌套调用和链式访问

printf返回的是打印的字符个数

函数可以嵌套调用但不可以嵌套定义

//函数的声明和定义

函数要先声明后使用换句话说就是函数定义可以放在函数使用之后,但是函数使用之前必须先声明函数。

 //递归:函数自己调用自己
接受一个整形值,按照顺序打印它的每一位
EG:输入1234;输出 1 2 3 
print(1234); print(123) 4;print(12) 3 4;print(1) 2 3 4

递归注意事项:1、不能一直递归,需要有递归条件,每次递归要接近于递归条件

2.递归层次不能太深

//编写函数不允许创建临死变量,求字符串的长度

//用递归:求n的阶乘1*2*3 ... *n

//求第n个斐波那契数列
方法一:Fib(n-1)+Fib(n-2)=Fib(n)
eg:1 1 2 3 5 8 12 21 34 55 ...
    a b c
      a b c
        . . .
方法二:采用循环实现:c=a+b

方法一:Fib(n-1)+Fib(n-2)=Fib(n)

方法二:采用循环实现:c=a+b

//输出乘法口诀表

//输出乘法口诀表,行由自己指定(使用函数)

//字符串逆序(用非递归实现)
要求:1、函数名reverse_string(char* string)
2、将参数字符串中的字符反向排序,非逆序打印
3、不能使用C函数库中的字符串操作函数
4、EG:char arr[]="abcdef"逆序为:fedcab

字符串逆序(用递归实现)
要求:1、函数名reverse_string(char* string)
2、将参数字符串中的字符反向排序,非逆序打印
3、不能使用C函数库中的字符串操作函数
4、EG:char arr[]="abcdef"逆序为:fedcab

递归思路:1、a取下 2、f放入arr[0] 3、f处放'\0'
4、逆序中间的字符串“bcde\0” 5、'\0'处放入a

//计算一个数的每位之和(用递归实现)
要求:1、函数名DigSum(unsigned int n)
2、返回组成它的数字之和
3、不能使用C函数库中的字符串操作函数
4、EG:Digsum(1729),返回1+7+2+9,即19;输入1729,输出19

//递归用函数实现n的k次方
EG:二的三次方等于八
思路:1、n*Pow(n,k-1)  2、1.0/Pow(n,-k)

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值