#include <cstdlib>
#include <iostream>

using namespace std;

char s[200];

void draw(int kai , int jie , int a , int b)
{
     char t = 0;
     int i , j;
     for (i = kai ; i <= jie ; i++)
     {
           if (a == 1)
           {
                t = i;
                if (t >= 'A' && t <= 'Z')
                     t = t + 32;
           }
           else if (a == 2)
           {
                t = i;
                if (t >= 'a' && t <= 'z')
                     t = t - 32;
           }
           for (j = 1 ; j <= b ; j++)
           {
                 if (a == 3)
                       cout << "*";
                 else
                       cout << t;
           }
     }
}

void draw2(int kai , int jie , int a , int b)
{
     char t = 0;
     int i , j;
     for (i = jie ; i >= kai ; i--)
     {
           if (a == 1)
           {
                t = i;
                if (t >= 'A' && t <= 'Z')
                     t = t + 32;
           }
           else if (a == 2)
           {
                t = i;
                if (t >= 'a' && t <= 'z')
                     t = t - 32;
           }
           else if (a == 3)
                t = '*';
           for (j = 1 ; j <= b ; j++)
                cout << t;
     }
}

void xy(int p1 , int p2 , int p3)
{
    int i , j , k , l = strlen(s);
    for (i = 0 ; i < l ; i++)
    {
        if (s[i] != '-' && s[i + 1] == '-' && ((s[i] >= '0' && s[i] <= '9' && s[i + 2] >= '0' && s[i + 2] <= '9') || (s[i] >= 'a' && s[i] <= 'z' && s[i + 2] >= 'a' && s[i + 2] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z' && s[i + 2] >= 'A' && s[i + 2] <= 'Z')))
        {
             if (s[i] > s[i + 2] || s[i] == s[i + 2])
             {
                  cout << s[i] << s[i + 1] << s[i + 2];
                  i = i + 2;
             }
             else if (abs(s[i] - s[i + 2]) == 1)
             {
                  cout << s[i] << s[i + 2];
                  i = i + 3;
             }
             else if (s[i] < s[i + 2])
             {
                  if ((s[i] >= '0' && s[i] <= '9' && s[i + 2] >= '0' && s[i + 2] <= '9') || (s[i] >= 'a' && s[i] <= 'z' && s[i + 2] >= 'a' && s[i + 2] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z' && s[i + 2] >= 'A' && s[i + 2] <= 'Z'))
                  cout << s[i];
                  if (p3 == 1)
                       draw(s[i] + 1 , s[i + 2] - 1 , p1 , p2);
                  if (p3 == 2)
                       draw2(s[i] + 1 , s[i + 2] - 1 , p1 , p2);
                  i = i + 1;
             }
        }
        else
              cout << s[i];
    }
}

int main(int argc, char *argv[])
{
    int p1 , p2 , p3;
    cin >> p1 >> p2 >> p3;
    if (p1 == 3)
        p3 = 1;
    cin >> s;
    xy(p1 , p2 , p3);
    cout << endl;
    //system("PAUSE");
    return EXIT_SUCCESS;
}
此程序错在哪里?
在http://58.119.3.34/JudgeOnline/showproblem?problem_id=1103上验证。