在C++中输入一串字符,统计其中的英文字母,数字符号,其他字符的个数,空格不在其中

#include <stdio.h>
main( )
{
int a,b,c; /*a,b,c分别存放字母的个数,数字符号的个数,其它字符的个数*/
char ch; /*ch存放输入的字符串中的一个字符*/
printf("本程序统计输入字符串中各类字符的个数\n");
a=0;b=0;c=0; /*字母、数字符号和其它字符的个数清0*/
printf("输入以回车结束的字符串:");
scanf("%c", &ch);
while(ch!='\n')
{ scanf("%c", &ch);
{if((ch>=97&&ch<=122||ch>=65&&ch<=90)) a++;
else if (ch>=48&&ch<=57) b++;
else if ((ch>=33&&ch<=47||ch>=58&&ch<=64)) c++;}
}
printf("字母个数:%d\n数字符号个数:%d\n其它字符个数:%d \n", a,b,c);
}
问题出在哪里了,当输入字符串a1b2c3!@#$时,字母字符的个数是2,谢谢指教

#include <string>
#include <locale>
#include <iostream>
using namespace std;
 
//  ä¸ªæ•°
void GetUpperCount(char * input, 
                   int & upperCount, 
                   int & lowerCount,
                   int & numCount)
{
    for (int i = 0; i < strlen(input); i++)
    {
        // ç»Ÿè®¡å¤§å†™å­—母个数
        if (isupper(input[i]))
        {
            upperCount++;
        }
        // ç»Ÿè®¡å°å†™å­—母个数
        else if (islower(input[i]))
        {
            lowerCount++;
        }
        // ç»Ÿè®¡æ•°å­—个数
        else if (isdigit(input[i]))
        {
            numCount++;
        }
    }
 
}
 
 
int main()
{
    char szInput[100] = {0};
 
     cout << "请输入字符串: " << endl;
 
    cin >> szInput;
 
    int upperCount = 0; 
    int lowerCount = 0;
    int numCount  = 0;
 
    GetUpperCount(szInput, upperCount, lowerCount, numCount);
 
    cout << "大写字母个数: "<< upperCount << endl;
    cout << "小写字母个数: "<< lowerCount << endl;
    cout << "数字个数:"<< numCount << endl;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-05
scanf("%c", &ch);
while(ch!='\n')
{ scanf("%c", &ch);
把第一个scanf删除
相似回答