입력 한 문장에서 몇 개의 단어 (반복되지 않음)를 계산합니다. 문장에는 소문자와 공백 만 있습니다.
분석
입력 문장을 처음부터 순회하고 각 단어를 문자열 변수 t에 할당합니다 (단어 문자열 배열에 그러한 단어가없는 경우 count + 1을 계산하고 단어 배열에 단어 복사).
암호
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int count=0;//全局变量
int x=0;//全局变量
void append(char (*p)[30],char *t)//定义函数,实现单词是否存在的判断,若不存在则计数加一,并复制单词到数组
{
int flag=0,i;
for(i=0;i<100;i++)
{
if(strcmp(t,p[i])==0)
{
flag=1;
}
}
if(flag==0)
{
count++;
strcpy(p[x++],t);
}
}
int main()
{
char words[100][30]={
'\0'};
char s[101]={
'\0'};
char t[30];
int i,j,m=0;
gets(s);
for(i=0;i<strlen(s);i++)
{
if(s[i]!=' ')
{
for(j=i;s[j]>='a'&&s[j]<='z';j++)
{
t[m++]=s[j];
}
i=j;
t[m]='\0';
m=0;
append(words,t);//调用函数
}
}
printf("%d",count);
return 0;
}