Epic_Ore 2021-10-19 14:47 采纳率: 42.9%
浏览 83
已结题

编写一个程序,输入一个字符串,从字符串中提取有效的数字,输出它们的总和。

如输入“123.4ab56 33.2”,输出为212.6,即123.4+56+33.2的结果

  • 写回答

1条回答 默认 最新

  • 叫我小唐就好了 Java领域新星创作者 2021-10-19 15:09
    关注

    img

    
    
    #include <iostream>
    #include <string>
    #include <iomanip>
    using namespace std;
     
    double function1(int b1, int b2, string s);   //计算整数
    double function2(int b1, int b2, string s);   //计算小数
     
    int main()
    {
        int i, j, b1, b2;
        double sum = 0;
        string s;
     
        cout << "请输入一个字符串:";
        getline(cin, s);
        int len = s.length();   //获取输入的字符串的长度,定义一个数组来存放各个数字
     
        for (i = 0; i < len; ++i)
        {
            if ((s[i] >= 48)&(s[i] <= 57))   //无小数点
            {
                b1 = i;
     
                for (j = b1; j < len; ++j)
                {
                    if ((s[j] >= 48)&(s[j] <= 57)) b2 = j;
                    else break;
                }
     
                sum = sum + function1(b1, b2, s);
                
                i = b2;   //更新
            }
     
            if (s[i] == 46)  //有小数点
            {
                b1 = i + 1;
     
                for (j = b1; j < len; ++j)
                {
                    if ((s[j] >= 48)&(s[j] <= 57)) b2 = j;
                    else break;
                }
     
                sum = sum + function2(b1, b2, s);
                
                i = b2;   //更新
            }
        }
     
        cout << endl << "字符串中有效的数字的总和为:" << sum << endl <<endl;
     
        system("pause");
        return 0;
    }
     
    double function1(int b1, int b2, string s)   //计算整数
    {
        double sum = 0;
     
        for (int i = b1; i <= b2; ++i) sum = sum * 10 + (s[i] - '0');
        
        return sum;
    }
     
    double function2(int b1, int b2, string s)   //计算小数
    {
        double sum = 0;
     
        for (int i = b1; i <= b2; ++i) sum = sum / 10 + (s[i] - '0');
     
        return sum / 10;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月27日
  • 已采纳回答 10月19日
  • 创建了问题 10月19日

悬赏问题

  • ¥15 Windows Script Host 无法找到脚本文件"C:\ProgramData\Player800\Cotrl.vbs”
  • ¥15 matlab自定义损失函数
  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图