//单词 法1
#include <stdio.h>
#include <ctype.h>
#include <stdio.h>
#include <ctype.h>
void main()
{
char string[100];
int i,num = 0;
//防止溢出,gets对溢出不做判断,而fgets做判断。
fgets(string,sizeof(string),stdin);
for (i = 0;string[ i ] != '\0';++i)
if ( isalpha(string[i])&&(!isalpha(string[i + 1])) )
num++;
printf("There are %d words in the line.\n",num);
}
//单词法 2
#include <stdio.h> #include <string.h>
int Find(char a[100],size_t i) { int num=0;//单词个数 size_t index=0; for (index=0;index!=i;++index) { if ((('a'<=a[index] && 'z'>=a[index]) || ('A'<=a[index] && 'Z'>=a[index])) && ('A'>a[index+1] || ('Z'<a[index+1] && a[index+1]<'a') || a[index+1]>'z')) { ++num; } }
return num;
}
int main() { char a[100]={0}; scanf("%[^\n]",a);//[ ]表示选择,^表示非
printf("%d\n",Find(a,strlen(a)));
return 0;
}
//法3
#include <stdio.h> #include <conio.h> #include <time.h> #include <stdlib.h> #include <math.h> #include <windows.h>
#include <stdio.h> #include <ctype.h> #include <string.h> int main() { char s[100]; int length = 0; int i = 0; int count = 0; FILE *fp; if((fp=fopen("E:\string.txt","rt"))==NULL)//绝对路径,不推荐
{
printf("\nCannot open file press any key exit!");
getchar();
return 0;
}
printf("读入字符串的个数:");
scanf("%d",&length);
fgets(s,length,fp);
printf("\n%s\n",s);
fclose(fp);
for (i = 0; i<length; i++)
{
if ((isalpha(s[i+1])==0)&&(isalpha(s[i])!=0))
{
count++;
}
}
printf("\n单词的总个数为%d\n",count);
return 0;
}
//单词法4
#include <stdlib.h> #include <stdio.h> #include <string.h> //判断字符是否为字母
fun(char *s) { if(*s>='a'&&*s<='z'||*s>='A'&&*s<='Z') return 1; else return 0; } main( ) { char str[100],*p=str; int sum=0; printf("输入一行字符:\n"); fgets(str,100,stdin);
while(*p)
{
if( fun(p) ) //是字母就开始计数
sum++;
while( *p && fun(p) )//是字母就向后窜
p++;
while( *p && !fun(p) )//不是字母就向后窜
p++;
}
printf("共有: %d 个单词\n",sum);
}