| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 805 人关注过本帖
标题:[分享]百度武大笔试题
收藏  订阅  推荐  打印 
無邪的睡脸
Rank: 3Rank: 3
来自:湖北武汉
等级:中级会员
威望:1
帖子:331
积分:3830
注册:2007-9-11
[分享]百度武大笔试题

程序设计一:设计一个函数int func(unsigned)实现:输入n,若n为偶数,则除以2,若为奇数,则可以作加1或减1操作。知道n变为1,函数返回操作的最少次数。
举例:n=7,7->8->4->2->1,最少次数为4。
我当时程序这样写的,回来调试了一下,通过了;
#include <stdio.h>
int main()
{
int func(unsigned);
int n;
printf("输入一个数:");
scanf("%d",&n);
printf("最少次数为%d\n",func(n));
return 0;
}
int func(unsigned n)
{
if(n==1)
return 0;
else
if(n%2==0)
return(func(n/2)+1);
else
return(func(n+1)<func(n-1)?func(n+1)+1:func(n-1)+1);
}
程序设计题二:
ip.txt中存放ip地址,一行包含一个ip,可能是一个ip地址(192.168.0.1),也可能是一个ip段(192.168.0.10 192.168.0.100)ip段的范围不超过一个B类,行数不超过10万,现有ip入侵,如果入侵ip在文件中则输出“Y”,否则输出“N”
我的程序如下,应该还有很多优化的地方,大家提哈意见;
#include <stdio.h>
int main()
{
FILE *fp;
int i,a[4],b[4],c[4];//c存放入侵地址,ab分别存放首尾地址
char d;
printf("入侵IP:");
scanf("%d.%d.%d.%d",&c[0],&c[1],&c[2],&c[3]);
while((fp=fopen("d:\\ip.txt","r"))==NULL)
{
printf("打开文件失败!\n");
exit(1);
}
while(!feof(fp))
{
for(i=0;i<4;i++)
{
fscanf(fp,"%d",&a[i]);
d=fgetc(fp);
}
if(d=='\n') //该行为ip地址
{
for(i=0;i<4;i++)
if(a[i]==c[i])
continue;
else
break;
if(i==4&&a[4]==c[4]) //匹配成功
{
printf("Y\n");
return 0;
}
}
else //该行为ip段
{
for(i=0;i<4;i++)
{
fscanf(fp,"%d",&b[i]);
d=fgetc(fp);
}
if(a[2]==b[2])
if(c[2]==a[2]&&c[3]>=a[3]&&c[3]<=b[3])
{
printf("Y\n");
return 0;
}
else
;
else
{
if(c[2]>a[2]&&c[2]<b[2])
{
printf("Y\n");
return 0;
}
if(c[2]==a[2]&&c[3]>=a[3]||c[2]==b[2]&&c[3]<=b[3])
{
printf("Y\n");
return 0;
}
}
}
}
fclose(fp);
printf("N\n");
return 0;
}
比较那里写的很乱,考试时写的。数据结构没学,算法考前抱了下佛脚,现在才开始学C一个月,就这水平了!

[此贴子已经被作者于2007-9-20 13:17:27编辑过]

搜索更多相关主题的帖子: 百度  笔试  int  func  
2007-9-20 12:03
静思
Rank: 4
来自:沈阳
等级:高级会员
威望:8
帖子:623
积分:6412
注册:2006-2-28

今天下午百度就要来我们学校了,哈哈!期待中..

英者自知,雄者自胜
2007-9-20 12:12
死了都要C
Rank: 12Rank: 12Rank: 12
来自:四川成都
等级:贵宾
威望:13
帖子:1507
积分:15568
注册:2006-12-7

怎么不来我们学校`````


女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
http://yzfy.org
2007-9-20 12:13
ACKing
Rank: 2
等级:注册会员
帖子:69
积分:874
注册:2007-9-4

这么简单的笔试题?

2007-9-20 12:18
死了都要C
Rank: 12Rank: 12Rank: 12
来自:四川成都
等级:贵宾
威望:13
帖子:1507
积分:15568
注册:2006-12-7

不知道有没有什么简单方法``能一步就把一个偶数``直接弄成奇数```

10000->5000->2500->1250->625``好麻烦啊```

要是可以直接把10000弄成625就好了```



女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
http://yzfy.org
2007-9-20 12:22
雨中飞燕
Rank: 2
等级:ID已被封
威望:8
帖子:2200
积分:22984
注册:2007-8-9

以下是引用死了都要C在2007-9-20 12:22:33的发言:
不知道有没有什么简单方法``能一步就把一个偶数``直接弄成奇数```

10000->5000->2500->1250->625``好麻烦啊```

要是可以直接把10000弄成625就好了```

简单DP,比那个3n+1还要好做些



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=162918]C++编写的Windows界面游戏[/url]
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge):[/url] http://yzfy.org/

2007-9-20 12:25
Eastsun
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:32
帖子:801
积分:8540
注册:2006-12-14

楼主代码没错,但时间复杂度太高了。。。
baidu考的题应该不会这样简单的算法就能解决。
这是我写的代码,但还没自习考虑,不确定有没有bug:

程序代码:
<br>/**<br> @author: Eastsun<br> @version 1.0 2007/9/20<br>*/<br>#include&lt;stdio.h&gt;<br>int func(unsigned n){<br> int count =0;<br> while(n-1){<br> if(n&amp;1){<br> if((n^3)&amp;&amp;!(n&amp;3^3)) n++;<br> else n--;<br> }<br> else{<br> n &gt;&gt;=1;<br> }<br> count ++;<br> }<br> return count;<br>}<br>int main(){<br> unsigned n;<br> printf("Input a unsigned number:");<br> scanf("%u",&amp;n);<br> printf("func(%u) =%d",n,func(n));<br>}<br>

[此贴子已经被作者于2007-9-20 12:52:03编辑过]


My BlogClick Me
2007-9-20 12:46
Eastsun
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:32
帖子:801
积分:8540
注册:2006-12-14

以下是引用雨中飞燕在2007-9-20 12:25:46的发言:

简单DP,比那个3n+1还要好做些

DP...
时间复杂度应该是O(n)吧?
如果把输入改成unsigned long long 就够呛了。。


My BlogClick Me
2007-9-20 12:59
雨中飞燕
Rank: 2
等级:ID已被封
威望:8
帖子:2200
积分:22984
注册:2007-8-9

不是O(logn)?



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=162918]C++编写的Windows界面游戏[/url]
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge):[/url] http://yzfy.org/
2007-9-20 13:07
無邪的睡脸
Rank: 3Rank: 3
来自:湖北武汉
等级:中级会员
威望:1
帖子:331
积分:3830
注册:2007-9-11

才学了一个月的C,没考虑那么多。算法大三上学的,全忘了!以前没认真学,现在后悔莫及啊!

不要仅为成功而努力.要为做一个有价值的人而努力
kobe24j@sina.com

2007-9-20 13:15
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.066440 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved