// String processing <br/> // a strange question, the key is to judge the end and check empty rows. <br/> // STL can save a lot of trouble. <br/> # include <iostream> <br/> # include <string> <br/> # include <algorithm> <br/> using namespace STD; <br/> string S1, S2; <br/> bool checkempty (string Str) // check whether this row is empty. <br/>{< br/> for (INT I = 0; I <Str. size (); ++ I) <br/> If (STR [I]> '') return false; <br/> return true; <br/>}< br/> int main () <br/>{< br/> for (;) <br/>{< br/> Getline (CIN, s1); <br/> get Line (CIN, S2); <br/> reverse (s2.begin (), s2.end (); // reverse <br/> reverse (s1.begin (), s1.end ()); // reverse <br/> If (s2.size ()> 0 &&! Checkempty (S2) // process 2nd rows first. If size = 0, it is a line break, not a blank line. <br/>{< br/> string str1, str2; <br/> str1.append (s2.begin (), s2.begin () + s2.size ()/2); // put the second half of the block in front <br/> str2.append (s2.begin () + s2.size ()/2, s2.end (); // place the front section behind <br/> cout <str2 <str1 <Endl; <br/>}< br/> If (s1.size ()> 0 &&! Checkempty (S1) <br/>{< br/> string str1, str2; <br/> str1.append (s1.begin (), s1.begin () + s1.size ()/2 ); <br/> str2.append (s1.begin () + s1.size ()/2, s1.end (); <br/> cout <str2 <str1 <Endl; <br/>}< br/> If (CIN. EOF () break; // jumps out after reading the end Of the file <br/>}< br/> return 0; <br/>}