| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1546 人关注过本帖
标题:麻烦各位帮我看下我写的这个C代码有什么错误,谢谢了。
只看楼主 加入收藏
DarylL
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-12-6
收藏
得分:0 
回复 20楼 shmilyflf
是这样的。strlen1我本来的设想是计算每个字符串的长度,然后first_strlen我想计算每个字符串第一个单词的长度。貌似两个都没有实现我想要的功能。不知道该怎么改了。
2013-03-24 18:47
DarylL
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-12-6
收藏
得分:0 
回复 19楼 azzbcc
是这样的。strlen1我本来的设想是计算每个字符串的长度,然后first_strlen我想计算每个字符串第一个单词的长度。貌似两个都没有实现我想要的功能。不知道该怎么改了。
2013-03-24 19:14
DarylL
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-12-6
收藏
得分:0 
回复 19楼 azzbcc
就是,一个存放若干字符串的数组,怎么去计算每个字符串的长度?
2013-03-24 20:16
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
整体框架和我的“菜单程序”是一样的,附上,看对楼主有没有帮助
程序代码:
#include<stdlib.h>
#include<ctype.h>
#include<math.h>

void FindNum();
void Diamond();
int menu_select();

void main()
{
    for(;;)
    {
        switch(menu_select())
        {
        case 1:
            FindNum();
            break;
        case 2:
            Diamond();
            break;
        case 3:
            printf("Goodbye!\n");
            exit(0);
        }
    }
}
//  菜单选择操作
int menu_select()
{
    char s;
    int cn;
    printf("1.FindNum\n");
    printf("2.Diamond\n");
    printf("3.Goodbye!\n");
    printf("Input 1-3: ");
    do
    {
        s=getchar();
        cn=(int)s-48;
    } while(cn<0 || cn>3);
    return cn;
}

//  求正确的数字完成等式
//  答案:nun=6
void FindNum()
{
    int i;
    printf("要是下面的等式成立,应在__中填上哪个想同的数字?\n");
    printf("   3__*6237=__3*3564\n");
    printf("求解结果为:\n");
    for(i=1;1<10;i++)
        if((30+i)*6237==(10*i+3)*3564)
        {
            printf("number=%d\n",i);
            break;
        }
}
//编制打印菱形图案程序
void Diamond()
{
    int i,j,k;
    printf("打印菱形图案。\n");
    for(i=1;i<=4;i++)
    {
        for(j=1;j<=16-i;j++)
            printf(" ");
        for(k=1;k<=(2*i-1);k++)
            printf("*");
        printf("\n");
    }
    for(i=1;i<=3;i++)
    {
        for(j=1;j<=i+12;j++)
            printf(" ");
        for(k=1;k<=(7-2*i);k++)
            printf("*");
        printf("\n");
    }
}
图片附件: 游客没有浏览图片的权限,请 登录注册


三十年河东,三十年河西,莫欺少年穷!
2013-03-24 20:41
DarylL
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-12-6
收藏
得分:0 
回复 24楼 韶志
嗯,我现在需要解决的问题是,如何计算一个存有若干个字符串的数组,某个字符串的长度。其他的我已经测试过了,没有问题。
2013-03-24 20:54
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
回复 25楼 DarylL
  那个问题啊...   我对数组指针不大感冒  嘿嘿

三十年河东,三十年河西,莫欺少年穷!
2013-03-24 21:25
DarylL
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-12-6
收藏
得分:0 
回复 26楼 韶志
好吧。我是把break给忘了。。
2013-03-25 10:55
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:5 
回复 27楼 DarylL
汗...   细节往往也能决定一切

三十年河东,三十年河西,莫欺少年穷!
2013-03-25 11:00
DarylL
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-12-6
收藏
得分:0 
感谢各位的热情回复,我自己已经把问题全部解决了。附上解决了的代码:
程序代码:
/*    读入若干字符串,并按格式输出    */
#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;    /*    字符串的数目    */
    int i;

    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': 
            {
                for (i = 0; i < row; i++)
                    puts (ptrinput[i]);
                break;
            }
            case 'b': ascii (ptrinput, row); break;
            case 'c': length (ptrinput, row); break;
            case 'd': first_length (ptrinput, row); break;
            default: puts ("Please enter a, b, c, d or q:"); break;
        }
        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)
{
    char *output[ROW];
    int length[ROW];
    int j, k;
    int temp1;
    char *temp2;

    for (j = 0; j < i; j++)
    {
        length[j] = strlen (p[j]);
        output[j] = p[j];
    }
    for (j = 0; j < i; j++)
    {
        for (k = j + 1; k < i; k++)
        {
            if (length[j] > length[k])
            {
                temp1 = length[j];
                length[j] = length[k];
                length[k] = temp1;
                temp2 = output[j];
                output[j] = output[k];
                output[k] = temp2;
            }
        }
    }
    for (j = 0; j < i; j++)
        puts (output[j]);
}

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

    for (j = 0; j < i; j++)
    {
        length[j] = first_strlen (p[j]);
        output[j] = p[j];
    }
    for (j = 0; j < i; j++)
    {
        for (k = j + 1; k < i; k++)
        {
            if (length[j] > length[k])
            {
                temp1 = length[j];
                length[j] = length[k];
                length[k] = temp1;
                temp2 = output[j];
                output[j] = output[k];
                output[k] = temp2;
            }
        }
    }
    for (j = 0; j < i; j++)
        puts (output[j]);
}

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

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

    return i;
}

/*    输出菜单选项的函数    */
void menu (void)
{
    puts ("************************************************************************");
    puts ("Please choose what to do:");
    puts ("a. 输出初始字符列表                b. 按ASCII顺序输出字符串");
    puts ("c. 按长度递增顺序输出字符串        d. 按字符串中第一个单词长度输出字符串");
    puts ("q. Quit.");
    puts ("************************************************************************");    
}
2013-03-25 22:22
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
恭喜楼主


[fly]存在即是合理[/fly]
2013-03-25 22:34
快速回复:麻烦各位帮我看下我写的这个C代码有什么错误,谢谢了。
数据加载中...
 
   



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

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