如输入“123.4ab56 33.2”,输出为212.6,即123.4+56+33.2的结果
1条回答 默认 最新
关注 #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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥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 微信的店铺小程序如何修改背景图