继续不工作? [C ++]

时间:2017-12-05 15:30:31

标签: c++ algorithm sorting continue

嗨,大家好我遇到了问题,由于某种原因打印出一个空白字符串,或者当我尝试打印出字符串时你也可以说没有打印任何内容,这只会在我包含一个资本时出现字符串中的字母,如acB如果我输入acb它排序并打印它们没有问题,我在for循环中添加了一个continue语句,因为我认为这会跳过剩下的代码并转到下一次迭代,如果那个块代码被执行但无论如何都无济于事我的代码。

void order(char *str,int size){


     bool sorted = false;

     while(!sorted){

        sorted = true;

        for(int i = 0; i < size-1; i++){

              if(str[i] >= 'A' && str[i] <= 'Z'){

                if((str[i+1])-32 < str[i]){

                    char temp2 = str[i];
                    str[i] = str[i+1];
                    str[i+1] = temp2;
                    sorted = false;
                    continue;
                }
              }
              if(str[i+1] < str[i]){

                char temp = str[i];
                str[i] = str[i+1];
                str[i+1] = temp;

                sorted = false;
            }
        }
     }
}
int main()
{
    char str[] = "aCb";
    int size = sizeof(str) / sizeof(char);
    order(str,size-1);
    cout << str << endl;
}

1 个答案:

答案 0 :(得分:1)

    void order(char *str,int size){


     bool sorted = false;

     while(!sorted){

        sorted = true;

        for(int i = 0; i < size - 1; i++){

          if(str[i+1] >= 'A' && str[i+1] <= 'Z' && str[i] > 'Z'){
            if(str[i+1] < str[i] - 32){
              char temp2 = str[i];
              str[i] = str[i+1];
              str[i+1] = temp2;
              sorted = false;
              continue;
            }
          }
          else{
            if(str[i] >= 'A' && str[i] <= 'Z' && str[i + 1] >= 'Z'){
              if(str[i+1] -32 < str[i]){
                char temp2 = str[i];
                str[i] = str[i+1];
                str[i+1] = temp2;
                sorted = false;
                continue;
              }
            }

            if(str[i+1] < str[i]){
              char temp2 = str[i];
              str[i] = str[i+1];
              str[i+1] = temp2;
              sorted = false;
              continue;
            }
          }
        }
     }
}

int main()
{
    char str[] = "aCB";
    int size = sizeof(str) / sizeof(char);
    order(str,size-1);
    cout << str << endl;
}

第一个IF:检查第一个字母是否为小写,第二个字母是否为大写。

第二个IF:检查第一个字母是否为大写,第二个字母是否为小写。

第三个IF:然后两个字母都是大写或小写。