字符串解析运用-将字符串分解为多个整数,求各整数之和(华为oj)

描述

输入内容是一个字符串,输出结果为一个字符串。
要求在输入的字符串中识别出多个整数单元,并且对各个整数单元求和运算,最终输出一个字符串,输出的字符串内容是对各个整数单元求和的结果。
两个整数单元之间以空格分隔,每个整数单元可能为正整数,也可能为负整数,负整数的负号在整数的最前面且与整数间不插入任何字符。在输入的字符串中只可能出现数字字符、正负号、小数点和空格。

知识点 字符串,循环,数组
运行时间限制 10 Sec
内存限制 128 MByte
输入

输入一个字符串,(长度小于100有输入者保证)

因输入的字符串都是标准十进制数,可能存在小数部分,在整数识别时需要舍弃小数部分;在运算过程中出现任何错误返回空字符串;

输出

各个整数单元之和的字符串

样例输入
654.12 -321
样例输出
333
 1 #include <iostream>
 2 #include <string>
 3 #include <cstdlib>
 4 
 5 #define M 101
 6 using namespace std;
 7 
 8 
 9 int main(){
10     char m[M], n[M];
11     long l1, l2, sum;
12     int count_m = 0, count_n =0;
13     scanf("%s %s", m, n);
14     //puts(m);
15     //puts(n);
16     if (strlen(m) == 1 && (*m == '.' || *m == '+' || *m == '-'))
17         return NULL;
18     if (strlen(n) == 1 && (*n == '.' || *n == '+' || *n == '-'))
19         return NULL;
20     for (int i = 1; i < strlen(m); i++){
21         while (m[i] == '+' || m[i] == '-')
22             return NULL;
23     }
24     for (int i = 1; i < strlen(n); i++){
25         while (n[i] == '+' || n[i] == '-')
26             return NULL;
27     }
28     for (int i = 0; i < strlen(m); i++){
29         if (m[i] == '.'){
30             count_m++;
31             if (count_m == 2)
32                 return NULL;
33         }    
34     }
35     for (int i = 0; i < strlen(n); i++){
36         if (n[i] == '.'){
37             count_n++;
38             if (count_n == 2)
39                 return NULL;
40         }
41     }
42     l1 = atol(m);
43     l2 = atol(n);
44     //cout << l1 << " " << l2 << endl;
45     sum = l1 + l2;
46     cout << sum << endl;
47 
48     system("pause");
49     return 0;
50 }
原文地址:https://www.cnblogs.com/luolizhi/p/5337932.html