| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1546 人关注过本帖
标题:麻烦各位帮我看下我写的这个C代码有什么错误,谢谢了。
只看楼主 加入收藏
DarylL
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-12-6
结帖率:87.5%
收藏
已结贴  问题点数:20 回复次数:30 
麻烦各位帮我看下我写的这个C代码有什么错误,谢谢了。
这是题目的要求
图片附件: 游客没有浏览图片的权限,请 登录注册

然后调试的时候,就是这个错误,每一个函数都有。
图片附件: 游客没有浏览图片的权限,请 登录注册

我是初学者。。然后掌握的C语言只是还不是特别多。我再看C Primer Plus。然后作题的时候,出现的问题。我改了好多次,调试了好多次,都没有正确的结果。请大家帮我解决下,谢谢了!
补充:当我把第一个menu后面所有代码全部注释掉了以后,然后写上case 'a'的代码,结果是正常的,但是同样的代码到了case 'a'那里,就不正常了。我想应该是注释掉的那里有问题,但是我实在找不出问题在哪里。真的找不出了。刚刚想出来的这个检查的方法,其他三个选项还没有试。希望好心人能解答下我这个问题,谢谢了!!
程序代码:
/*    读入若干字符串,并按格式输出    */
#include <stdio.h>
#include <string.h>
#define ROW 10    /*    最大限制字符串的数目    */
#define LINE 100

int getns (char *, int);    /*    输入字符串的函数    */
void ascii (char **, int);    /*    按照ASCII顺序的函数    */
void length (char **, int);    /*    按长度递增顺序的函数    */
void first_length (char **, int);    /*    按手单词长度递增顺序的函数    */
int first_strlen (char *);    /*    比较首个单词长度的函数    */
void menu (void);    /*    输出菜单选项的函数    */
int main (void)
{
    char input[ROW][LINE];
    char *ptrinput[ROW];
    char choice;
    int row = 0;    /*    字符串的数目    */

    puts ("Please enter a series of sentence.");
    while (row < ROW && gets (input[row]))
    {
        if (*input[row] == EOF)
            break;
        ptrinput[row] = input[row];
        row++;
    }    /*    将字符串赋予指针    */
    menu ();
    while ((choice = getchar ()) != 'q')
    {
        if (choice == '\n')
            continue;
        switch (choice)
        {
            case 'a': 
            {
                int i;
                for (i = 0; i < row; i++)
                    puts (ptrinput[i]);
            }
            case 'b': ascii (ptrinput, row);
            case 'c': length (ptrinput, row);
            case 'd': first_length (ptrinput, row);
        }
        if (choice != 'a' && choice != 'b' && choice != 'c' && choice != 'd')
            puts ("Please enter a, b, c, d or q:");
        menu ();
    }

    return 0;
}

/*    按照ASCII顺序的函数    */
void ascii (char ** p, int i)
{
    int j, k, l;
    char *output[ROW];

    for (j = 0; j < i; j++)
    {
        l = 0;
        for (k = 0; k < i; k++)
        {
            if (j == k)
                continue;
            if (strcmp (p[j], p[k]) >= 0)
                l++;
        }
        output[l] = p[j];
    }
    for (l = 0; l < i; l++)
        puts (output[l]);
}

/*    按长度递增顺序的函数    */
void length (char ** p, int i)
{
    int j, k, l;
    char *output[ROW];

    for (j = 0; j < i; j++)
    {
        l = 0;
        for (k = 0; k < i; k++)
        {
            if (k == j)
                continue;
            if (strlen (p[j]) > strlen (p[k]))
                l++;
        }
        output[l] = p[j];
    }
    for (l = 0; l < i; l++)
        puts (output[l]);
}

/*    按手单词长度递增顺序的函数    */
void first_length (char ** p, int i)
{
    int j, k, l;
    char *output[ROW];

    for (j = 0; j < i; j++)
    {
        l = 0;
        for (k = 0; k < i; k++)
        {
            if (k == j)
                continue;
            if (first_strlen (p[j]) > first_strlen (p[k]))
                l++;
        }
        output[l] = p[l];
    }
    for (l = 0; l < i; l++)
        puts (output[l]);
}

/*    比较首个单词长度的函数    */
int first_strlen (char * p)
{
    int i = 0;

    while (p[i] >= 'a' && p[i] <= 'z' || p[i] >= 'A' || p[i] <= 'Z')
        i++;

    return i;
}

/*    输出菜单选项的函数    */
void menu (void)
{
    puts ("************************************************************************");
    puts ("Please choose what to do:");
    puts ("a. 输出初始字符列表                b. 按ASCII顺序输出字符串");
    puts ("c. 按长度递增顺序输出字符串        d. 按字符串中第一个单词长度输出字符串");
    puts ("q. Quit.");
    puts ("************************************************************************");
}


[ 本帖最后由 DarylL 于 2013-3-24 15:57 编辑 ]
搜索更多相关主题的帖子: C语言 
2013-03-24 11:02
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:2 
哪弄的代码  挺好看滴

DO IT YOURSELF !
2013-03-24 11:05
DarylL
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-12-6
收藏
得分:0 
回复 2楼 wp231957
我自己写的。。。
2013-03-24 11:06
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
整这么长代码,你先说一下有啥,是编译错误还是逻辑错误,大周末谁没事给你调这么长的代码呀

总有那身价贱的人给作业贴回复完整的代码
2013-03-24 11:07
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用DarylL在2013-3-24 11:06:16的发言:

我自己写的。。。
自己写的就慢慢调试呗

要学会调试代码  谁能一次就写对啊

DO IT YOURSELF !
2013-03-24 11:07
DarylL
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-12-6
收藏
得分:0 
调试了很多次了。但是凭我的能力已经找不出错误了所以才贴上来问的。
2013-03-24 11:09
DarylL
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-12-6
收藏
得分:0 
回复 4楼 embed_xuel
貌似是逻辑错误。。
2013-03-24 11:10
DarylL
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-12-6
收藏
得分:0 
以下是引用wp231957在2013-3-24 11:07:32的发言:

自己写的就慢慢调试呗

要学会调试代码  谁能一次就写对啊

调试了很多次了。但是凭我的能力已经找不出错误了所以才贴上来问的。
2013-03-24 11:10
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
以下是引用DarylL在2013-3-24 11:10:33的发言:

 
调试了很多次了。但是凭我的能力已经找不出错误了所以才贴上来问的。
你想实现什么功能
出现了什么错误
如果你有自己的分析意见,甚至也可以说一下

你们这些人呐,都去看看《提问的智慧》吧
老是丢一大段代码上来说求错误
我连你想干什么,业务都不知道
我跟你查个P啊

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-03-24 11:15
DarylL
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-12-6
收藏
得分:0 
回复 9楼 peach5460
谢谢你的提醒。我已经把药实现的功能和调试错误贴到1L了。如能能帮我解答的话,我很感激
2013-03-24 11:36
快速回复:麻烦各位帮我看下我写的这个C代码有什么错误,谢谢了。
数据加载中...
 
   



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

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