zuoside__lord
跃I.0
2016-12-28 09:55
采纳率: 52.2%
浏览 1.9k
已采纳

输入字符串中数字之和,C语言

题目如下:

这个题我不太会,明明是字符串怎么变成数字还可以相加,,而且这些字符串里数字一个数一个数是怎么处理,用桶排么?

题目描述
这次呢,阿丢要你将字符串中的数字之和求出来。

不用注意前导0,也不需要用大数加法

输入
输入有多组,每行一个字符串

输出
输出字符串中的数字之和

样例输入
sjflas1234lafjdsl3532sldfjsl3lskadjfl90
12skadfj325ksdfj098
sdfk14lkjlda00akldsfj33
sfkasjfasjldflasjdflsdfs
样例输出
Case #1:
sum = 4859
Case #2:
sum = 435
Case #3:
sum = 47
Case #4:
sum = 0

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • leilba
    林深 2016-12-29 01:05
    已采纳

    以第一个case为例子:

     #include "stdio.h"
    #include "string.h"
    #include "stdio.h"
    
    
    int main()
    {
    
        char input[] = "sjflas1234lafjdsl3532sldfjsl3lskadjfl90";
    
        int result = 0;
    
    
        int tempNumber = 0;
    
        for (int i = 0; i < strlen(input) ; i ++)
        {
    
            if (input[i] >='0' && input[i] <= '9' ) {
                tempNumber *= 10;
                tempNumber += input[i]-'0';
            } else {
                result += tempNumber;
                tempNumber = 0;
            }
    
        }
    
        result += tempNumber;
    
        printf("%d\n",result);
    
        return 0;
    }
    
    
    点赞 评论
  • leilba
    林深 2016-12-28 10:15

    思路是:sjflas1234lafjdsl3532sldfjsl3lskadjfl90 -> sjflas 1234 lafjdsl 3532 sldfjsl 3 lskadjfl 90 -> 1234 + 3532 + 3 + 90 = 4859

    所以,你首选需要将字符串进行分割,也就是划分出 数字和字母,之后提取出字母进行求和

    点赞 评论
  • l769255844
    艾尔森 2016-12-28 10:18

    遍历整个字符串 可以用一个int来记录目前正在处理的数 如果是数字就把正在处理的数X10后加上(例如到第一个1就把0X10+1,再往后遍历2就把1X10+2 )
    如果判断不是数字就把目前处理的数加到总结果上

    点赞 评论

相关推荐