首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

不久前做的一些比较基础的笔试面试题目

2012-10-18 
最近做的一些比较基础的笔试面试题目最近也参加了一些笔试,也看了一些笔试的题目。感觉不管是一些普通的公

最近做的一些比较基础的笔试面试题目

最近也参加了一些笔试,也看了一些笔试的题目。感觉不管是一些普通的公司还是牛一些的,都会考一些基本的编程题和算法题。毕竟笔试的时间也就是那么1,2个小时。而其实这些基础的编程和算法题是需要考察一个人的基础扎实度的,这些题目的特点是,如果基础不扎实,思路没想到,这些题目也会话费很长时间而不得解,如果找到正确的方法,这些题目都会迎刃而解。所以说,这些题目看似简单,但是实则也是很有区分度的,也应该认真对待。

Amazon

1. 先给出一个原始的整数序列A,判断另外一个序列B是否可以通过A在栈的push和pop操作得到。例如:1,2,3,4,,然后再给出一个3,2,4,1。则B可以通过A push1 push2 push3 pop3 pop2 push4 pop4 pop1得到。使用程序输出push和pop操作顺序。

思路:关键在于比对序列A和序列B的对应关系,如果A中的数和B的不对应,则应该是push操作,使用一个临时堆栈s,保存push到s中的数,如果发现s的栈顶的数与B序列相等,则说明是pop出来的,则将s同样pop。然后继续循环操作比较B的下一个数。完整代码如下:

1-20的两个数把和告诉A,积告诉B,

A说不知道是多少,

B也说不知道,

这时A说我知道了,

B接着说我也知道了,

问这两个数是多少?

 

挺有意思的一道题:看似无从下手,其实主要解决点在这里:B说不知道之后,A即知道。则说明A中和的几种情况中,应该仅有一种导致乘积不能确定两个数是多少。应该从乘积最小的开始算起来。

如果两个数可以重复:

B=4时,可能是1*4或2*2,A=4,4=1+3,4=2+2。1,3两个数B可以确定为3,所以一定为2,2。

B=6时,可能是1*6或2*3。那么当A=5时,5=1+4,5=2+3,如果5=1+4,则B不能确定,只剩下2,3这种情况,所以两个数可以为2,3。

      

如果两个数不能重复,

A=5=2+3=1+4,如果是1,4,B=4=1*4,应该说知道,所以不是1,4,只能是2,3。这时B=6,6=1*6=2*3,A说知道了,如果是1,6的话,A=7=1+6=2+5=3+4,不满足。所以只能是2,3情况,A=5=1+4=2+3。A不能是1,4。所以最后确定两个数是2,3.

A=6=2+4=1+5,如果是1,5,B=5=1*5,应该说知道,所以不是1,5,只能是2,4。这时B=8,8=1*8=2*4,只能是2,4满足。

所以不论是可重复还是不能重复,一定有2,3,这种情况


百度-笔试

6. 编写函数,统计在某段英文文本中完整句子的数目,文本中只包括大小写字母,空格,点好(.),逗号(,)。
完整的句子必须包含至少一个字母并以点号,结束。
要求:完整的代码,达到目标;高效;简洁;

#include <stdio.h>#include <stdlib.h>int main(){FILE *fp;char ch;char *dir="data.txt";if((fp=fopen(dir,"rt"))==NULL){printf("Cannot open file strike any key exit!");return -1;}int num=0; //句子数量int charNum=0;while((ch=getc(fp))!=EOF){printf("%c",ch);if(ch!='.'){ if( (ch >='a'&& ch <='z') || (ch >='A'&& ch <='Z') ) charNum++;else charNum=0;}else if(charNum != 0){num++;charNum=0;}}printf("\n句子数量是:%d\n",num);fclose(fp);system("pause");return 0;}





热点排行