免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: weckay
打印 上一主题 下一主题

[函数] EMC小有难度的笔试,撰写仅有一行的语句的函数??? [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
1 [报告]
发表于 2007-04-02 14:57 |显示全部楼层
很明显就是想让递归嘛。不过原型给得不清楚,没有描述参数语义。下面我假设 N 是指数字的个数而不是截止数。
  1. int p( int i, int N ){
  2.     return ( N && printf( "%d\n", i ) && p( i+1, N-1 ) && ( N != 1 && printf( "%d\n", i ) ) ) + 1;
  3. }
复制代码

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2007-04-02 15:42 |显示全部楼层
稍微简化了一下:
  1. int p( int i, int N ){
  2.     return ( printf( "%d\n", i ) && N > 1 && p( i+1, N-1 ) && printf( "%d\n", i ) ) + 1;
  3. }
复制代码


to 6 楼:你那个也可以简化的。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2007-04-02 15:43 |显示全部楼层
原帖由 weckay 于 2007-4-2 15:39 发表
我想起来了,N应该是上限。我记得原题中有一句话是这样的up to N and then down to i.

如果是这样的话,那这个函数的原型就给得非常恶心。
如果是我,我会给出
  1. int p( int min, int max );
复制代码

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2007-04-03 11:11 |显示全部楼层
原帖由 飞灰橙 于 2007-4-3 11:05 发表
其实大家都没做对,包括我上面那个只写一次printf地实现。
题目中有这句,
       函数中唯一能够调用的函数就是printf
不能递归调用本身!!!可能EMC的家伙自己也做不出来:)

如果不递归的话,能不能做出来呢?
我觉得还是有可能的。
只需要用 flwlibc 不要用 glibc 就可以。
printf( "%*v", N, i );

[ 本帖最后由 flw 于 2007-4-3 11:12 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2007-04-03 11:12 |显示全部楼层
原帖由 Edengundam 于 2007-4-3 11:11 发表



就是这样的:em11:

我觉得还是 v 字母比较形象一些。

[ 本帖最后由 flw 于 2007-4-3 11:14 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2007-04-03 11:13 |显示全部楼层
原帖由 Edengundam 于 2007-4-3 11:11 发表



就是这样的:em11:

不是flwlibc....

是emc-libc.....

我做出了这道题之后,EMC 录用我了,然后购买了我的 flwlibc,就可以依照协定改名为 emc-libc 了。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2007-04-03 11:42 |显示全部楼层
楼上的,你的签名该改了。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2007-04-03 13:32 |显示全部楼层
原帖由 飞灰橙 于 2007-4-3 13:27 发表
一条语句,只调用printf, 不调用其他函数,包括函数p自身的。
(近在32位pc, gcc或vc试验过,不保证任何环境有效)
[code]
int p (int i, int N)
{
        return i < 2*N
                && printf ("%d\n&qu ...

Orz
版主赶紧来设精华。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2007-04-03 22:23 |显示全部楼层
原帖由 thinkinnight 于 2007-4-3 21:23 发表
哦,搞懂了,其实只要非0就可以了,不过这些可真是高级技巧啊,不知道哪里能够学习到?

多做做脑筋急转弯就行了

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
10 [报告]
发表于 2007-04-04 18:10 |显示全部楼层
原帖由 openq 于 2007-4-4 17:52 发表
zhe jiu shi xian zai ruan jian hang ye de yi ge wu qu,hao xiang zhi you dai ma xie de yue qiao miao jiu yue li hai,ke shi ta you mei you xiang guo zhe yang de dai ma hui gei hou qi de ruan jian wei hu dai lai duo da de kun nan?shi xiang yi xia,zhe yang de dai ma mei ge ren dou xie de chu lai ma? ru guo zai ji qian hang dai ma zhong you zhe me jihang ru ci de dai ma,bu shi bian xie zhe ge dai ma de ren you duo shao ren yi yan neng kan chu lai? ru guo xie zhe dai ma de ren li kai gong si le,ni shi wei hu ren yuan ni hui pei fu zhe ge cheng xu yuan hai shi tong hen zhe ge cheng xu yuan?

可怜的兄弟居然没有输入法,帮你翻译一下吧:
  1. 这就是现在软件行业的一个误区,好像只有代码写得越巧妙就越厉害,可是他有没有想过这样的代码会给后期的软件维护带来多大的困难?试想一下,这样的代码每个人都写得出来吗?如果在几千行代码中有这么几行如此的代码,不是编写这个代码的人有多少人一眼能看出来?如果写这代码的人离开公司了,你是维护人员你会佩服这个程序员还是痛恨这个程序员?
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP