继续不工作? [c++]
Posted
技术标签:
【中文标题】继续不工作? [c++]【英文标题】:continue not working? [c++] 【发布时间】:2017-12-05 15:30:31 【问题描述】:大家好,我遇到了一个问题,由于某种原因正在打印一个空白字符串,或者当我尝试打印字符串时您也可以说没有打印任何内容,这仅在我在其中包含大写字母时发生如果我输入 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;
【问题讨论】:
在continue
处下断点并调试你的代码
您发送 size-1 并再次循环直到 size-1 意味着您总是跳过数组的最后 2 个元素。
您检查您当前正在查看的字母是否是大写字母,但您不检查您正在比较的字母是否是大写字母......
在您的脑海中运行带有"aC"
的代码。首先,您将交换字符(因为'C' < 'a'
)。然后你从"Ca"
重新开始,这将再次交换字符(因为'A' < 'C'
)。然后你重新开始"aC"
...
@Asim 不明白你的意思,
【参考方案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;
First IF:检查第一个字母是否为小写,第二个字母是否为大写。
Second IF:检查第一个字母是否为大写,第二个字母是否为小写。
第三个 IF: 那么两个字母都是大写或小写。
【讨论】:
嗨,Davi,非常感谢您的回复,但让我们说第一种情况 str[i] 将是大写字母,所以如果我从中减去 32,它就不是字母了?以上是关于继续不工作? [c++]的主要内容,如果未能解决你的问题,请参考以下文章