| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1015 人关注过本帖
标题:求助!!新手帮看一下代码,看看哪里有问题。。
只看楼主 加入收藏
fire小宇宙
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-7-11
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:19 
求助!!新手帮看一下代码,看看哪里有问题。。
实现函数,传入字符串,将字符串中的数字提取出来,求数字的和。
 传入:"abc123def45gh678"
 返回:846(123+45+678):
代码:
#include <stdio.h>
int sumOfNumbersInString(const char * str);
int main(int argc, const char * argv[])
{
    char a[100];
    fgets(a, sizeof(a), stdin);
    printf("%d", sumOfNumbersInString(a));
    printf("\n");
   
}

int sumOfNumbersInString(const char * str)
{
    int sum = 0;
    int i = 0, j = 0;
    for (; str[i] != 0; i++)
    {
        int m = 0;
        if (str[i] >= '0' && str[i] <= '9')
        {
            for (; str[j] != 0; j++)

            {
                if (str[i+j] < '0' && str[i+j] > '9' )
                {
                    for (int k = i; k < i+j; k++)
                    {
                        int n = str[k] - '0';
                        m = m*10 + n;
                    }
                    break;
                }
            }
        }
        i = j;

        sum += m;
    }
    return sum;
}
搜索更多相关主题的帖子: include 字符串 
2015-07-11 19:40
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
有什么提示?
2015-07-11 20:48
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
把你提取数字的思路说一下

一片落叶掉进了回忆的流年。
2015-07-12 00:12
yajuie
Rank: 2
等 级:论坛游民
帖 子:10
专家分:15
注 册:2015-6-21
收藏
得分:0 
61          a
62          b
63          c
64          d
65          e
66          f
没记错的话ACSLL表是这样吧!
str[j]
const char * str
for (; str[i] != 0; i++)
其实我也是菜鸟,不过你这样的定义。能不能取出纸来我表示怀疑?

for (; str[i] != 0; i++)
反正我在这一句碰到了一个死循环
2015-07-12 03:14
yajuie
Rank: 2
等 级:论坛游民
帖 子:10
专家分:15
注 册:2015-6-21
收藏
得分:0 
#include <stdio.h>
int sumOfNumbersInString(const char * str);
int main(int argc, const char * argv[])
{
    char a[100];
    fgets(a, sizeof(a), stdin);
    printf("%d", sumOfNumbersInString(a));
    printf("\n");
   
}

int sumOfNumbersInString(const char * str)
{
    printf("第一个测试点\n");
    int sum = 0;
    int i = 0, j = 0;
    for (; str[i] != 0; i++)
    {
        printf("第2个测试点\n");
        int m = 0;
        if (str[i] >= '0' && str[i] <= '9')
        {
            for (; str[j] != 0; j++)
            {
                printf("第3个测试点\n");
                if (str[i+j] < '0' && str[i+j] > '9' )
                {
                    for (int k = i; k < i+j; k++)
                    {
                        printf("第4个测试点\n");
                        int n = str[k] - '0';
                        m = m*10 + n;
                    }
                    break;
                }
            }
        }
        i = j;

        sum += m;
    }
    return sum;
}




手机上网。是实在不好调…试,不过基本可以确认是在第二个测试点,继续循环,而且第三个点第四个点都进不去。好好查查这一段。
2015-07-12 03:17
T_MACC
Rank: 4
等 级:业余侠客
威 望:8
帖 子:99
专家分:211
注 册:2015-4-14
收藏
得分:0 
就是   问下   您数字怎么搞出来的    有点小疑问
2015-07-12 12:50
fire小宇宙
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-7-11
收藏
得分:0 
回复 2楼 tlliqi
不好意思,周末有点忙。
思路是先找第一个数字,然后再找到不是数字的地方,把这几个字符提出来处理。
但是 if (str[i+j] < '0' && str[i+j] > '9' )
这个条件就是进不去不知为何?
2015-07-12 17:27
fire小宇宙
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-7-11
收藏
得分:0 
其实这个题,又简单的方法,我就是想看一下我的这个思路哪儿有问题。
2015-07-12 17:28
fire小宇宙
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-7-11
收藏
得分:0 
回复 5楼 yajuie
我就是在 if (str[i+j] < '0' && str[i+j] > '9' )
这个条件进不去,不知为何?
2015-07-12 17:30
fire小宇宙
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-7-11
收藏
得分:0 
回复 4楼 yajuie
for (; str[i] != 0; i++)
这儿不会吧,就是遍历数组,直到最后‘\0’。
2015-07-12 17:31
快速回复:求助!!新手帮看一下代码,看看哪里有问题。。
数据加载中...
 
   



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

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