c++版本的普通程序员,文艺程序员,2b程序员和失足程序员

逆序输出字符串

普通程序员

#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;
}

您也许对以下文章感兴趣

  • 荒野无灯

    最后那个失足的。。。。