Oracle面试题-不用循环来打印1-1000 (zz)

来源:互联网 发布:百度软件应用中心 编辑:程序博客网 时间:2024/05/17 03:20

http://topic.csdn.net/u/20121004/21/b81b41ff-31f0-453c-848b-6427cc3fd234.html

Oracle面试题

Task:
 Print numbers from 1 to 1000 without using any loop or conditional statements. Don't just write the printf() or cout statement 1000 times.

大家的答案总结:满分10分
1,19楼的12分:多加2分,因为很有创意,说明对c++理解的很清楚;
C/C++ code
#include<iostream>using namespace std;class print{public: print(){ num++; cout << num <<endl; }private: static int num;};int print::num = 0;int main(){ print *pt=new print[1000]; delete [] pt; pt = NULL; return 0;}

2,22楼的,10分,为标准答案;
C/C++ code
void print(){ static int i = 1; (i - 1001) && (printf("%d ", i++)) && (print(), 0);}

3,28楼的7分,找到了题目的bug,用#define解决;
C/C++ code
#include <stdio.h>#define Out(i)       printf("%d\n", i++);#define REP(N)       N N N N N N N N N N#define Out1000(i)   REP(REP(REP(Out(i))));void main(){ int i = 1; Out1000(i);}