蓝桥杯算法提高VIP-不同单词个数统计 - C语言网 (dotcpp.com)
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
int main()
{
//比较不同单词的个数
char ch[100] = { 0 };//先读入字符
gets(ch);//奖他们分割
char arr[100][100] = { 0 };
int i, j;
int m;
//我需要做的是使用i<strlen来控制结束的时间
for(i=0,j=0,m=0;i<strlen(ch);i++)
{
if(ch[i]!=' ')
{
arr[m][j]=ch[i];
j++;
}
else
{
j=0;
m++;
}
}
int row=m;//标示的就是行数,但是当搜索到‘\0’他还没来得急m++就已经结束了,
//所以m此时表示的是行的下角标号
int count=0;
for (i = 0; i <= row; i++)
{
for (j = i + 1; j <= row ; j++)
{
if (strcmp(arr[i], arr[j]) == 0)
{
strcpy(arr[j], "");
}
}
}
for (i = 0; i <= row; i++)
{
if (strcmp(arr[i], "") == 0)
count++;
}
printf("%d", row - count+1 );
return 0;
}
这里重要的是结束时间的判断,对m表示意义的判断(如果错认为m表示的是行数,那就错了,因为当判断到最后的时候m还没有来得急自增就已经结束了)
我们在对字符串进行分割的时候,我们使用了一个循环就解决了,这是一种比较节省时间的方法