| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 826 人关注过本帖
标题:求句子中最长的单词 为什么运行有乱码
只看楼主 加入收藏
lzxm160
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2006-12-26
收藏
 问题点数:0 回复次数:3 
求句子中最长的单词 为什么运行有乱码
#include<stdio.h>
#include<string.h>
#include<malloc.h>
void main()
{
  void longest(char []);

  char string[15]="I am a student";  clrscr();
  longest(string);
}
void longest(char a[])
{ int i=0,j,max=0,i1=0,j1=0,k=0;
   while(a[i]!=' ')i++; max=i;i1=0;j1=i;
   for(;a[i]!='\0';i++)
   { for(j=i;a[j]!=' ';j++)
     if(max<j-i){max=j-i;j1=j;i1=i;}
   }
   printf("the longest word is: ");
   for(k=i1;k<j1;k++)printf("%c",a[k]);
}
搜索更多相关主题的帖子: 单词 乱码 运行 
2007-12-16 22:51
布拉莫斯
Rank: 1
来 自:中国太平洋舰队
等 级:新手上路
帖 子:169
专家分:0
注 册:2007-3-31
收藏
得分:0 
我看不出来,所以我把LZ的程序写成下面的样子,实现了同样的功能。。。。。

#include<stdio.h>
#include "stdlib.h"
#include<string.h>
#include<malloc.h>
void main()
{
  void longest(char []);

  char string[15]="I am a student";  
  system("CLS");        /*clrscr(); */
  longest(string);
}

void longest(char a[])
{
    int i,max=0,index_1=0,index_2=0;
    int m_index1=0,m_index2=0;
    int len=strlen(a);
    for(i=0;i<=len;i++)
    {
        if(a[i]==' '||a[i]=='\0')
        {
            index_1=index_2;
            index_2=i;
            if(max<(index_2-index_1))
            {
                max=index_2-index_1;
                m_index1=index_1;
                m_index2=index_2;
            }
        }
    }
    printf("the longest word is: ");
    for(i=m_index1;i<m_index2;i++)
        printf("%c",a[i]);
    printf("\n");
}

真理往往掌握在少数人手中,可现实却是少数服从多数!
2007-12-16 23:21
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
我估计是下标越界。

倚天照海花无数,流水高山心自知。
2007-12-17 11:11
许一民
Rank: 1
来 自:江苏连云港
等 级:新手上路
帖 子:60
专家分:0
注 册:2007-9-29
收藏
得分:0 
#include<stdio.h>
#include<string.h>
#include<malloc.h>
int main()
{
  void longest(char []);

  char string[15]="I am a student";  clrscr();
  longest(string);
}
void longest(char a[])
{ int i=0,j,max=0,i1=0,j1=0,k=0;
   while(a[i]!=' ')i++; max=i;i1=0;j1=i;
   for(;a[i]!='\0';i++)
   { for(j=i;a[j]!=' '&&a[j]!='\0';j++)               /*原来的程序在处理最后一个单词时,必须要运行到出现空格才会结束,因此导致越界*/
     if(max<j-i){max=j-i;j1=j;i1=i;}
   }

   printf("the longest word is: ");
   for(k=i1;k<j1+1;k++)printf("%c",a[k]);   /*最长的单词下标从i1开始,到j1结束(j1可取!)*/
   return 0;
}

[[italic] 本帖最后由 许一民 于 2007-12-17 14:38 编辑 [/italic]]
2007-12-17 14:35
快速回复:求句子中最长的单词 为什么运行有乱码
数据加载中...
 
   



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

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