0

我制作了在句子中找到相同单词的程序。我需要编写程序来计算相等标记之间有多少符号。

我知道如果相等的字符串是 words[2] 和 words[5] 那么它们之间的长度将是 strlen(words[3])+strlen(words[4])

我的代码:

for (k=0; k<i-1; k++)
{
 for (j=k+1; j<i; j++)
  { 
             if (strcmp(words[k],words[j])==0) 
             {
             printf("equal words are [%s],%d,%d",words[k],k,j);



             break;
             }

但如果我的话就像

     words[k] and words[j]

那我怎么知道它们之间的长度?

4

1 回答 1

1

天真的答案是在匹配后添加另一个 for 循环:

for (k=0; k<i-1; k++)
{
    for (j=k+1; j<i; j++)
    { 
         if (strcmp(words[k],words[j])==0) 
         {
             int distance = 0;
             for (n=k+1; n < j; n++)
             {
                  distance += strlen(words[n]);
             }

             printf("equal words are [%s],%d,%d,(distance = %d)",words[k],k,j,distance);
             break;
         }
    }  
}

但是,您还可以跟踪当前匹配扫描的长度并避免另一个循环:

for (k=0; k<i-1; k++)
{
    int distance = 0;

    for (j=k+1; j<i; j++)
    { 
         if (strcmp(words[k],words[j])==0) 
         {
             printf("equal words are [%s],%d,%d,(distance = %d)",words[k],k,j,distance);
             break;
         }

         distance += strlen(words[j]);
    }  
}
于 2013-10-29T20:16:16.970 回答