逆序输出字符串
普通程序员
#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;
}