|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
从键盘上输入若干字符,直至按下换行键结束,统计输入英文字母,正数,负数的个数。
(提示:将字符保存在一个字符数组中。)
- #include <iostream>
- using namespace std;
- void main()
- {
- char a[10000];
- int i,gs,ywzm=0,zs=0,fs=0;
- cout<<"请输入准备输入的字符数量:";
- cin>>gs;
- cout<<"请输入一些字符(结束时使用回车键):"<<endl;
- for (i=0;i<gs+1;i++)
- {
- cin>>a[i];
- if (a[i]>0)
- zs=zs+1;
- else if (a[i]<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[100]; // 根据实际需要调整数组大小
- 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码范围是大写字母、小写字母和数字。
|
|