#include <iostream>
const int SIZE = 100;
using namespace std;
int main()
{
char *pStr, str[SIZE] = "", newStr[SIZE] = "", ch;
int count = 0, i = 0, j = 0;
cout << "Enter a number of mixed characters: ";
cin.getline(str, SIZE);
pStr = str;
while (*pStr != '\0')
{
if (isalnum(*pStr))
ch = toupper(*pStr);
newStr[i++] = ch;
if (*pStr = ' ')
count++;
pStr++;
}
newStr[i] = '\0';
cout << strlen(str) - strlen(newStr) << " characters were filtered out, "
<< " out of which " << count << " whitespaces were encountered.\n";
int temp;
for (i = 0; i < strlen(newStr) - 1; i++);
{
for (j = i + 1; j < strlen(newStr); j++);
{
if (newStr[j] < newStr[i]) // sorts in alphabetical
{ // and numerical order
temp = newStr[i];
newStr[i] = newStr[j];
newStr[j] = temp;
}
}
}
cout << "New sorted string: " << newStr << endl;
return 0;
}
我在這裏有一個代碼,應該採取一個輸入字符串,並按特定順序打印出來,並刪除其他字符以及空格。數字和字母應按數字和字母順序排序。所以如果你輸入「khff &%/ 321」,輸出應該是「123FFHK」。排序字符串和刪除字符
但是,當我使用所述輸入字符串嘗試代碼時,我得到的輸出是「KHFFFFFF32」。我希望得到一些關於我需要仔細研究以解決問題的代碼部分的提示。
我建議你閱讀[如何調試小程序(https://ericlippert.com/2014/03/05/how-to-debug-small-programs /)作者:Eric Lippert,並學習如何使用調試器。 –
我還假設這是一個練習指針,數組和C風格的字符串?否則,如果你使用標準的類和算法,它將只是幾行。 –
'str [SIZE] =「」'不符合你的想法。你的排序算法嚴重錯誤。看看'std :: sort','std :: remove_if'和'std :: transform' – IlBeldus