C++字符串数组计数
从键盘上输入若干字符,直至按下换行键结束,统计输入英文字母,正数,负数的个数。(提示:将字符保存在一个字符数组中。)
#include <iostream>
using namespace std;
void main()
{
char a;
int i,gs,ywzm=0,zs=0,fs=0;
cout<<"请输入准备输入的字符数量:";
cin>>gs;
cout<<"请输入一些字符(结束时使用回车键):"<<endl;
for (i=0;i<gs+1;i++)
{
cin>>a;
if (a>0)
zs=zs+1;
else if (a<0)
fs=fs+1;
else ywzm=ywzm+1;
}
cout<<"统计下来,英文字母的个数:"<<ywzm<<endl;
cout<<" 正数的个数:"<<zs<<endl;
cout<<" 负数的个数:"<<fs<<endl;
system("pause");
} 这段代码的功能是从键盘上输入一些字符,并统计输入的英文字母、正数和负数的个数。代码中定义了一个字符数组a,用于保存输入的字符。变量gs用于记录准备输入的字符数量。
代码的主要逻辑是使用for循环来逐个读取输入的字符,并根据字符的值判断是英文字母、正数还是负数。如果字符大于0,则认为是正数,将zs变量加1;如果字符小于0,则认为是负数,将fs变量加1;否则,认为是英文字母,将ywzm变量加1。
最后,输出统计结果,分别输出英文字母的个数、正数的个数和负数的个数。
该代码存在一些问题:
1. 使用void main()作为程序入口,这是错误的,应该使用int main()。
2. 字符数组a的大小为10000,这可能会导致内存溢出的问题,应该根据实际需要调整数组大小。
3. 输入字符的循环条件为i<gs+1,应该改为i<gs,因为数组的下标是从0开始的。
4. 对于判断正数和负数的逻辑不正确,应该使用字符的ASCII码进行判断,而不是直接比较字符的值。
以下是修改后的代码:
#include <iostream>
using namespace std;
int main()
{
char a; // 根据实际需要调整数组大小
int i, gs, ywzm = 0, zs = 0, fs = 0;
cout << "请输入准备输入的字符数量:";
cin >> gs;
cout << "请输入一些字符(结束时使用回车键):" << endl;
for (i = 0; i < gs; i++)
{
cin >> a[ i];
if (a[ i] >= 'A' && a[ i] <= 'Z' || a[ i] >= 'a' && a[ i] <= 'z')
ywzm++;
else if (a[ i] >= '0' && a[ i] <= '9')
zs++;
else if (a[ i] == '-')
fs++;
}
cout << "统计下来,英文字母的个数:" << ywzm << endl;
cout << "正数的个数:" << zs << endl;
cout << "负数的个数:" << fs << endl;
system("pause");
return 0;
}
修改后的代码中,将字符的判断逻辑改为使用字符的ASCII码进行判断,对应的ASCII码范围是大写字母、小写字母和数字。 想问问该怎么修改 问题:如何用C++统计输入字符数组中的英文字母、正数和负数的个数?
可以使用以下代码实现:
#include <iostream>
using namespace std;
int main()
{
const int max_size = 10000;
char a;
int i, gs, ywzm = 0, zs = 0, fs = 0;
cout << "请输入准备输入的字符数量:";
cin >> gs;
cout << "请输入一些字符(结束时使用回车键):" << endl;
// 循环读入字符,同时统计英文字母、正数和负数的个数
for (i = 0; i < gs + 1; i++)
{
cin >> a;
if (isalpha(a)) // 判断是否为英文字母
ywzm++;
else if (isdigit(a)) // 判断是否为数字
{
if (a == '0') // 数字0作为正数处理
zs++;
else if (a > '0') // 大于0的数字为正数
zs++;
else // 小于0的数字为负数
fs++;
}
}
cout << "统计下来,英文字母的个数:" << ywzm << endl;
cout << " 正数的个数:" << zs << endl;
cout << " 负数的个数:" << fs << endl;
return 0;
}
上述代码中,使用了isalpha()和isdigit()函数分别判断字符是否为英文字母和数字,同时根据数字的正负性将其归入相应的类别。最终输出统计结果。
需要注意的是,上述代码中对输入字符数量没有做越界检查,需要保证输入字符数量不超过max_size的限制。
球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:} Mike_python小 发表于 2023-11-1 13:04
问题:如何用C++统计输入字符数组中的英文字母、正数和负数的个数?
可以使用以下代码实现:
哇哦,新知识诶,但是我们还没学到,没法用 学习学习
页:
[1]