我遇到了一個基本的C++程序分配問題,並且非常感謝您的幫助。分配如下:C++ While循環,使用if else語句在數組中計數
編寫一個程序,接受來自鍵盤的輸入(輸入 按Enter鍵終止)並計算字母數(AZ和az),數字數字(0-9)和其他角色。使用cin輸入字符串並使用以下循環結構來檢查字符串中的每個字符,並使用「if」語句和多個「else if」語句。
我的計劃迄今爲止是:
#include <iostream>
using namespace std;
int main()
{
char s[50];
int i;
int numLet, numChars, otherChars = 0;
cout << "Enter a continuous string of characters" << endl;
cout << "(example: [email protected]#$%)" << endl;
cout << "Enter your string: ";
cin >> s;
i = 0;
while (s[i] != 0) // while the character does not have ASCII code zero
{
if ((s[i] >= 'a' && s[i] <= 'z') || s[i] >= 'A' && (s[i] <= 'Z'))
{numLet++;
}
else if (s[i] >= 48 && s[i] <= 57)
{numChars++;
}
else if ((s[i] >= 33 && s[i] <= 4) || (s[i] >= 58 && s[i] <=64) || (s[i] >= 9 && s[i] <= 96) || (s[i] >= 123 && s[i] <= 255))
{otherChars++;
}
i++;
}
cout << numLet << " letters" << endl;
cout << numChars << " numerical characters" << endl;
cout << otherChars << " other characters" << endl;
return 0;
}
信計給出一個值有點太低了,數數給出大的負數。其他字符似乎功能正常。
對於數字字符,你可以使用'0'和'9';注意區分文本表示和數字(內部)表示的單引號。 –
檢查你的邏輯。你需要爲其他*字符使用if語句,還是需要使用最後的else語句? –
另外,使用'std :: string'和'std :: getline'。如果有人輸入超過50個字符,程序將開始寫入字符數組以外,導致*未定義行爲*。否則,使用'std :: getline'並指定最大字符數(記住爲終止'\ 0'字符保留空間)。 –