| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 936 人关注过本帖
标题:被这个问题难住了,老谭书上的习题来着,程序运行未输出结果就意外停止了。
只看楼主 加入收藏
将是高手
Rank: 1
等 级:新手上路
帖 子:79
专家分:5
注 册:2011-6-18
结帖率:100%
收藏
 问题点数:0 回复次数:9 
被这个问题难住了,老谭书上的习题来着,程序运行未输出结果就意外停止了。
题目是:写一个函数,输入一行字幅,将此字符串中最长的单词输出。
我按我的思路写出来了,但是运行的时候window7总会跳出来说,xx.exe已经停止工作,各位高手说说是什么原因?还有,我总觉得我写的代码过于冗长,似乎应该还有更简单的方法,各位也介绍一下吧?

以下是我的代码:
程序代码:
#include"stdio.h"
#include"stdlib.h"
int main()
{
    char str[100];
    int a,b,i,j,m,n,max[100],num[100],big[100],huge;
    gets(str);
    n=strlen(str);
    while(i<n)
    {
        if(str[i]!=32)
            num[j]=m;
        else
        {
            num[j+1]=m;
        }
        m=m+1;
        i=i+1;
        j=j+2;
    }
    for(j=0;j<n;)
    {
        max[i]=num[j+1]-num[j]; 
        big[i]=max[i];
        i=i+1;
        j=j+2;
    }
    for(i=0;i<n;i++)
    {
        if(max[i]>huge)
        {
            huge=max[i];
        }
    }
    for(i=0;i<n;i++)
    {
        if(big[i]==huge)
            break;
    }
    a=i+huge;
    for(b=i;b<a;b++)
    {
        printf("%c",str[b]);
    }
    system("pause");
}
搜索更多相关主题的帖子: color 
2011-09-16 18:28
statics
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:163
专家分:625
注 册:2011-8-29
收藏
得分:0 
i,m这类的没有初始化,你就用?不出问题才是怪事

惟我独行...
2011-09-16 18:32
将是高手
Rank: 1
等 级:新手上路
帖 子:79
专家分:5
注 册:2011-6-18
收藏
得分:0 
回复 2楼 statics
能说得详细点儿吗?我再弄个 int c去代替i为什么还错?
2011-09-16 18:45
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<string.h>
void fun(char *str,char *res)
{
    char *p = str;
    char *pmax = str;
    int max = 0;
    int tempmax = 0;
    while(*p)
    {      
        if(*p != ' ')
        {
            tempmax++;
            p++;
        }
        else
        {
            if(tempmax > max)
            {
                pmax = p-tempmax;
                max = tempmax;
            }
            tempmax = 0;
            p++;
        }
    }
    if(tempmax > max)
    {
        max = tempmax;
        pmax = p-tempmax;
    }
    strncpy(res,pmax,max);
}

int main()
{
    char str[100] = {0},res[100] = {0};
    gets(str);
    fun(str,res);
    puts(res);
    return 0;
}

时间不多先不看你的代码了  这个算法就是要把结束标志处理好

                                         
===========深入<----------------->浅出============
2011-09-16 19:06
DestinyOooO
Rank: 2
等 级:论坛游民
帖 子:16
专家分:17
注 册:2011-9-15
收藏
得分:0 
#include <stdio.h>
#include <string.h>
#define MAX 201

int main()
{
    char buf[MAX], longest[MAX], *ptr, *delim = " ";
    int max_len, tmp_len;
   
    fgets(buf, MAX, stdin);
    buf[strlen(buf)-1] = '\0';
    ptr = strtok(buf, delim);
    max_len = strlen(ptr);
    strncpy(longest, ptr, max_len);
    longest[max_len] = '\0';
    while (ptr = strtok(NULL, delim))
    {
        tmp_len = strlen(ptr);
        if (max_len < tmp_len)
        {
            max_len = tmp_len;
            strncpy(longest, ptr, max_len);
            longest[max_len] = '\0';
        }
    }
    printf("%s\n", longest);
    return 0;
}
随便写的,不知道符不符合题意,你看一下吧
2011-09-16 19:19
DestinyOooO
Rank: 2
等 级:论坛游民
帖 子:16
专家分:17
注 册:2011-9-15
收藏
得分:0 
用gets容易缓冲区溢出,改用fgets
2011-09-16 19:23
将是高手
Rank: 1
等 级:新手上路
帖 子:79
专家分:5
注 册:2011-6-18
收藏
得分:0 
回复 6楼 DestinyOooO
好的
2011-09-16 19:32
将是高手
Rank: 1
等 级:新手上路
帖 子:79
专家分:5
注 册:2011-6-18
收藏
得分:0 
回复 4楼 laoyang103
好厉害啊,这个程序是您随手编的吗?我看了好一会儿才总算看懂了。谢谢。
2011-09-16 22:23
将是高手
Rank: 1
等 级:新手上路
帖 子:79
专家分:5
注 册:2011-6-18
收藏
得分:0 
回复 5楼 DestinyOooO
你用了好几个函数,我得边查边看才行了呵呵。
2011-09-16 22:24
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:0 
回复 5楼 DestinyOooO
警告 dfghc~1.txt 16: 可能是不正确的赋值在 main 函数中

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-09-16 23:20
快速回复:被这个问题难住了,老谭书上的习题来着,程序运行未输出结果就意外停止 ...
数据加载中...
 
   



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

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