我在基本的c ++程序分配方面遇到了麻烦,非常感谢任何帮助。作业如下:
编写一个接受键盘输入的程序(带输入 通过按Enter键终止并计算字母数(A-Z和a-z),数字(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: aBc1234!@#$%)" << 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 :(得分:1)
正如其他答案所述,您需要初始化变量,但此代码中也有错误:
if ((s[i] >= 'a' && s[i] <= 'z') || s[i] >= 'A' && (s[i] <= 'Z'))
括号错了。结果,你不计算小写字母(我认为)无论如何它应该是这个(缩进可见性):
if (
(s[i] >= 'a' && s[i] <= 'z') ||
(s[i] >= 'A' && s[i] <= 'Z')
)
您也可以使用this。因为你正在使用c ++而不是c,所以;)(这里的人显然对这种差异感到生气)
答案 1 :(得分:0)
您需要将每个整数设置为0.实际上,您的代码只设置otherChars = 0
。设置该行numLet = 0, numChars = 0, otherChars = 0;
。