程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 檢測字符串中有多少個單詞改新--C語言譚浩強版例6.8

檢測字符串中有多少個單詞改新--C語言譚浩強版例6.8

編輯:關於C語言

檢測字符串中有多少個單詞改新--C語言譚浩強版例6.8


例6.8 輸入一行字符,統計其中有多少個單詞,單詞之間用空格分隔開   原解題思路:     從第一個字符開始逐個字符進行檢查,判斷此字符是否是新單詞的開頭。判斷是否出現新單詞,可以由是否有空格出現來決定。如果測出某一個字符為非空格,而它的前面的字符是空格,則表示新的單詞開始了。
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char string[81];
    int i, num=0,word =0;
    char c;
    gets(string);

    for(i=0; (c=string[i])!='\0'; i++)  //只要不是字符'\0'就繼續循環
    {
        if(c==' ')
            word=0;
        else if (word==0)
        {
            word=1;
            num++;
        }
    }
    printf("There are %d words in the line.\n", num);
    return 0;
}

 

    改新版思路:     單詞後面出現一個不是字母的字符,則這個單詞結束。擴展了字符串中的標點  
/******************************************************

6.8   Count how many words

Plan:
    If a charactor is not a letter, and before it there is a letter,
count add

CREATE----------------------------
By:     Idooi Liu
Time:   2015/09/27-1022
----------------------------------

******************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

bool ifALetter(char charactor);

int main(void)
{
    int i,  number=0;
    char stringMe[100];

    gets(stringMe);

    for(i=0; i<100; i++)
    {
        if(stringMe[i+1]=='\0')           //出現字符'\0'結束循環
        {
            if(ifALetter(stringMe[i]))
                number++;
            break;
        }

        //單詞的最後一個字符判斷,下一個字符不是字母,單詞結束
        if(ifALetter(stringMe[i]) && !ifALetter(stringMe[i+1])) 
            number++;
    }
    printf("There are %d words in the line.\n", number);

    getchar();
    return 0;
}

//判斷字符是否是字母
bool ifALetter(char x)
{
    if((x>64 && x<91) || (x>96&&x<122))
        return true;
    else
        return false;
}

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved