Tag: 编程技巧

  • C语言趣味题一

    某群看到:

    趣味题:
    编写原型为int foo(int i, int n)的c函数,实现打印i,i+1,…,n-1,n,n-1,…,i+1,i的序列。要求函数内只能有一条语句,只能有一个分号,只能有一个printf,并且只能用这个printf输出。不允许使用if、else、do、for、while、goto关键字。

    鉴于本人是蒟蒻,因此没有写出来,下面综合一下众神牛的答案:
    小虾:
    [cpp]
    int foo(int i, int n) {
        return i==n ? printf(“%d “, i) : (foo(i, i), i<n ? foo(i+1, n) : 0, foo(i, i));
    }
    [/cpp]
    22:
    [cpp]
    int foo(int i,int n) {
        return (i < 2 * n ? printf(“%d “, (i < n ? i : 2 * n – i)) + foo(i + 1, n) : 0);
    }
    [/cpp]
    兔子:
    [cpp]
    void foo(int i, int n) {
    //不用返回值都可以做;
        printf(“%d “, i == n ? i : (foo(i, i), foo(i + 1, n), i));
    }
    [/cpp]
    yeah:
    [cpp]
    int foo(int i, int n) {
        return printf(“%d “, i), i<n ? foo(i+1, n), foo(i, i) : 0 ;
    }
    [/cpp]
    最后是ib的:
    [cpp]
    int foo(int i, int n) {
        return i < n && foo(i, i) && foo(i + 1, n), printf(“%d “, i);
    }
    [/cpp]

    转载了以下文章中的部分内容:
    一道C语言趣味题 Xiaoxia[PG]
    趣味题 twd2