| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 409 人关注过本帖
标题:程序出错了,我检验发现是运行时套在了一个死循环中,但无从改造,望纠错, ...
只看楼主 加入收藏
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
结帖率:97.22%
收藏
已结贴  问题点数:30 回复次数:5 
程序出错了,我检验发现是运行时套在了一个死循环中,但无从改造,望纠错,如果实在无法下手的话希望能帮忙编写出一个正确的事例。
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#include <stdlib.h>
#define A 128

int main(void)
{
    char a[A];
    char *pS[A]={NULL};
    char *p_string=NULL;
    int i=0;
    int j=0;
    int u=0;
    bool answer=false;

    printf("输入end结束\n");
    printf("请输入文本:\n\n");
    while((strcmp(fgets(a,A,stdin),"end\n")!=0)&&(i<A))
    {
        a[strlen(a)-1]='\0';
        pS[i]=(char*)malloc(strlen(a)+1);
        if(pS[i]==NULL)
        {
            printf("内存失败,程序结束\n");
            return 0;
        }
        strcpy(pS[i++],a);
    }
    while(!answer)
    {
    for(u=0;u<i;u++)
    for(j=0;j<i;j++)
    {
        if(strlen(pS[u])<strlen(pS[j]))
        {
            p_string=pS[u];
            pS[u]=pS[j];
            pS[j]=p_string;
            answer=false;
        }
    }
    }
    printf("输出如下:\n\n");
    for(j=0;j<i;j++)
    {
        printf("  %s\n",pS[j]);
        free(pS[j]);
        pS[j]=NULL;
    }
    return 0;
}


本意是从键盘读入任意个谚语,再将它们以字长顺序由短到长的输出
不用那种连贯比较再输出的,那样顺序并不全对。
主要是逻辑思维理不清啊,望高手们加以改正,谢谢
搜索更多相关主题的帖子: include false 
2012-10-30 23:41
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
主要是第二个循环的问题,希望能将它改正确

I have not failed completely
2012-10-30 23:44
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
收藏
得分:15 
程序代码:
 while(!answer)
    {
    for(u=0;u<i;u++)
    for(j=0;j<i;j++)
    {
        if(strlen(pS[u])<strlen(pS[j]))
        {
            p_string=pS[u];
            pS[u]=pS[j];
            pS[j]=p_string;
          
        }
         answer=true;
    }
    }
祝你好运

WE GO
2012-10-31 08:39
jun331207100
Rank: 2
等 级:论坛游民
帖 子:12
专家分:37
注 册:2012-10-25
收藏
得分:15 
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define A 128

int main(void)
{
    char a[A];
    char *pS[A]={NULL};
    char *p_string=NULL;
    int i=0;
    int j=0;
    int u=0;
    bool answer=false;

    printf("输入end结束\n");
    printf("请输入文本:\n\n");
    while((strcmp(fgets(a,A,stdin),"end\n")!=0)&&(i<A))
    {
        a[strlen(a)-1]='\0';
        pS[i]=(char*)malloc(strlen(a)+1);
        if(pS[i]==NULL)
        {
            printf("内存失败,程序结束\n");
            return 0;
        }
        strcpy(pS[i++],a);
    }
    while(!answer)
    {
    for(u=0;u<i;u++)
    for(j=0;j<i;j++)
    {
        if(strlen(pS[u])<strlen(pS[j]))
        {
            p_string=pS[u];
            pS[u]=pS[j];
            pS[j]=p_string;
            answer=false;
        }
        if(u==(i-1)&&j==(i-1))
            {
                answer=true;
            }
    }
    }
    printf("输出如下:\n\n");
    for(j=0;j<i;j++)
    {
        printf("  %s\n",pS[j]);
        free(pS[j]);
        pS[j]=NULL;
    }
    return 0;
}

2012-10-31 09:46
青春无限
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江苏
等 级:贵宾
威 望:24
帖 子:3452
专家分:19340
注 册:2012-3-31
收藏
得分:0 
支持一下

学 会看代码…学习写程序…学会搞开发…我的目标!呵呵是不是说大话啊!!一切皆可能
2012-10-31 10:09
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
虽然并没有解决根本问题,但是我也得到了一点启发,现在已经做出来了,还是谢谢你们了

I have not failed completely
2012-10-31 19:19
快速回复:程序出错了,我检验发现是运行时套在了一个死循环中,但无从改造,望纠 ...
数据加载中...
 
   



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

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