首页
社区
课程
招聘
[原创]刘涛涛的面试题
发表于: 2010-8-28 17:18 28952

[原创]刘涛涛的面试题

2010-8-28 17:18
28952
收藏
免费 7
支持
分享
最新回复 (47)
雪    币: 326
活跃值: (88)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
26
[QUOTE=forgot;852494]继续娱乐
sum(map(int, ''.join(x if x.isdigit() else ' ' for x in s).split()))
[/QUOTE]

多谢指点,我用filter不能带else,郁闷了很久.
2010-8-30 21:18
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
27
W 哥拒绝你是他的损失啊 。。。。。。。。
S 哥忽视你,是在考验你啊,可怜的孩子
2010-8-30 21:25
0
雪    币: 1163
活跃值: (137)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
28

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
	const char* pCh = "我20你30他40那个人999";
	byte* pByte = (byte*)pCh;
	int len = strlen(pCh);
	unsigned char* szTmp = new unsigned char[len + 1];
	memset(szTmp, 0, len + 1);
	int pos = 0;
	int sum = 0;
	do 
	{
		if (pByte[0] >= 0x30 && pByte[0] <= 0x39)
		{
			szTmp[pos] = (char)pByte[0];
			pos++;
		}
		else if (pos)
		{
			int tmp = atoi((const char*)szTmp);
			sum += tmp;
			pos = 0;
			memset(szTmp, 0, len + 1);
		}
		pByte++;
	} while (--len >0 || pos);
	printf("sum is %d.", sum);
}

2010-8-31 07:54
0
雪    币: 88
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
楼主,如果是五 你怎么处理呢?
2010-9-2 09:57
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
嘿嘿 其实只用检测出这里面的数字就可以了,高级语言可以用正则表达式过滤出来,c语言可以用asi码判断
2010-9-2 11:55
0
雪    币: 391
活跃值: (135)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
31
没想到我的一点学习心得竟然被推荐为精华,小弟真是惭愧,我一定继续努力学习,争取什么时候发表一篇真正算得上精华的文章





h哥,我用的也是VC++6.0,应该可以不做任何修改编译通过的,是否因为你把代码保存为.cpp所以才要做修改呢?
另外我现在还没毕业当然更没就业,难道你要给我推荐工作么?



g哥,如果是取汉字数字相加的话,那就应该算做另一道题目了
2010-9-3 10:45
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
C哥   你好强大!
2010-9-3 12:17
0
雪    币: 1163
活跃值: (137)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
33
恩。是哦,呵呵。向你学习。
2010-9-3 13:08
0
雪    币: 808
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
34
和编程实现字符串中删除字符或字符串类似吧
例如:从“qasjkddmrgdfegreger阿购房贷款法国队海关法dsgdfhgfb”删除“gdf”字符串
2010-9-3 13:21
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
35
受益匪浅学习了
2010-9-10 11:52
0
雪    币: 326
活跃值: (88)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
36
py表示毫无压力,支持汉字相加

s = '你54839865486548650468054658847397577599他5542385997788999345666六六六66666666666666999999999999999999999999我8888888888888888888888888888888888888'

b = dict( zip( '一 二 三 四 五 六 七 八 九 零'.split( ) ,"1234567890" ) )

s = reduce( lambda s , x : s.replace( x[ 0 ] ,x[ 1 ] ) , ( x for x in b.items( ) ),s )

print sum( map ( int , ''.join( x if x.isdigit( ) else ' ' for x in s).split( ) ) )

输出554238599778899934566666730395421042104539356943547736286466486
2010-9-11 12:40
0
雪    币: 209
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
刘涛涛前辈的这个题目,看似很简单,实际不是很简单。他只说了包含一些数字,但并没有说正数还是负数,整数还是浮点数

================================================

这个属于需求不明确,以后再有人拿这个来考你,可理直气壮的要求重新出题。
2010-9-12 07:47
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
这个帖子,可以参考一下
http://bbs.pediy.com/showthread.php?t=46249
2010-9-12 22:37
0
雪    币: 437
活跃值: (273)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
39
bug: 99+1
2011-5-21 22:20
0
雪    币: 276
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40
非常easy的题目啊,呵呵
2011-5-23 13:08
0
雪    币: 285
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
学习汇编中
写个蛋疼的内联汇编版

#include <stdio.h>
#include <Windows.h>
int add(char * dst,char * src);
void asmstrrev(char * dts);
int main(int argc, char * argv[])
{
	if(argc != 2)
		return 1 ;
	int len = strlen(argv[1])*2;
	char * pbuf = argv[1];
	char * psum = (char*)malloc(len);
	memset(psum,0,len);
	char * ptemp = psum + len/2;
	while (pbuf = strpbrk(pbuf,"0123456789"))
	{
		char * locate = pbuf;
		while(*pbuf >= '0'  && *pbuf <= '9')
			pbuf++;
		memset(ptemp,0,pbuf - locate+1);
		memcpy(ptemp,locate,pbuf - locate);
		asmstrrev(ptemp);
		asmstrrev(psum);
		add(psum,ptemp);
		asmstrrev(psum);
	}
	printf("sum=%s\r\n",psum);
	gets(psum);
	free(psum);
	return 0;
}
int add(char * dts,char * scr)
{
	__asm{
		mov edi,dts;
		mov esi,scr;
		xor eax,eax;
		xor ecx,ecx;
		jmp STAR;
L1:
		mov edx,dts;
		add edx,ecx;
L2:
		or ax,0x3030;
		mov byte ptr[edx],al;
		shr ax,8;
		inc edx;
		add al,byte ptr [edx];
		aaa;
		jc L2;
		or al,0x30;
		mov byte ptr[edx],al;
		inc ecx;
STAR:
		mov al,byte ptr[esi+ecx];
		test al,al;
		jz END;
		add al,byte ptr [edi+ecx];
		aaa;
		jc L1;
		or al,0x30;
		mov byte ptr[edi + ecx],al;
		inc ecx;
		jmp STAR;
END:
	}
	return 0;
}
void asmstrrev(char * dts)
{
	__asm{
		mov edi,dts;
		mov esi,edi;
		xor ecx,ecx;
		xor eax,eax
		jmp STAR;
L1:
		inc ecx;
STAR:
		cmp al,byte ptr [edi+ecx];
		jnz L1;
		add esi,ecx;
		dec esi;
		shr ecx,1;
		test ecx,ecx;
		jz END;
L2:
		mov al,byte ptr [edi];
		xchg al,[esi];
		mov byte ptr [edi],al;
		inc edi;
		dec esi;
		loop L2;
END:
	}
	return;
}
2011-5-24 13:26
0
雪    币: 12
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
高精度运算属于初中题目。
2011-5-28 12:46
0
雪    币: 105
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
我忽然想起个笑话
原文作者:窗帘是蓝色的
语文老师:蓝色的窗帘象征着作者强烈的被压迫和被束缚的抑郁的思想感情
原文作者:窗帘真TM的是蓝色的!
2011-5-30 09:12
0
雪    币: 2194
活跃值: (1001)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
44
唉   用perl的、python的感觉压力都不大
2011-5-31 20:19
0
雪    币: 346
活跃值: (129)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
45
呵 目前我大概看一下题目觉得如果只是 整数相加的话
  应该可以搞下来 但是如果是-数和浮点数之类的 可能还需要点时间来解决
2011-6-10 23:20
0
雪    币: 1594
活跃值: (113)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
46
发现换成浮点数的话
不用百度的我,果断的悲剧了
2011-6-15 18:31
0
雪    币: 201
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
47
Dim a(0) as long
a(0)=&HC0EED0C5
debug.print a(0)
2011-6-16 16:39
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
48
自己胡乱写了一个:
#include <stdio.h>

main()
{
        char    p[ 100 ] = { "我30你40他50" };
        int                sum = 0;
        int     sum_end = 0;
        int                count = 0;
        char*   p1 = p;

        while( *p1 != '\0' )
        {
                while ( ( ( *p1 - '0' ) < 0 ) ||
                                ( ( *p1 - '9' ) > 9 )
                          )
                {
                        p1++;
                }

                sum = ( *p1 - '0' );
                p1++;
       
                while( ( ( *p1 - '0' ) >= 0 ) &&
                           ( ( *p1 - '9' ) <= 9 )   
                        )
                {
                        sum = sum * 10 + ( *p1 - '0' );
                        count++;
                        p1++;
                }
                count = 0;

                sum_end += sum;
        }

        printf( " %d\n ", sum_end );

        return;
}
2011-6-20 11:24
0
游客
登录 | 注册 方可回帖
返回
//