| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2766 人关注过本帖, 1 人收藏
标题:我记得以前有一题“输入一个整数n,不用判断循环语句顺序输出1~n”,这题现 ...
取消只看楼主 加入收藏
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
结帖率:100%
收藏(1)
已结贴  问题点数:30 回复次数:7 
我记得以前有一题“输入一个整数n,不用判断循环语句顺序输出1~n”,这题现在怎么找不着了?
如题,不用循环和判断语句,输入5,输出1,2,3,4,5
当时想不出来,见识了各位大大的神技,叹为观止,今天自己想出了一个,本想再看看之前各位的代码,无奈找不着了。
各位大大能否再让我看看代码?~下面是我的,略复杂……
程序代码:
#include <stdio.h>
int kk=1,i;
unsigned aa;
int main(int argc, const char *argv[])
{
    int *p;
    unsigned f;
    asm volatile("movl %%ebp,%0"
            :"=r"(f));
    f=(unsigned)((int *)f+1);
    p = (int *)f;
    (kk==1) && (aa = *p,scanf("%d",&i));
    (kk<i) && (*p = (unsigned)main) || (*p = aa);
    printf("n = %d\n",kk);
    kk++;
    return 0;
}

2012-10-12 10:50
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
收藏
得分:0 
以下是引用lz1091914999在2012-10-12 12:07:11的发言:

#include  
 
int f(int i, int n)
{
    i <= n && printf("%d\n", i) && f(i + 1, n);
    return i;
}
 
int main(void)
{
    int n;
    scanf("%d", &n);
    f(1, n);
    return 0;
}
哦哦~对我上次看的就差不多是这样,记得还有一个调用函数指针的。
各有各的法但是关键还是 [(表达式)&&(表达式)]这样的语句代替if之类的语句
2012-10-12 14:29
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
收藏
得分:0 
以下是引用zklhp在2012-10-12 12:28:44的发言:

没看懂 好复杂。。。
…………我记得z版也给出了个答案,使用信号的
2012-10-12 14:29
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
收藏
得分:0 
回复 10楼 lz1091914999
短路在编程中我还没听过诶,能否展开解释下?
2012-10-12 14:39
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
收藏
得分:0 
以下是引用lz1091914999在2012-10-12 15:26:37的发言:

#include  
#include  
#include  
 
void divide_by_zero_handler(int i) { exit(0); }
 
void f(int i, int n)
{
    printf("%d\n", i) && 0 / (n - i);
    f(i + 1, n);
}
 
int main(void)
{
    int n;
    scanf("%d", &n);
    signal(SIGFPE, divide_by_zero_handler);
    f(1, n);
    return 0;
}
按照Z版以前的方法改写。
哦~对,当时是逆序输出,就是说触发了信号叫短路是吗?还是类似在这里信号函数中直接用exit退出的方法叫短路?
2012-10-12 16:12
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
收藏
得分:0 
以下是引用lz1091914999在2012-10-12 16:52:07的发言:

bool表达式中的那个叫短路,其实就是已经知道是真是假了,就不需要再计算下去了。
哦哦,这个我知道,就是其实和信号的那个方法无关呗
2012-10-12 22:37
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
收藏
得分:0 
以下是引用zklhp在2012-10-12 16:25:17的发言:

对啊 我记得也看过那个帖子 不过找不到那个帖子了

最好的方法是用表达式实现的 我记得好像是
我记得是c语言的版主不清楚是谁了,给了一个巨短的回答
2012-10-12 22:38
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
收藏
得分:0 
既然大家都没什么代码,那全部的分就都给lz啦
谢谢你的指导
2012-10-13 15:54
快速回复:我记得以前有一题“输入一个整数n,不用判断循环语句顺序输出1~n”, ...
数据加载中...
 
   



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

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