若是不用循環、遞歸、goto,如何才能用 C++ 從 1 打印到 100 ?數組
看到這樣一篇文章。上面有不少種解法,下面介紹幾個好理解一點的:ide
第一種:在代碼中執行系統指令spa
#include <stdlib.h> int main() { return system("seq 1 100"); }
第二種:利用信號捕捉繼承
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <signal.h> int i = 0; void sig_alarm_handler(int signal) { ++i; printf("%dn", i); if(i < 100) alarm(1); else exit(0); } int main() { signal(SIGALRM, sig_alarm_handler); alarm(1); int x; scanf(" %d",&x); return 0; }
第三種:利用模板參數與繼承特性遞歸
#include <stdio.h> template<int N> struct X : X<N-1> { X() { printf("%dn", N); } }; template<> struct X<0> {}; int main() { X<100> x; return 0; }
第四種:用靜態變量和數組it
#include <stdio.h> struct X { static int i; X() { ++i; printf("%dn", i); } }; int X::i = 0; int main() { X arr[100]; return 0; }
就看懂了這幾種,感受簡直太神奇了!io