iOS 笔试题小记数学函数

iOS_数学函数Math Functions(计算,取整,平方立方,逆序运算,排序等等)

参考资料: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)

你可能感兴趣的:(iOS 笔试题小记数学函数)