嗨,大家好我遇到了问题,由于某种原因打印出一个空白字符串,或者当我尝试打印出字符串时你也可以说没有打印任何内容,这只会在我包含一个资本时出现字符串中的字母,如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;
}
答案 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:然后两个字母都是大写或小写。