| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 839 人关注过本帖
标题:求助:输入一串字符串中的最长单词 出错了
只看楼主 加入收藏
赵疯子
Rank: 8Rank: 8
来 自:dream
等 级:蝙蝠侠
威 望:2
帖 子:365
专家分:737
注 册:2013-5-5
收藏
得分:3 
以下是引用我叫沃恩在2013-6-16 00:18:50的发言:

for(;num(a)==1;i++)
    {
        printf("%c",a);
    }感觉这里有问题!!

不光有问题,还很大,他准是以为这是字符数组了
2013-06-17 09:40
无凉
Rank: 1
等 级:新手上路
帖 子:16
专家分:2
注 册:2013-5-6
收藏
得分:0 
回复 10楼 雪狼MJ
10楼的程序调试出错 百度了下然后给修改了 理解时顺手加了注释 给了我用指针的灵感 谢啦!!!!
以下为修改完 成功运行的程序:
程序代码:
#include<stdio.h>
#include<string.h>
#define bool int        //c不支持bool,想使用必须定义以下三行的宏
#define true 1
#define false 0

int longest(char x[]);
int num(char);

int main()
{  
  
    char a[50];
    int    i;
    printf("putin line:\n");
    gets(a);
    printf("the longest word is:\n");
    i= longest(a);
  
    for(;num(a[i])==1;i++)
    {
        printf("%c",a[i]);
    }
    printf("\n");
    return 0;
}

int longest(char x[])
{
    int k=0;
    int l=0;
    int m=0;
    int n=0;
    int i;
    bool Inti=false;       
    bool L_start;
    bool M_start;
    int result;
    for(i=0;(x[i])!='\0';i++)  //在for里 int i会报错
    {
        //始化,将第一个遇到的字母记录
        if((!Inti) && num(x[i]))  //!inti第一次为true执行
        {
            k=1;
            l=i;
            L_start=true;
            Inti=true;        //之后为false不执行
        }
      
        if(num(x[i]))
        {
            if(L_start) k++;    //k控制字母长度
            if(M_start) m++;   
        }
        else
        {
            if(k<m)
            {
                L_start=true;
                M_start=false;
            }
            else
            {
                L_start=false;
                M_start=true;
            }
          
            if(num(x[i+1]))        //下一个是字母
            {
                if(L_start)     //k<m
                {
                    k=0;    //k清零
                    l=i+1;    //l重新记录下一个单词首字母位置
                }
                if(M_start)    // k>=m
                {
                    m=0;    // m清零
                    n=i+1;     //n重新记录下一个单词首字母位置
                }
            }
        }
        (k>m)?(result=l):(result=n);
    }
    return result;
}
int num(char a)
{
    if ((a>='a')&&(a<='z')||(a>='A')&&(a<='Z'))  
    {
        return 1;
    }
    else return 0;
}

2013-06-17 18:32
无凉
Rank: 1
等 级:新手上路
帖 子:16
专家分:2
注 册:2013-5-6
收藏
得分:0 
回复 11楼 赵疯子
(⊙o⊙)… 我还真是以为是字符数组了。。。 再好好研究下 谢啦!
2013-06-17 18:36
无凉
Rank: 1
等 级:新手上路
帖 子:16
专家分:2
注 册:2013-5-6
收藏
得分:0 
回复 11楼 赵疯子
(⊙o⊙)…我还真是以为是字符数组了 不过不然是什么呢。。。。-_-|| 我再研究下 谢啦!!
2013-06-17 18:37
雪狼MJ
Rank: 8Rank: 8
来 自:甘肃
等 级:蝙蝠侠
威 望:4
帖 子:267
专家分:853
注 册:2012-5-27
收藏
得分:0 
额,让我吐槽下:你们的编译器弱爆了,都不支持C99,还说我程序有问题,你们的程序才有问题呢!!!!!!!

Edsger Dijkstra:算法+数据结构=程序
2013-06-17 18:46
快速回复:求助:输入一串字符串中的最长单词 出错了
数据加载中...
 
   



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

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