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

c語言統計不同單詞

發布時間: 2022-01-30 18:02:21

1. c語言問題:一行語句中不同單詞個數統計

如果只要思路的話,可以:
用切割函數strtok 對這一段話進行切割,得到的單詞保存在一個二維char數組裡面,並計算出所有單詞的個數num,然後將第一個單詞和後面num-1個單詞比較,有重復的,將num-1,最後可以得到單詞個數。
代碼太復雜了,沒心情寫!!

2. 幫忙修改一下代碼--C語言實現統計一句話中不同單詞的個數~我只寫出了單詞個數,不知道下一步怎麼做了~~

#include<stdio.h>
#include<string.h>
int main()
{
char str[100],word[100][20];
char temp[20];
int num = 1;
int length;
int i,j=0;
gets(str);
length = strlen(str);
for(i = 0; i < length; i++)
{
if(str[i] == ' ')
{
word[num-1][j]=0;
num++;
j=0;
}
else word[num-1][j]=str[i];
j++;
}
printf("單詞總數:%d\n", num);

if(j>0) word[num-1][j]=0;
for(j=0;j<num;j++)
for(i=0;i<num-j-1;i++)
{
if(strcmp(word[i],word[i+1])>0)
{
strcpy(temp,word[i]);
strcpy(word[i],word[i+1]);
strcpy(word[i+1],temp);
}
}
j=1;
for(i=0;i<num-1;i++)
if(strcmp(word[i+1],word[i])!=0)j++;
printf("不同單詞個數:%d\n", j);
return 0;
}

3. 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;
}

4. C語言 統計相同單詞出現次數

幫你寫了一個,看看吧。根據自己的實際情況再改改,如果有必要的話:
/*
輸入要求:若干個以空格分割的單詞序列,單詞的總數不超過1000個,每個單詞的長度不超過20個英文字元。
這里單詞不區分大小寫,例如 Hello與hELLo被認為是相同的單詞。
*/
#include <stdio.h>
#include <string.h>

#define M 1000
#define N 20

void main()
{
char str1[M][N];//單詞字串結果存放數組
char str2[M];//輸入串或者用char *str2也可,這樣可以
int strC[M];//單詞字串計數數組.對應每個單詞串,擁有一個計算器
int i=0,j=0,k=0,t=0,x=0;

gets(str2);//接受行輸入
t=strlen(str2)+1;//計算該行中總字元數
printf("輸入字串為:%s\n",str2);

while(j<t)
{
for(;str2[j]==32;j++);//如果串中是空格,則拚命跳過,不計

while(k<N&&str2[j]!=32) //不是空格,且沒有超出題目中的要求: 每個字串長度小於N.如果大於N,自動截除.
str1[i][k++]=str2[j++]; //將輸入行字串分割存放到結果數組中
str1[i][k]='\0'; //如果該串原來大於20,會被自動截除
strC[i]=1; //計數
for(x=0;x<i;x++) //與前面的串比較
if(strncmp(str1[i],str1[x],N)==0)//調用庫函數,不分大小寫與前面的串相比,相同則返回0.
{
strC[x]++; //相同,計數器數組增加
i--; //該串為重復串,總串數不增加
break; //跳出for循環
}
i++; //無重復串,則總字串數增加
k=0;
}

printf("結果:\n");
t=0;
for(;t<i;t++)//不超出總串數
printf("%s,%d\n",str1[t],strC[t]);
}

5. C語言 統計文件中各個單詞的個數

我只是把int main改為void main了,調試是可以運行的 啊

6. 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。就這樣重復,知道句子結束

7. 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的區別:前者是字元常量,後者是整形常量,但是字元常量可以像整數一樣在程序中參與相關運算。

(7)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));

}

8. C語言,不同單詞個數統計。基礎語句

這個用C++中 map關聯容器很容易,每讀入一個單詞是,就執行一個map過程,最後ap中鍵值的個數就是你要輸入的數字即單詞的個數。
用c語言寫的話,就是把這些單詞存儲在字元串數組中,對字元數組遍歷一遍。就可以了~

9. C語言,不同單詞個數統計。 注意!是 不同的 單詞的個數!

ACM還是作業? ACM,我就採用高效技巧性的演算法,否則簡單為美.請採用評論告訴

10. C語言怎麼統計相同單詞出現次數

輸入要求:若干個以空格分割的單詞序列,單詞的總數不超過1000個,每個單詞的長度不超過20個英文字元。這里單詞不區分大小寫,例如 Hello與hELLo被認為是相同的單詞。

#include<stdio.h>
#include<string.h>
#defineM1000
#defineN20
voidmain()
{
charstr1[M][N];//單詞字串結果存放數組
charstr2[M];//輸入串或者用char*str2也可,這樣可以
intstrC[M];//單詞字串計數數組.對應每個單詞串,擁有一個計算器
inti=0,j=0,k=0,t=0,x=0;
gets(str2);//接受行輸入
t=strlen(str2)+1;//計算該行中總字元數
printf("輸入字串為:%s ",str2);

while(j<t)
{
for(;str2[j]==32;j++);//如果串中是空格,則拚命跳過,不計
while(k<N&&str2[j]!=32)//不是空格,且沒有超出題目中的要求:每個字串長度小於N.如果大於N,自動截除.
str1[i][k++]=str2[j++];//將輸入行字串分割存放到結果數組中
str1[i][k]='';//如果該串原來大於20,會被自動截除
strC[i]=1;//計數
for(x=0;x<i;x++)//與前面的串比較
if(strncmp(str1[i],str1[x],N)==0)//調用庫函數,不分大小寫與前面的串相比,相同則返回0.
{
strC[x]++;//相同,計數器數組增加
i--;//該串為重復串,總串數不增加
break;//跳出for循環
}
i++;//無重復串,則總字串數增加
k=0;
}

printf("結果: ");
t=0;
for(;t<i;t++)//不超出總串數
printf("%s,%d ",str1[t],strC[t]);
}