接受空格時可以用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