iOS_数学函数Math Functions(计算,取整,平方立方,逆序运算,排序等等)
IOS排序算法(https://www.jianshu.com/p/605d688f29be)
最近找工作遇到笔试题,因为基础太差,简单的数学函数没能写出来,现在做个总结吧。希望能帮到你。
题目:计算小球经过总路程
小球从10米高落下,每次弹起高度为之前的 70%,求当小球最后一次落地时(高度小于0.01m)经过的所有路程。
解:考察的是指数运算,要用到iOS中指数运算公式,powf (float , float)
float toallH = 10.0;
float MaxScall = 0.7;
float ToallLength;
float toall = 0.0 ;
for (int i =0 ; i < MAXFLOAT ; i ++) {
ToallLength = toallH * powf (MaxScall , i);
if (ToallLength < 0.01) {
NSLog(@" ToallLength == %.2f ,%d", toall - 10,i );
return;
}
toall += ToallLength*2 ;
}
NSLog 输出为 : 56.61 经过20次弹起。
题目:逆序数运算 如 123的逆序数为 321,求一个4位数减去它的逆序数结果为7902,求出符合结果的最大值和最小值。
解:考察的是思路和排序,求一个逆序数需要连续模运算、连续除法运算,C语音代码为:
int a,b,i;
a = 1230;
for(i=0;i<4;i++)
{
b=a%10;
if(b)
NSLog(@"%d", b);
a=a/10;
}
显然这不是我们想要的。正解如下:
int Data,NewData,a,b,c,d;
NSMutableArray *dataArray = [NSMutableArray array];
for (int i =1000; i <9999; i ++) {
Data = i;
a=Data%10; /* 原数的个位 */
c=Data/100%10; /* 原数的百位 */
b=Data/10%10; /* 原数的十位 */
d=Data/1000 ; /* 原数的千位 */
NewData=a*1000+b*100+c*10+d;
if (Data - NewData == 7902) { // 条件
NSLog(@"%d 的逆序数为 %d",Data,NewData);
[dataArray addObject:[NSNumber numberWithInt:Data]];
NSLog(@"%@ ----- %@ ",dataArray.firstObject,dataArray.lastObject);
}
我这里并未做数组排序,以为添加数组已经是有序的,只需拿出第一个和最后一个
输出的结果为 :8010 ---- 9891
IOS排序算法请戳(https://www.jianshu.com/p/605d688f29be)