當前位置:首頁 » 編程語言 » c語言讀取單詞數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言讀取單詞數

發布時間: 2022-03-06 13:39:16

『壹』 c語言統計單詞個數問題!

根據英語的書寫習慣,在每個單詞前後都會有空格分隔。 所以可以依據空格來劃分單詞。

不過,由於空格可能存在連續多個,所以僅統計空格數是不可以的,需要更復雜一些的演算法。

一、演算法設計:

核心思想是通過一個flag,來確定單詞的起始, 每出現一個單詞的起始,則表示存在一個單詞。 這樣統計出現的單詞起始個數,即可獲得單詞總數。

1、flag初始為1;

2、遍歷字元串。

3、對於每個字元,如果出現非空格字元,且flag為1,則為單詞起始,累加計數器。同時賦值flag為0。

4、在flag為0情況下,如果出現空格,表示上一個單詞已經結束,設置flag為1。

5、 遍歷結束後輸出結果。


二、參考代碼:

#include<stdio.h>
intfunc(char*s)//計算單詞數函數
{
inti,n=0,flag=1;
for(i=0;s[i];i++)//遍歷
{
if(flag==1)
{
if(s[i]!='')//單詞起始
{
n++;
flag=0;
}
}
elseif(s[i]=='')//上一個單詞結束。
flag=1;
}
returnn;//返回結果。
}
intmain()
{
chars[200];

gets(s);//輸入字元串。

printf("%d ",func(s));//調用函數,計算並輸出結果。
return0;
}

『貳』 C語言問題,讀取txt文件中單詞個數。幫忙看一下程序。

#include "stdio.h"
main()
{
char s[81],c;
int i,num=0,word=0;
printf("請輸入:\n");
gets(s);
for(i=0;(c=s[i])!='\0';i++)//判斷句子是否到未
if(c==' ') word=0;//是空格就為0
else if(word==0)//不是空格就判斷之前有沒有空格
{
word=1;//復位用來判斷空格是否存在的開關
num++;//如果之前有空格,單詞數加1
}
printf("輸入字元串共有%d個單詞.\n",num);
}

這是統計單詞數的c程序,你自己看看吧,可能會幫得上你,因為你的那個有文件,我沒有新建文件,所以就只能幫你到這兒了。

『叄』 c語言統計單詞個數

根據英語的書寫習慣,在每個單詞前後都會有空格分隔。 所以可以依據空格來劃分單詞。

不過,由於空格可能存在連續多個,所以僅統計空格數是不可以的,需要更復雜一些的演算法。

一、演算法設計:

核心思想是通過一個flag,來確定單詞的起始, 每出現一個單詞的起始,則表示存在一個單詞。 這樣統計出現的單詞起始個數,即可獲得單詞總數。

1、flag初始為1;

2、遍歷字元串。

3、對於每個字元,如果出現非空格字元,且flag為1,則為單詞起始,累加計數器。同時賦值flag為0。

4、在flag為0情況下,如果出現空格,表示上一個單詞已經結束,設置flag為1。

5、 遍歷結束後輸出結果。

二、參考代碼:

#include<stdio.h>
intmain()
{
chars[200];
inti,n=0,flag=1;
gets(s);//輸入字元串。
for(i=0;s[i];i++)//遍歷
{
if(flag==1)
{
if(s[i]!='')//單詞起始
{
n++;
flag=0;
}
}
elseif(s[i]=='')//上一個單詞結束。
flag=1;
}
printf("%d ",n);//輸出結果。
return0;
}

『肆』 c語言 讀入一行英文文本每個單詞出現的個數

//通過鍵盤輸入一行英文句子,統計其中的英文字母和單詞的數量,單詞之間用空格分開(標點符號不算單詞);
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
main()
{
char string[100];//根據擬從鍵盤輸入的字串的長度需要適當調整,要避免輸入的長度超出設定的范圍。
char c;
int i, num=0,sum=0,word=0; //定義 word 用來指示一個單詞是不是結束或新單詞是否開始;
printf("請從鍵盤輸入一行需要查詢的英文句子,進行單詞數量統計: ");
gets(string); //從鍵盤獲得輸入的字元串;
//以下統計句子中的英文字元個數;
for(i=0;(c=string[i])!='';i++) //for循環語句,遍歷句子中的每個字元;初始化i=0;若字元c!='',即未到達結束符''的話,執行i++;
{
if(('A'<=string[i]&&string[i]<='Z')||('a'<=string[i]&&string[i]<='z'))
sum++; //以上為條件句,如果字元在A~Z,a~z 范圍之內的話,則執行sum++,累加英文字母個數;
}
//以下統計句子中的英文單詞個數;
for(i=0;(c=string[i])!='';i++) //for循環語句,遍歷句子中的每個字元;初始化i=0;若字元c!='',即未到達結束符''的話,執行i++;
{ //''用作字元串的結束符。它的ASCII數值是0。
if(c<'A'||c>'Z'&&c<'a'||c>'z') //設定條件:如果字元 c 遇到A~Z和a~z范圍之外其它符號字元的話,包括遇到空格' ';
word=0; //上面條件為真時,執行這里,置word=0,表示未遇到單詞,或,一個單詞已結束,同時也意味著要開始遇到下一個新單詞;
else if(word==0) //當條件(word==0)為真,執行下面花括弧裡面的語句;當word==0時,表示未遇到字母,即未遇到單詞,或上一個單詞已結束;
{
word=1; //那麼置word=1,即,表示下一個新單詞開始,
num++; //執行num++,累加英文單詞的個數;
}
}
printf(" ");
printf("您輸入的這句英文句子中共包含%d個英文字元,%d個英文單詞。 ",sum,num);

}

示例:輸入語句: Hello ! My friend , how are you ? (注意單詞的前後有空格)

『伍』 C語言 統計單詞個數

#include "stdio.h" main() { char s[81],c; int i,num=0,word=0; printf("請輸入一行英文:\n"); gets(s); for(i=0;(c=s[i])!='\0';i++)//判斷句子是否到未 if(c==' ') word=0;//是空格就為0 else if(word==0)//不是空格就判斷之前有沒有空格 { word=1;//復位用來判斷空格是否存在的開關 num++;//如果之前有空格,單詞數加1 } printf("本行中共有%d個單詞.\n",num); } 其原理很簡單: 對每個字元進行判斷,如果是空格就把變數word標記為0,如果不是空格就判斷word是不是0(即判斷之前有沒有空格),如果存在空格單詞量加1,然後復位word變數為0。就這樣重復,知道句子結束

『陸』 C語言:統計單詞數

#include<stdio.h>
#include<string.h>

void main()
{
char str[100];
gets(str);
int i = 0;
int m = 0;
while(str[i] != '\0')
{
if(str[i] != ' ')
{
m++;
while(1)
{
i++;
if(str[i] == ' ')
break;
}
}
i++;
}
printf("%d\n",m);
}

可以隨便輸入單詞並統計個數

『柒』 C語言:從一個文件中讀取英語單詞,統計單詞個數和每個單詞出現的頻率 代碼哪裡有問題,求大神幫忙修改下

while(fscanf(fp,"%s",temp)!=EOF)//EOF即為到了文件末尾
{
printf("%-16s",temp);
count++;
}

這部分 只是讀入了單詞並統計了總數 實際上存在temp裡面的之後最後一個 之前的都被覆蓋了

下面的所有處理 都是針對最後一個單詞以及一個空的str做的 本質上沒什麼意義


兩種做法

1, 讀取單詞 並順序存在str中,存好後排序,然後統計各自的次數

2 每次讀取單詞 與已經存在str中的逐一對比,按字典序插入,如果已經存在 則對應計數加一


推薦用第二種 更簡單一點

『捌』 c語言統計字元串中指定的單詞個數

給你個類似的。。。你小改下,就應該可以了。希望對你有幫助

/*編寫一個函數,該函數可以統計一個長度為2的字元串在另一個字元串中出現的次數。

例如,假定輸入的字元串為:asdasasdfgasdaszx67asdmklo,

子字元串為:as,則應輸出6。

[程序分析]

由於小串中只有2個字元所以可用str[i]==sbustr[0]&&str[i+1]==substr[1]來判斷小串是否與長串當前位置(str[i])相同(即出現一次)。

因而只要讓長串當前位置逐一向後移即可(用for()循環來完成)

*/

//[源程序]

#include"stdio.h"

#include"string.h"

#include"conio.h"

intfun(char*str,char*substr)

{inti,n=0,s=strlen(str);

for(i=0;i<s;i++)

if((str[i]==substr[0])&&(str[i+1]==substr[1]))

n++;

returnn;

}

main()

{

charstr[81],substr[3];

intn;

printf("輸入的字元串:");

gets(str);

printf("子字元串:");

gets(substr);

puts(str);

puts(substr);

n=fun(str,substr);

printf("n=%d ",n)

}

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

按你的意思我改了下調用函數里的

intfun(char*str,char*substr)

{

inti,j,n=0,s=strlen(str),m=strlen(substr),pan=1;

printf("%d ",m);

for(i=0;i<s;i++)

{pan=1;

for(j=0;j<m;j++)

if((str[i+j]!=substr[j]))//這是進行比較,不是跳出

{pan=0;

break;}

if(pan)

n++;

}

returnn;

}

『玖』 C語言統計單詞個數

Q:輸入一串字元串,輸出其中有多少個單詞。
Eg:Good Wishes
A:

#include <stdio.h>#include <string.h>#define SIZE 20int main()
{ char str[SIZE]={''}; int count=0;
printf("plz input the string ");
gets(str);
puts(str); int length = strlen(str); for (int i=0;i<length;i++)
{
if(str[i]!=' ')
{ count++; while(str[i]!=' '&&str[i]!='')
{
i++;
}
}
}
printf("%d ",count); return 0;
}

『』和『0』的區別:
在c語言中,它們都是字元,都用對應的ASCII碼來存儲。例如第一個ASCII碼,0,對應字元為(Null),就是 『』,即空字元。我們在c語言中判斷一個字元串是否結束的標志就是看是否遇到『』,如果遇到『』,則表示字元串結束。字元『0』和數字0的區別:前者是字元常量,後者是整形常量,但是字元常量可以像整數一樣在程序中參與相關運算。

(9)c語言讀取單詞數擴展閱讀

字元串所有字元,如果當前字元不為空,單詞數+1,再嵌套一個while循環,判斷當前單詞是否結束。

#include <stdio.h>

#include <string.h>

int count_words(char* s)

{
int len=strlen(s);

int count,i;

for(i=0;i<len;i++)

{

if(*(s+i)!=' '){ // 如果當前代碼不為空

count++; //單詞數+1

while(*(s+i)!=' '&& i<len) //判斷當前單詞是否結束

i++;

}

}

return count;

}

int main()

{

char* a="i love you";

printf("%d",count_words(a));

}

『拾』 C語言統計單詞個數,單詞個數演算法

當字元從' '變為字母時或其他字元時word從0變為1,而word從0變為1時就是一個單詞,所以count+1;當字元由非' '變為' '時word從1變為0,准備判斷下一個單詞的出現,即等待字元由' '變為其他字元的出現。這樣最後count就是記錄了單詞的個數,其實就是記錄了字元由' '變為其他字元的次數!