首页 > 代码库 > 题目遇到问题,有高手解决,不胜感激!

题目遇到问题,有高手解决,不胜感激!

Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
 

Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
 

Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
 

Sample Input
you are my friend
#
 

Sample Output
4

 

我的思路:讲输入的字符串中的字母统计出来,之后在对其进行是否相同比较,但最后总是纠结于最后的空格。

  附代码及分析:

   

#include<stdio.h>#include<string.h>  int main()    { char a[10000],b[10000][100];       int c[10000]={0};      int i,j,k,n,len,t,s,sum,num;    while(gets(a))      {      	if(strcmp(a,"#")==0)      	  break;      	      len=strlen(a);        n=0;k=0;j=0; 	    for(i=0;i<len;i++)		  {		  	if(a[i]!=' ')   //在此开始记录单词		  	  {		  	  	b[j][n++]=a[i];		  	  	k=1;        //k的作用就是判断单词是否在统计		  	  }		  	  		  	if(a[i]==' '&&k==1) //每个单词统计完之后,单词为加'\0'		  	  {		  	  	b[j][n]='\0';  //所有初始数据全部清零		  	  	k=0;		  	  	n=0;		  	  	j++;		  	  }		  			  }	         num=0;	    for(i=0;i<=j;i++)    //这一块的目的就是为了去除统计进去的空格,统计单词个数,可感觉没用,应为下边最后还得判断最后是否为空格	       
                {	       	if(strcmp(b[i]," ")!=0)	       	  num++;	       }	        t=num;	         sum=0;	      for(i=0;i<t;i++)	        {	        	for(j=i+1;j<t;j++)	        	  {	        	  	  if(strcmp(b[i]," ")!=0)	        	  	    {	        	  	      if(strcmp(b[j],b[i])==0)	        	  	           	        	  	           {	        	  	           	strcpy(b[j]," ");	        	  	           	sum++;	        	  	           }	        	  	      	        	  	    }	        	  		        	  	    	        	  }	        }	     if(a[len-1]==' ') t--;    //纠结点就在此处,加上就AC,不加就WR	    printf("%d\n",t-sum);      }      return 0;    }      望有高手指点迷津,最后一块if(a[len-1]==' ') t--;和中间的剔除空格统计字母那一块;