| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 603 人关注过本帖
标题:大家看看啦,错哪里了
只看楼主 加入收藏
caiznen
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-11-25
收藏
 问题点数:0 回复次数:7 
大家看看啦,错哪里了
题目是输入一字符串,将字符串的最长单词输出 大家帮帮忙,谢谢

#include <stdio.h>
void main()
{
    void hs(char x[100],char y[100]);
    char a[100],b[100];
    gets(a);
    hs(a,b);
    printf("最长的单词是%s\n",b);
}
void hs(char x[100],char y[100])
{
    int i,j=0,k,max=0;
    for (i=0;i<=99;i++)
    {
        if(x[i]!=32&&x[i]!='\0')
            j=j+1;
        else if(j>max)
        {
            max=j;
            k=i;
            j=0;
        }
        if(x[i]=='\0')
            break;
    }
    for (i=0;i<=max-1;i++)
        y[i]=x[k-max+i];
    y[max]='\0';
}
搜索更多相关主题的帖子: c语言 纠错 
2008-11-25 21:07
faminxmu
Rank: 3Rank: 3
来 自:厦门
等 级:论坛游侠
帖 子:191
专家分:106
注 册:2008-4-23
收藏
得分:0 
#include<stdio.h>
#include<string.h>
void main()
{
     char str[50],*a;//str是输入的句子也就是很多单词以空格隔开
     gets(str);
     char* findLongest(char str[]);
     a=findLongest(str);
     printf("the longest word is %s and is length is %d\n",a,strlen(a));
     system("pause");
     }
char* findLongest(char str[])
{
      int i,n,k1=0,k=0;
      char *p=str;
      for(i=0,n=0;;++i)
      {
                       if(str[i]==0) break;//判断结实条件
                       if(str[i]==32)
                       {
                       n=0;
                       str[i]=0;//把每个单词前的空格换成0就是把单词真正的隔开
                       }
                       else k1=(++n);//如果不是最长的
                       if(k<k1) //如果是最长的
                       {
                       k=k1;
                       p=str+i-k+1;//指向最长单词的指针
                       }
                       }
                       return p;
                       }

在虚拟的世界中寻找目标。
2008-11-25 21:14
caiznen
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-11-25
收藏
得分:0 
我们还没学指针呢,看不懂,
2008-11-25 21:23
faminxmu
Rank: 3Rank: 3
来 自:厦门
等 级:论坛游侠
帖 子:191
专家分:106
注 册:2008-4-23
收藏
得分:0 
帮你修改了
#include <stdio.h>
void main()
{
    void hs(char x[100],char y[100]);
    char a[100],b[100];
    gets(a);
    hs(a,b);
    printf("最长的单词是%s\n",b);
    system("pause");
}
void hs(char x[100],char y[100])
{
    int i,j=0,k,max=0;
    for (i=0;i<=99;i++)
    {
        if(x[i]!=32&&x[i]!=0)
        j=j+1;
        if(j>max)
        {
                 max=j;
                 k=i;
                 }//j不要设置为0因为可能一个单词还没读完
        if(x[i]=='\0')
            break;
            if(x[i]==32||x[i]==0) j=0;//j何时设置为0
            }
    if(max)//判断max是否为0若是证明输入为空就如果没这个判断当输入为空的时候下面的数组会越界
    {
    for (i=0,j=k-max+1;i<=k;i++,j++)
        y[i]=x[j];
    y[max]='\0';
}
}

在虚拟的世界中寻找目标。
2008-11-25 22:10
荣小三
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-11-25
收藏
得分:0 
看的我头晕啊~~~~~
2008-11-25 22:20
faminxmu
Rank: 3Rank: 3
来 自:厦门
等 级:论坛游侠
帖 子:191
专家分:106
注 册:2008-4-23
收藏
得分:0 
怎么会呢?改的地方我有注释啊

在虚拟的世界中寻找目标。
2008-11-25 22:23
caiznen
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-11-25
收藏
得分:0 
谢谢啦
2008-11-25 22:35
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
感谢楼上各位,我又学会了一些使用方法!

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-11-25 23:05
快速回复:大家看看啦,错哪里了
数据加载中...
 
   



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

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