| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 536 人关注过本帖
标题:请高手帮帮忙。。看看我编的哪里出错了???谢谢
只看楼主 加入收藏
karenzzq
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-8-25
结帖率:0
收藏
已结贴  问题点数:20 回复次数:9 
请高手帮帮忙。。看看我编的哪里出错了???谢谢
题目:    用一个函数来实现在一行字符串中找出最长的单词的功能。此行字符串从主函数传递给该函数。

(帮我看看我编的是哪里错??不要新编的。。就看看我哪里错了???谢谢)

#include<stdio.h>
int a=0;
void main()
{
 void output(char m[80]);
 char letter[80];
 int i,k[80],r[80],q;
 printf("please input letters:");
 gets(letter);
 k[80]=beginning(letter);
 r[80]=length(k);
 for(i=0;i<80;i++)
   {
     q=r[i];
     if(r[i+1]>r[i])
       {
         q=r[i+1];
         a++;
       }
   }
 printf("length=%d",q);
 output(letter);
}






void output(char m[80])
{
  int i,j=0,k[80],b;
    for(i=0;i<80;i++)
       {
            if((m[i]>='a'&&m[i]<='z')||(m[i]>='A'&&m[i]<='Z'))
                   {
                      for(;j<80;)
                          {
                             k[j]=i;
                             j++; break;
                          }
                    }
       }
   b=k[2*a-1];
   for(i=b;i<80;i++)
    {
       if((m[i]>='a'&&m[i]<='z')||(m[i]>='A'&&m[i]<='Z'))
        printf("%c",m[i]);
       else break;
    }
}







int beginning(int m[80])
{
  int i,j=0,k[80];
  for(i=0;i<80;i++)
   {
     if((m[i]>='a'&&m[i]<='z')||(m[i]>='A'&&m[i]<='Z'))
       {
           for(;j<80;)
             {
                k[j]=i;
                j++; break;
             }
       }
   }
   return(k);
}






int length(int x[80])
{
  int i,j=0,r[80];
  for(i=0;i<80;i++)
    {
       r[i]=x[j+1]-x[j];
       j++;
    }
   return(r);
}

[ 本帖最后由 karenzzq 于 2011-8-25 18:07 编辑 ]
搜索更多相关主题的帖子: 函数 void beginning include letters 
2011-08-25 17:55
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:4 
唉,注释都没有,懒看了。

我们都在路上。。。。。
2011-08-25 17:58
karenzzq
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-8-25
收藏
得分:0 
还要注释吗
2011-08-25 18:05
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:4 
错误太多~~如果有老师教,你还是去问老师比较好。
2011-08-25 18:05
karenzzq
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-8-25
收藏
得分:0 
现在放假。。找不到老师啊。。。。
2011-08-25 18:08
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
回复 6楼 karenzzq
那就请先用自然语言描述自己的思路,每个函数是怎么写的~
问问题嘛,总要先说说自己的想法撒
2011-08-25 18:12
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:4 
程序代码:
#include <stdio.h>
#include <string.h>
void fun(char *src,char *res)
{
    char *p = src,*pm = src;
    int max = 0,tempmax = 0;
    while(*p)
    {
        if(' ' != *p)
        {
            tempmax++;
            p++;
        }
        else
        {
            if(tempmax>max)
            {
                max = tempmax;               
                pm = p-tempmax;
                tempmax = 0;
                p++;
            }
            else
                p++;
        }
    }
    strncpy(res,pm,max);
}
int main(int argc, char* argv[])
{
    char src[100] = {0};
    char res[100] = {0};
    gets(src);
    fun(src,res);
    printf("%s\n",res);
    return 0;
}
自己去找找不就行了嘛

                                         
===========深入<----------------->浅出============
2011-08-25 18:42
luyi_footman
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:32
专家分:100
注 册:2011-7-14
收藏
得分:4 
1:beginning函数里return (k)不对,k[80]是一个局部静态变量,该值在beginning函数运行结束后自动释放,不能作为返回值返回。
2:length函数里犯了和1中提到的一样的错误。
3:beginning和length函数的返回值类型是Int类型,return (k)和return (r)返回的是k[80]和r[80]的首地址,前后矛盾。
4:建议:函数的参数里不要用数组作为形参,例如int beginning(int m[80])换成int beginning(int *m)即可,虽然编译不会报错,但是这么写显得不够专业。
5:我只看了语法方面的错误,至于程序的实现算法上是否可行我没看,楼主先按我说的问题修改下自己的程序,不行的话,我再看下你的算法思路。

[ 本帖最后由 luyi_footman 于 2011-8-25 18:58 编辑 ]

天道酬勤!
2011-08-25 18:56
karenzzq
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-8-25
收藏
得分:0 
回复 8楼 laoyang103
谢谢啊。。。
2011-08-25 22:00
快速回复:请高手帮帮忙。。看看我编的哪里出错了???谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052969 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved