逆序输出字符串
普通程序员
#include <iostream> using namespace std; char *str = "n!dlrow olleh"; int main (int argc, char** argv) { for(char *p = str + strlen(str); p >= str; p--){ cout << *p; } return 0; }
文艺程序员
#include <iostream> #include <iterator> #include <algorithm> using namespace std; static char *str = "n!dlrow olleh"; int main (int argc, char** argv) { reverse_copy(str, str + strlen(str) + 1, ostream_iterator<char>(cout, "")); return EXIT_SUCCESS; }
2B程序员
#include <iostream.h> static char *str = "n!dlrow olleh"; int main () { char *p = str + strlen(str); putchar(*(p--)); putchar(*(p--)); putchar(*(p--)); putchar(*(p--)); putchar(*(p--)); putchar(*(p--)); putchar(*(p--)); putchar(*(p--)); putchar(*(p--)); putchar(*(p--)); putchar(*(p--)); putchar(*(p--)); putchar(*(p--)); putchar(*(p--)); }
失足程序员
#include <iostream> using namespace std; const char str[] = "n!dlrow olleh"; template< int N > struct Printer{ void operator()(){ cout << *(str + N); } }; template< template < int > class C, int N > struct Rev{ Rev(){ C< N >()(); Rev< C, N - 1>(); } }; template< template < int > class C > struct Rev<C, 0>{ Rev(){ C< 0 >()(); } }; template <int N> int len_trait(const char (&)[N]) { static Rev< Printer, N > rev; return 0; } static int dummy = len_trait(str); int main(int argc, char** argv) { return EXIT_SUCCESS; }