gpt4 book ai didi

C++ while循环,使用if else语句对数组进行计数

转载 作者:行者123 更新时间:2023-11-28 06:03:21 25 4
gpt4 key购买 nike

我在进行基本的 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;
}

字母计数给出的值有点太低了,数字计数给出了一个很大的负数。其他字符似乎运行良好。

最佳答案

在另一个答案中提到,你需要初始化你的变量,但你在这段代码中也有错误:

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,对吧 ;)(这里的人显然对这种差异很生气)

关于C++ while循环,使用if else语句对数组进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32854254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com