第四章函数和递归入门
来源:互联网 发布:安卓录屏内录声音软件 编辑:程序博客网 时间:2024/06/06 08:40
第四章 函数和递归入门
1.数学库函数
ceil(x) x取整为不小于x的最小整数 ceil(-9.8)=-9.0,ceil(5.3)=6
floor(x) x取整为不大于x的最大整数 floor(-9.8)=-10.0,floor(5.3)=5
exp(x) 指数函数e^x
fabs(x) x的绝对值
fmod(x,y) x/y的浮点数余数
log(x) x(底数为e)的自然对数
log10(x) x(底数为10)的对数
pow(x,y) x的y次幂(x^y)
2.随机数生成
rand()%6,随机生成0-5的数,要是想要1-6的,直接rand()%6+1
srand(seed). Srand函数无返回值,他只会影响rand函数生成,是rand函数的种子
可让计算机通过读取自己的始终来获得种子值
srand(time(0)) time函数返回的是1970年1月1日0时到现在的秒数
3.递归
N阶乘
<span style="font-size:14px;">int factorial(int n){if(n<=1)return 1;elsereturn n*factorial(n-1);}void main(){int num;cin>>num;cout<<factorial(num);}</span>
4.枚举类型enum
enum week {mon,tue,wed,thu,fri,sat,sun};//每一个对应一个值为0,1,2……
week wk=mon;//要初始化!!
int n;
cin>>n;
switch(n)
{
case 1:
wk=mon;
break;
case 2:
wk=tue;
break;
default:
break;
}
cout<<wk;//只能输出0,1,2……
但直接这样不行:转换为枚举类型要求显式转换(static_cast、C 样式转换或函数样式转换)
case 1:
wk=1;
break;
case 2:
wk=2;
break;
这样可以:
case 1:
wk=static_cast<week>(1);
break;
case 2:
wk=static_cast<week>(2);
break;
5.其他
c++中程序组件称为函数和类
cout<<fixed<<setprcision(1); 固定后面都是保留一位小数
inline 内联函数减少函数调用的开销-让编译器在适当的地方生成代码的副本以避免函数调用。-常搭配const
inline double cube(const double side)
{
return side*side;
}
调用即cout<<cube(3);
6. /*1. 编写一个函数,求两个整数的最小值。
(提示:函数原型为 int Min(int first, int second);)
利用编写好的函数,求给定三个数的最小值,给定四个数的最小值。
*/
<span style="font-size:14px;">int Min(int f,int s){return f<s?f:s;}int Min1(int f,int s,int t){return f<Min(s,t)?f:Min(s,t);}void main(){int a,b,c;cin>>a>>b>>c;cout<<Min1(a,b,c);}</span>
<span style="font-size:14px;">#include <iostream>using namespace std;/*4.利用编号的素数判定函数(bool Prime(int n)), 验证哥德巴赫猜想。任意给定一个1000以内,大于2的偶数,它能表示成两个质数之和。*///判断是否是素数bool Prime(int n){if(n<=1)return false;for(int i=2;i<n;i++){if(n%i==0){return false;break;}else return true;}}void main(){int n;cin>>n;if((n<=1000&&n>2)&&n%2==0){for(int i=2;i<=n;i++){if(Prime(i)&&Prime(n-i))//Prime()返回的是bool值,不能相加!{cout<<"="<<i<<"+"<<n-i<<endl;break;}}}}</span>
7.编写函数并测试。给定一个整数,求它的因子(包含1,但不包含自己。)的和(如整数6,因子为1,2,3,和为6)。
函数里面也能写cout!
<span style="font-size:14px;">void yinzi(int n){int j=0;for(int i=1;i<n;i++){if(n%i==0){j+=i;cout<<i<<endl;}}cout<<"因子和:"<<j;}void main(){int n;cin>>n;yinzi(n);}</span>
/*采用从简单到复杂方法实现。
a) 编写函数。求给定整数n的位数[intNumber(int n)]
b) 编写函数。求给定整数n的第m位的数字[intBit(int n, int m);]
c) 编写函数。将整数n的第m位的数字换成k,并且返回新的整数[intWriteBit(int n, int m, int k);]
d) 数字反向。参考以下伪码
bits = Number(n);
for(i=1; i<= bits; i++)
{
k = Bit(n, i);
m = WriteBit(m, bits+1-i, k)
}
*/
<span style="font-size:14px;">#include <iostream>#include <cmath>using namespace std;//给定整数n的位数int Number(int n){int k=0;for(int i=1;i<=n;i=i*10)//只要不超过他就加位数{k++;}return k;}//求给定整数n的第m位的数字[int Bit(int n, int m);]int Bit(int n,int m){int k;//pow函数为float或double,则需转化为int,且10->10.0k=n%(int)pow(10.0,m);k=k/(int)pow(10.0,m-1);return k;}//将整数n的第m位的数字换成k,并且返回新的整数[int WriteBit(int n, int m, int k);]int WriteBit(int n,int m,int k){n=n-(int)pow(10.0,m-1)*Bit(n,m)+(int)pow(10.0,m-1)*k;return n;}void main(){int n;cin>>n;cout<<Number(n)<<"位数"<<endl;int m;cin>>m;cout<<"第"<<m<<"位是"<<Bit(n,m)<<endl;int k;cin>>k;cout<<"换成"<<k<<"后"<<WriteBit(n,m,k)<<endl;n=WriteBit(n,m,k);int bits=Number(n);int dw=0,hw=0;for(int i=1;i<=bits;i++){dw=Bit(n,i);hw=WriteBit(hw,bits-i+1,dw);//注意是对hw进行改写!}cout<<"数字反向"<<hw<<endl;}</span>
<span style="font-size:14px;">//求整数x,y的最大公约数#include <iostream>using namespace std;int Gongyueshu(int x,int y){if(y==0)return x;elsereturn Gongyueshu(y,x%y);}void main(){int x,y;cout<<"输入x,y,x>=y"<<endl;cin>>x>>y;cout<<"最大公约数"<<Gongyueshu(x,y);}</span>
- 第四章函数和递归入门
- 第四章 函数和递归例题
- 紫书第四章-----函数和递归
- 函数及递归《算法入门经典》第四章(由于能力和时间有限没有做习题)
- 算法竞赛入门经典: 第四章 函数与递归 4.5递归
- 章节读后感-第一部分-第四章:函数和递归
- 算法竞赛入门经典: 第四章 函数与递归 4.1求两点之间距离
- 算法竞赛入门经典: 第四章 函数与递归 4.2组合数
- 算法竞赛入门经典: 第四章 函数与递归 4.3孪生素数
- 算法竞赛入门经典: 第四章 函数与递归 4.4变量交换
- 算法竞赛入门经典: 第四章 函数与递归 4.6解二元一次方程
- 算法竞赛入门经典(第二版)-刘汝佳-第四章 函数与递归 刽子手游戏
- 算法竞赛入门经典(第二版)-刘汝佳-第四章 函数与递归 发放救济金Uva133
- 算法竞赛入门经典(第二版)-刘汝佳-第四章 函数与递归 信息解码
- 算法竞赛入门经典(第二版)-刘汝佳-第四章 函数与递归 洪水!
- 算法竞赛入门经典(第二版)-刘汝佳-第四章 函数与递归 骰子上色Uva253
- 算法竞赛入门经典(第二版)-刘汝佳-第四章 函数与递归 互联网协议网络Uva1590
- 算法竞赛入门经典(第二版)-刘汝佳-第四章 函数与递归 师兄帮帮忙
- android studio 程序 真机中文乱码
- 字符串问题(三)
- Xcode各种版本下载
- PHP高级工程师的面试题
- Android之学习安卓每天成长笔记
- 第四章函数和递归入门
- 读取Java文件到byte数组的三种方式
- 九度oj-1127-简单密码
- Android Studio常用快捷键
- json数据的处理
- vim 的一些常见命令收集
- memcached学习二
- spring bean scope模式配置的一些思考
- java 静态方法和实例方法的区别