1、使用逗号表达式

1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
using namespace std;
int i;
void b() { cout << i++ << endl; }
void c() { b(), b(), b(), b(), b(); }
void a() { c(), c(), c(), c(), c(); }
int main()
{
i = 1;
a(), a(), a(), a();
}

2、巧妙宏写法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>

#define F4 "%d\n%d\n%d\n%d\n"
#define F20 F4 F4 F4 F4 F4
#define F100 F20 F20 F20 F20 F20

#define X4(y) , y, y + 1, y + 2, y + 3
#define X20(y) X4(y) X4(y + 4) X4(y + 8) X4(y + 12) X4(y + 16)
#define X100(y) X20(y) X20(y + 20) X20(y + 40) X20(y + 60) X20(y + 80)

int main()
{
printf(F100 X100(1));
return 0;
}

3、C++模板元

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>

template<int N>
struct X : X<N - 1>
{
X() { printf("%d\n", N); }
};

template<>
struct X<0> {};

int main()
{
X<100> x;
return 0;
}

4、利用类对象数组的构造递增静态变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
class X
{
public:
X() { ++i; printf("%d\n", i); }

private:
static int i;
};

int X::i = 0;

int main()
{
X arr[100];
return 0;
}

5、二逼青年写法

1
2
3
4
5
6
#include <iostream>
int main()
{
std::cout << "1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n33\n34\n35\n36\n37\n38\n39\n40\n41\n42\n43\n44\n45\n46\n47\n48\n49\n50\n51\n52\n53\n54\n55\n56\n57\n58\n59\n60\n61\n62\n63\n64\n65\n66\n67\n68\n69\n70\n71\n72\n73\n74\n75\n76\n77\n78\n79\n80\n81\n82\n83\n84\n85\n86\n87\n88\n89\n90\n91\n92\n93\n94\n95\n96\n97\n98\n99\n100\n";
return 0;
}

6、使用setjmp/longjmp实现循环

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <csetjmp>
#include <iostream>
using namespace std;
int main()
{
jmp_buf b;
int x = 1;
setjmp(b);
cout << x++ << endl;
if (x <= 100)
longjmp(b, 1);
return 0;
}

7、python曲线救国

1
2
3
4
5
6
7
8
9
10
#include <stdlib.h>
#include <stdio.h>

int main()
{
FILE *f = fopen("foo.py","w");
fprintf(f,"print range(1,101)");
fclose(f);
return system("python foo.py");
}

8、C++11优雅实现

1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <numeric>
#include <iterator>
#include <array>

int main()
{
std::array<int, 100> arr;
std::iota(std::begin(arr), std::end(arr), 1);
std::copy(std::begin(arr), std::end(arr), std::ostream_iterator<int>(std::cout, "\n"));
}

9、汇编实现跳转

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;

int main(void)
{
int i = 1;
__asm begin_loop:
if (i <= 100)
{
cout << i << endl;
i++;
__asm jmp begin_loop;
}
return 0;
}

10、创建子进程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <stdlib.h>

int main()
{
int x = 0;
x |= !fork() << 0;
x |= !fork() << 1;
x |= !fork() << 2;
x |= !fork() << 3;
x |= !fork() << 4;
x |= !fork() << 5;
x |= !fork() << 6;
if(1 <= x && x <= 100) std::cout << x << std::endl;
return 0;
}

* 注:输出顺序可能无法保证