| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 972 人关注过本帖
标题:一个C题目。不会做,高手来看看你是不是也不会。
只看楼主 加入收藏
makebest
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:658
专家分:962
注 册:2005-3-17
收藏
得分:3 
太简单了, 这样:
程序代码:
int maxwordlen(char *S)
{
    int maxlen = 0;
    int maxtmp = 0;
    while(*S)
    {
        if(isspace(*S))
        {
            maxlen = max(maxlen, maxtmp);
            maxtmp = 0;
        }
        else
        {
            maxtmp++;
        }
        S++;
    }
    maxlen = max(maxlen, maxtmp);
    return maxlen;
}

2010-11-15 08:23
heli717
Rank: 2
等 级:论坛游民
帖 子:13
专家分:32
注 册:2010-11-13
收藏
得分:1 
#include "stdafx.h"

/*********************************
编写一个函数,其参数为字符串S,返回值为S中连续非空格字符所组成的子串中最大长字串的长度   
如“abc 123#$ 789",中最长非空格字串是”123#$".则函数返回5
**********************************/
int sample(char chr[]);

void main()
{
    char buffer[100];


    //scanf遇到空格或回车就结束,字符串内不能包含空格
    //scanf("%s",buffer);

    //遇到回车结束,字符串内可包含空格
    gets(buffer);
    printf("%d",sample(buffer));

    getchar();

    scanf(buffer);

   
}

/*********************************
编写一个函数,其参数为字符串S,返回值为S中连续非空格字符所组成的子串中最大长字串的长度   
如“abc 123#$ 789",中最长非空格字串是”123#$".则函数返回5
注意字符串以'\0'空字符为结束符,而不是'0'
**********************************/
int sample(char chr[])
{
    int i = 0;
    char split = ' ';
    int maxLen = 0;
    int currLen = 0;
    while(chr[i] != '\0')
    {
        if(chr[i]==' ')
        {
            if (maxLen < currLen)
            {
                maxLen = currLen;
            }
            currLen = 0;
        }
        else
        {
            currLen ++;
        }

        i++;
    }

    return maxLen;
}
2010-11-15 09:42
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:1 
# include <stdio.h>
# include <string.h>
#define LONG_STRING 100

int The_Longest_String(char * p_str)
{
    char *stringtok ;
    int max , len ;
    stringtok = strtok(p_str , "  ") ;
    max = strlen(stringtok) ;
    for( ; stringtok != NULL ; stringtok = strtok(NULL , "  "))
    {
         len = strlen(stringtok) ;
        if(max < len )
            max = len ;
    }
    return max ;
}
int main()
{
    char p_str[LONG_STRING] ;
    gets(p_str) ;
    printf("The Longest of String is %d\n" , The_Longest_String(p_str)) ;
    return 0 ;
}

这个是我写的,偷了个懒,调用了一个处理字符串的库函数,可能在时间效率上有点“慢”吧!

愿用余生致力编程
2010-11-15 10:34
wentaiyou
Rank: 2
等 级:论坛游民
帖 子:68
专家分:17
注 册:2004-12-3
收藏
得分:1 
#include <stdio.h>
#include <string.h>
#define N 100

int my_fun(char *s, int len){
    int i, j = 0, t = 0;
    int f = 0, n = 0;
    for(i = 0; i <= len; i++){
        if((*(s + i) == ' ') || (*(s + i) == '\t') || (*(s + i) == '\0')){
            f = 0;
            if(t > j)
                j = t;
            t = 0;
        }else
            f = 1;
            
        if(f == 1)
            t++;
    }
   
    return(j);
}

int main(){
    int i;
    char str[N];
    printf("Please input a strings:\n");
    gets(str);
    if((i = strlen(str)) >= N)
        printf("Strings is too long! %d\n",i);
    else
        printf("%d\n",my_fun(str,i));
}

假如回到过去.我能做些什么? 还是和现在这样有时间没事情?
2010-11-15 14:19
快速回复:一个C题目。不会做,高手来看看你是不是也不会。
数据加载中...
 
   



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

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