| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2282 人关注过本帖
标题:如何 只用4行代码编写出一个从字符串到长整形的函数
只看楼主 加入收藏
Alien_Lee
Rank: 8Rank: 8
来 自:Linux帝国
等 级:蝙蝠侠
威 望:7
帖 子:149
专家分:739
注 册:2016-7-19
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:6 
如何 只用4行代码编写出一个从字符串到长整形的函数
这是曾经一个IT微软的面试题,当然意思是四条命令,目前我在网上看到的所有程序都是不满足,因为没有考虑负数。-123也是长整形函数,如果默认的话,应该是不能调用任何库函数的。请高手们积极发动你们的智慧!!!!
搜索更多相关主题的帖子: 字符串 微软 如何 网上 
2017-03-31 22:11
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:4 
程序代码:
#include<stdio.h>

long f(char *str, long n)
{
    if (*str){
        
        return f(str + 1, n * 10 + (*str - '0'));        
    }

    return n;
}

int main(void)
{
    char str[20] = "123456";

    printf("%lu\n", f(str, 0));

    return 0;
}

程序 跑正数的话 算几条?

三目运算符算几条命令来着?

[此贴子已经被作者于2017-4-1 00:47编辑过]

2017-04-01 00:45
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:4 
自从上次发那百分贴吸取教训后现在我对优化代码没咋兴趣了~现在感觉自己喜欢上了结构框架设计~就是构建一个用链表实现的小小的游戏提示框信息框架(而且还只是半成品)~代码也超过了五百行~想想那个贪吃蛇代码才三百多四百行就发现结构工程不简单啊~所以九九还是说说有时代码不是行数越少越有优势的~所以九九对这题还是省点脑子吧~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-04-01 08:19
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:4 
"四条命令"中的“命令”指什么?

程序代码:
#include <stdio.h>

long stold( const char* s )
{
    long r = 0;
    for( long sign=*s=='-'?(++s,-1):(*s=='+'?(++s,+1):+1); *s; r=sign*(sign*r*10+(*s++-'0')) );
    return r;
}

int main( void )
{
    printf( "%#ld\n", stold("123") );
    printf( "%#ld\n", stold("+123") );
    printf( "%#ld\n", stold("-123") );
    printf( "%#ld\n", stold("0") );

    return 0;
}


2017-04-01 08:47
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:4 
#include<iostream>
signed long Conv(char*str)
{
    for(int i=0,signed long n=0;i<strlen(str);i++)
    {
        n=(10*n+(str[i]-'0'))*(str[i]!='-');
    }
    return ((str[0]!='-')-0.5)*2*n;
}
int main ()
{
    std::cout<<Conv("-123454321");
    return 0;
}
//代码是可以在四行这内实现,但其实时间复杂度不敢恭维。
2017-04-01 21:40
初学编程的人
Rank: 2
等 级:论坛游民
威 望:2
帖 子:90
专家分:84
注 册:2017-3-12
收藏
得分:4 
我不信微软面试会用这种题,这种东西最多玩一玩。譬如有本书上的习题是要求用return一行返回三个数中的的中间数,例1,2,3,返回2;3,9,14返回9

我的答案很长的一句,作为练习做一下足以
int median(int x,int y,int z)
{
    return x >=  y ? (y >=  z ? y : ( x >=  z ? z : x)) :( y <= z ? y :( x >= z ? x :z)) ;
}
2017-04-02 12:32
Alien_Lee
Rank: 8Rank: 8
来 自:Linux帝国
等 级:蝙蝠侠
威 望:7
帖 子:149
专家分:739
注 册:2016-7-19
收藏
得分:0 
   
    我也是碰巧看到这个问题,如果就用四行代码要实现和atol()函数的所有功能还是有一定的挑战性的。大致都是一些简化版。我也从这个问题看到了,我对C的理解还是建立在非常基础的角度上看的。
    如果你还是和我一样在论坛上只能看懂一些简单的问题,估计视觉也我差不多,共勉吧。

  DEBUG的过程就是进步的过程,每一个小错误都是大问题!...
2017-04-04 16:06
快速回复:如何 只用4行代码编写出一个从字符串到长整形的函数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017120 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved