接受空格时可以用getchar()或者getline()函数


 

/*
题目描述
输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。 
输入
一行字符 
*/ 

#include<iostream>
using namespace std;
int main()
{
    int c;
    int clen=0,nlen=0,llen=0,elen=0;
    while((c=getchar())!='\n')//while里的表达式(c = getchar()) != '\n',意思是,当输入的字符不是换行符的时候,继续往下执行
    {               //while((c=getchar())!='\n')注意这里的括号不能丢,因为!=的优先级比=高,如果去掉了外面的括号就等价于 c = (getchar()!='\n')
        if((int('A')<=c&&int('Z')>=c)||(int('a')<=c&&int('z')>=c))
        {
            llen++;
            continue;
        }            
        if(int('0')<=c&&int('9'>=c)) 
        {            
            nlen++;
            continue;
        }
        if(int(' ')==c)
        {
            elen++;
            continue;
        }
        clen++;
    }
    cout<<llen<<' '<<nlen<<' '<<elen<<' '<<clen;
    return 0;
}

 

在这里我们会用到getchar()函数,简单来说,getchar()就是从键盘获取字符,直到回车为止;

 

代码中while里的表达式(c = getchar()) != '\n',意思是,当输入的字符不是换行符的时候,继续往下执行;

 

注意这里的括号不能丢,因为!=的优先级比=高,如果去掉了外面的括号就等价于 c = (getchar()!='\n');

#include<stdio.h>
int main()
{
    int letter = 0,number = 0,blank = 0,others = 0,c;        //分别为字母、数字、空格、其他
    while((c = getchar()) != '\n'){
        if(c >= 'A' && c<='Z' || c >= 'a' && c <= 'z')    //判断是否为字母
            letter++;
        else if(c >= '0' && c <= '9')                     //判断是都为数字
            number++;
        else if(c == ' ')                                 //判断是否为空格
            blank++;
        else                                              //其他
            others++;
    }
    printf("%d %d %d %d\n",letter,number,blank,others);
    return 0;
}

解题思路:C标准中有一个一个头文件<ctype.h>,这里面定义了一批C语言字符处理函数,用于测试字符是否属于特定的字符类别,如字母字符、控制字符、数字、等等;

 

头文件:<ctype.h>

函数:

    (1)int isalpha(int ch);

            判断ch是否为字母,如果是返回非0,反之返回0;

    

    (2)int isdigit(int ch);

            判断ch是否为数字,如果是返回非0,反之返回0;

 

    (3)int islower(int ch);

            判断ch是否为小写字母,如果是返回非0,反之返回0;

    

    (4)int isupper(int ch);

            判断ch是否为大写字母,如果是返回非0,反之返回0;

    

        ……

        等等很多处理字符的函数,大家有兴趣可以去看看博客。

#include <stdio.h>
#include <ctype.h>
int main()
{
    int letter = 0,number = 0,blank = 0,others = 0,c;        //分别为字母、数字、空格、其他
    while((c = getchar()) != '\n'){
        if(isalpha(c))              //判断是否为字母
            letter++;
        else if(isdigit(c))         //判断是都为数字
            number++;
        else if(c == ' ')           //判断是否为空格
            blank++;
        else                        //其他
            others++;
    }
    printf("%d %d %d %d\n",letter,number,blank,others);
    return 0;
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM