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語言統計單詞個數

||int decede(char str[])
{
int i,word=0,num=0,first = 1;
for(i=0; str[i]!='\0'; i++)
{
//如果是字母,則一直找到非字母(分隔符:符號,空格等)
if((str[i]>='a' && str[i]<='z') || (astr>='A' && str[i]<='Z'))
{
do{
i++;
} while((str[i]>='a' && str[i]<='z')||(str[i]>='A'&&str[i]<='Z'));
//記錄一個單詞
num++;
}
}
return num;
}

③ c語言中統計單詞個數的問題

相當於空格,可以看一下這個程序(用於統計單詞個數)
#include<stdio.h>
void main()
{
char string[100];
int i,num=0,word=0;
char c;
printf("請輸入一個英文句子:");
gets(string);
for(i=0;(c=string[i])!='\0';i++)
if(c==' ')
word=0;
else if(word==0)
{
word=1;
num++;
}

printf(" 該英文句子由%d個單片語成。 .\n",num);
}
有時為了給變數附一個無意義的初值通常用這個。呵呵

④ C語言統計單詞個數,單詞個數演算法

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

⑤ 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 <stdlib.h>
int main()
{
char a[80];
int i,num=0;
gets(a);
for(i=0;a[i]!='\0';i++) //這里應該檢查到串尾,字元串結束符是'\0'
{
if ( (a[i] >='a' && a[i] <='z') || (a[i] >='A' && a[i] <='Z') ) //如果是字母,則一直找到非字版母(分隔符:符號,空權格等)
{
do {
i++ ;
} while ( (a[i] >='a' && a[i] <='z') || (a[i] >='A' && a[i] <='Z') );
//記錄一個單詞
num++;
}
}
printf("%d\n",num);
return 0;
}

⑦ 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語言 統計文件中各個單詞的個數

你的程序只需要修改兩處就行了:(1.)不能用指針數組直接存放字元串,即,要把程序開頭的char *s2[30]改為char s2[30][30],用二維數組來存放多個字元串;(2.)你的想法是,如果單詞不是重復的單詞,就將它存入s2,但這時不能用「=」,應該用strcpy()函數,即,原程序中的s2[k]=s3應改為strcpy(s2[k],s3),改過後的代碼如下:
#include<stdio.h>
#include<string.h>

int main()
{
char str[100],ch;
char s2[30][30]; /*s2存放單詞(不重復),修改處*/
char s3[30],*p=s3;
int i,j,k=0,flag1,flag2,count1=0,white=1,a[30]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
FILE *file;
file=fopen("string.txt","w+");
printf("Input a string of English:\n");
gets(str);
fputs(str,file);

rewind(file);
while((ch=fgetc(file))!='0') /*統計文件中有多少個單詞*/
{
if((ch==' ')||(ch=='\t')||(ch=='\n'))
white++;
else
{
if(white)
{
white=0;
count1++;
}
}
}

rewind(file);
for(i=0;i<count1;i++)
{
flag1=0; /*是否有重復單詞*/
flag2=0; /*是否遇到空白字元*/
p=s3;
while(ch=fgetc(file))
{
if((ch!=' ')&&(ch!='\t')&&(ch!='0'))
{
if((ch>64)&&(ch<91)) /*大寫字母變小寫*/
{
ch=ch+32;
}
*p++=ch;
}
else
{
flag2=1; /*遇到空白字元*/
*p='\0';
for(j=0;j<k;j++) /*k為s2中的單詞個數*/
{
if(strcmp(s3,s2[j])==0)
{
flag1=1; /*有重復單詞*/
a[j]++;
break;
}
}
if(flag1==0) /*如果單詞不重復*/
{
strcpy(s2[k],s3); /*修改處*/
a[k]++;
k++;
}
}
if(flag2==1) /*如果遇到空白字元,則開始查詢下一單詞,跳出while循環*/
{
break;
}
}
while(((ch=fgetc(file))==' ')||(ch=='\t')); /*吞掉多餘的空白字元*/
fseek(file,-1,1); /*後退一格,繼續讀*/
}
for(i=0;i<k;i++)
{
printf("%s\t",s2[i]);
}
printf("\n");
for(i=0;i<k;i++)
{
printf("%d\t",a[i]);
}
printf("\n");
fclose(file);
return 0;
}

明白了嗎?

⑨ c語言怎麼統計輸入的漢字的個數和英文單詞的個數

一個漢字由兩個連續負值的ASCII碼組成。
當ASCII值為負j++,最後漢字個數為j/2
單詞個數基本上就是數空格
我和題主一樣懶
就這樣