905853663 发表于 2021-1-5 11:23:22

自定义函数问题

9. 编写一个函数实现在一个字符串中查找最长的单词的位置,假定字符串中只有字母与空格,空格用来隔开单词。
函数原型:        int maxlenwordpos(char * str);


请问上面这道题该怎么写?

jackz007 发表于 2021-1-5 11:42:17

本帖最后由 jackz007 于 2021-1-5 11:47 编辑

// 返回值为最长字符串在 str 中的位置索引
int maxlenwordpos(char * str)
{
      int c , d , i , n               ;
      for(c = d = i = n = 0 ; str ; i ++) {
                if(str == ' ') {
                        if(c > n) {
                              n = c   ;
                              d = i - c ;
                        }
                        c = 0             ;
                } else {
                        c ++            ;
                }
      }
      if(c > n) d = i - c               ;
      return d                        ;
}

905853663 发表于 2021-1-5 12:44:01

jackz007 发表于 2021-1-5 11:42


运行出错

jackz007 发表于 2021-1-5 12:59:59

905853663 发表于 2021-1-5 12:44
运行出错

       把你的代码贴出来看看

905853663 发表于 2021-1-5 13:12:48

jackz007 发表于 2021-1-5 12:59
把你的代码贴出来看看

int maxlenwordpos(char str)
{
      int c,d,i,n;
      for(c=d=i=n=0;str;i++)
                {
            if(str==' ')
                        {
                if(c>n)
                                {
                  n= c;
                  d=i-c;
                }
                c=0;
            }
                        else
                        {
                c++;
            }
      }
      if(c>n)
                  d=i-c;
      return d;
}

jackz007 发表于 2021-1-5 13:54:26

本帖最后由 jackz007 于 2021-1-5 13:55 编辑

905853663 发表于 2021-1-5 13:12
int maxlenwordpos(char str)
{
      int c,d,i,n;


#include <stdio.h>

// 返回值为最长字符串在 str 中的位置索引
int maxlenwordpos(char * str)
{
      int c , d , i , n               ;
      for(c = d = i = n = 0 ; str ; i ++) {
                if(str == ' ') {
                        if(c > n) {
                              n = c   ;
                              d = i - c ;
                        }
                        c = 0             ;
                } else {
                        c ++            ;
                }
      }
      if(c > n) d = i - c               ;
      return d                        ;
}

int main(void)
{
      char s                                              ;
      int i , n                                                ;
      for(n = 0 ; n < 255 && (s = getchar()) != '\n'; n ++) ;
      s = '\0'                                              ;
      i = maxlenwordpos(s)                                     ;
      while(s && s != ' ') putchar(s)            ;
      printf("\n")                                             ;
}
      编译、运行实况
D:\0002.Exercise\C>g++ -o x x.c

D:\0002.Exercise\C>x
ab cde fghi jklmno pq rst 123 2345678 uvwx yz
2345678

D:\0002.Exercise\C>
页: [1]
查看完整版本: 自定义函数问题