| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 634 人关注过本帖
标题:最长单词输出,提示应用程序错误,大侠们帮我看看啊!多谢了!
只看楼主 加入收藏
ybjkl
Rank: 2
等 级:论坛游民
帖 子:86
专家分:85
注 册:2011-6-21
结帖率:95.65%
收藏
已结贴  问题点数:20 回复次数:11 
最长单词输出,提示应用程序错误,大侠们帮我看看啊!多谢了!
#include<stdio.h>
char *fun(char *p);
int alphabet(char c);
main()
{
    char *str;
    char *s;
    printf("input the string:\n");
    gets(str);
    s=fun(str);
    printf("the longest word is :\n");
    while(alphabet(*s))
    {
        printf("%c",*s);
            s++;
    }   
}

int alphabet(char c)
{
    if((c>='A'&&c<='Z')||(c>='a'&&c<='z'))
        return 1;   
    else
        return 0;
}
char *fun(char *p)
{
    int max=0;
    int count=0;
    int flag=1;
    char *point;
    while(*p!='\0')
    {
        if(alphabet(*p))
        {
            count++;
            flag=0;
        }
        else
            flag=1;
        if(flag)
        {
            if(count>max)
            {
            max=count;
            point=p-max;
            }
            else
                count=0;
        }
    }
        
        p++;
    }
    return point;
}
搜索更多相关主题的帖子: 应用程序 单词 
2011-08-29 15:15
ybjkl
Rank: 2
等 级:论坛游民
帖 子:86
专家分:85
注 册:2011-6-21
收藏
得分:0 
在线等,大侠们帮帮忙!多谢啦!
2011-08-29 15:55
vesapro
Rank: 2
等 级:论坛游民
帖 子:11
专家分:27
注 册:2011-8-29
收藏
得分:5 
回复 2楼 ybjkl
你好
还在吗

程序很清晰,不错,程序的问题在fun函数中的循环变量自增在循环体外,死循环。
但是有有2个问题
如过 最长的单词 有好几个,并列最长,怎么办??
留下qq,交流交流
123871020

[ 本帖最后由 vesapro 于 2011-8-29 16:26 编辑 ]
2011-08-29 16:05
naruto01
Rank: 4
等 级:业余侠客
帖 子:103
专家分:280
注 册:2011-5-23
收藏
得分:0 
就看了主程序几行。
考虑下
    char *str;
    char *s;
小白路过 以上言论 概不负责
2011-08-29 16:06
ybjkl
Rank: 2
等 级:论坛游民
帖 子:86
专家分:85
注 册:2011-6-21
收藏
得分:0 
回复 4楼 naruto01
这里有什么问题吗?还是不明白!
2011-08-29 16:12
naruto01
Rank: 4
等 级:业余侠客
帖 子:103
专家分:280
注 册:2011-5-23
收藏
得分:0 
以下是引用ybjkl在2011-8-29 16:12:17的发言:

这里有什么问题吗?还是不明白!
http://www.
http://blog.
网上随便搜了俩,你凑活看看。   应该书里都有讲,你没注意。
2011-08-29 16:25
kscooh1
Rank: 2
等 级:论坛游民
帖 子:53
专家分:25
注 册:2011-8-8
收藏
得分:0 
回复 5楼 ybjkl
应该没初始化吧,我也新手,不太清楚.
2011-08-29 16:26
vesapro
Rank: 2
等 级:论坛游民
帖 子:11
专家分:27
注 册:2011-8-29
收藏
得分:0 
回复 7楼 kscooh1
还有1个问题
就是pionter没有初始化,如果输入一个空字符串的话,也就出现非法访问
2011-08-29 16:42
cosam
Rank: 4
等 级:业余侠客
帖 子:146
专家分:259
注 册:2011-8-25
收藏
得分:0 
请程序写出来请写明下注释或者随便描述一下算法。
1.查看一下涵数调用的顺序,是否正确啊。
2.涵数的使用和定义方法有没有出错.
http://baike.baidu.com/view/1457521.htm
  char *str;
    char *s;
看一下这定义是不是有问题。
2011-08-29 16:43
ybjkl
Rank: 2
等 级:论坛游民
帖 子:86
专家分:85
注 册:2011-6-21
收藏
得分:0 
上午的问题解决了,但是不够完善,不能实现等长单词的输出,要实现这个的话就必须用到指针数组,这个对我来说有点难度,但是还是硬着头皮编了一下,结果错误一大堆,还是请大神们帮帮忙啊!多谢!多谢!
不要求全部输出等长的代码如下,编译可通过。
#include<stdio.h>
char *fun(char *p);
int alphabet(char c);
main()
{
char str[100];
char *s;
printf("input the string:\n");
gets(str);
s=fun(str);
if(s==NULL)
printf("the string is null!");
else
{
printf("the longest word is :\n");
while(alphabet(*s))
{
printf("%c",*s);
s++;
}
printf("\n");
}
}int alphabet(char c)
{
    if((c>='A'&&c<='Z')||(c>='a'&&c<='z'))
        return 1;   
    else
        return 0;
}
char *fun(char *p)
{
    int max=0;
    int count=0;
    int flag=1;
    char *point=NULL;
    while(*p!='\0')
    {
        if(alphabet(*p))
        {
            count++;
            flag=0;
        }
        else
            flag=1;
        if(flag)
        {
            if(count>max)
            {
                max=count;
                point=p-max;
                count=0;
            }
            else
                count=0;     
        }              
        p++;
    }
    return point;
}

如果想要实现全部输出等长单词,我自己写的代码如下,但是有错误,大神们帮忙看看啊!这个指针的指针对我实在是有点困难啊!多谢啦!
#include<stdio.h>
char *fun(char *p);
int alphabet(char c);
main()
{
    char str[100];
    char **s;
    int i,j=0;
    printf("input the string:\n");
    gets(str);
    s=fun(str);
    if(s==NULL)
        printf("the string is null!");
    else
    {
    printf("the longest word are:\n");
    for(i=0;*(s+i)!='\0';i++)
    {
        while(alphabet(*(*(s+i)+j))
        {
            printf("%c\n",*(s+i)+j);
            j++;
        }
        j=0;

    }
    }
}
int alphabet(char c)
{
    if((c>='A'&&c<='Z')||(c>='a'&&c<='z'))
        return 1;   
    else
        return 0;
}
char **fun(char *p)
{
    int max=0;
    int count=0;
    int flag=1;
    int i=0;
    char *a[10];
    char *point=NULL;
    while(*p!='\0')
    {
        if(alphabet(*p))
        {
            count++;
            flag=0;
        }
        else
            flag=1;
        if(flag)
        {
            if(count>max)
            {
            max=count;
            point=p-max;
            count=0;
            }
            else if(max==count)
            {
                point=p-max;
                a[i++]=point;
                count=0;
            }
            else
                count=0;
        }
        p++;
    }   
    return a;
}
2011-08-29 20:21
快速回复:最长单词输出,提示应用程序错误,大侠们帮我看看啊!多谢了!
数据加载中...
 
   



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

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