首页 > 代码库 > (ACM_JD)题目1003:A+B
(ACM_JD)题目1003:A+B
此题不仅仅是A+B简单计算的一道题,需要进行字符和数字的灵活转换。
题目描述:
给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。
现在请计算A+B的结果,并以正常形式输出。
输入:
输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 < A,B < 10^9)。
输出:
请计算A+B的结果,并以正常形式输出,每组数据占一行。
样例输入:
-234,567,890 123,456,789
1,234 2,345,678
样例输出:
-111111101
2346912
分析:
//题目1003:A+B
/*解题算法: 把输入以字符串形式输入,然后先去掉第一个符号为‘-‘的, 同时用flag = 0,
*变化成 flag = 1来记录该字符串所表示的数为负数. 这样把字符统一处理为没有 ‘-‘的,
*根据题意,处理字符串, 得出字符串所表示的数字的位数, 用numC表示,然后按顺序读取字
*符,将字符转化成数字,然后用pow(10, numC - 1)得出, 同时用SumC来累加这个字符串的
*每个字符得出的数的结果.最后, 根据flag = 1为负数, 把SumC转换成-SumC,然后两个数的
*Sum分别相加,得出结果. 再用一个数组来储存这个结果,最后统一输出,这样做事为了符合
*题列的要求.
*/
代码及详细注释:
1 #include <iostream> 2 #include <cstring> 3 #include <cmath> 4 using namespace std; 5 6 7 int deal(char c[14]) 8 { 9 int SumC = 0;/*把传入的字符化成整形數,用SumC来表示.*/10 int cc = strlen(c);/*数组c[]的長度*/11 int flag1 = 0; /*标记变化,用来后面用到的判断正负用的*/12 int CC = cc;/*看下面的if, 首先, 如果有‘-‘的, 那么把整个字符串去掉的长度减1,因为负号不是数字*/13 14 if (c[0] == ‘-‘)/*如果是字符串第一是负号*/15 {16 CC -= 1; /*长度减1,也就是说把它当成正数处理, 比如 -432 长度为4, 处理后为 432, 长度为3*/17 flag1 = 1; /*长度减少后, 用flag记录该数是负数的,flag由0变为1*/18 }19 20 int numC = CC - CC / 4;/*用numC表示位数, 比如 234,567,890 有11个字符, 去掉逗号, 一共有 11 - 11/4 = 9个字符*/21 22 for (int i = 0; i < cc; i++)/*对整个字符串进行扫描, 此时包括了‘-‘,注意这里是小写的cc,即原字符串*/23 {24 if (c[i] >= 48 && c[i] <= 57) /*如果是ascll码这个范围的,即对应字符‘0‘到‘9‘*/25 {26 SumC += int(c[i] - 48) * pow(10, numC - 1); /*把传入的字符化成整形數,用SumC来表示.累加, 何为numC - 1,比如123,numC表示3位数,那么该数是10^2的, 所以用10^(numC - 1)次方 */27 28 numC--;//位数减129 } 30 }31 32 if (flag1 == 1) //如果有‘-‘,flag1 变成了1,那么把这个数按负数处理.33 {34 SumC *= -1; //变成 -SumC35 }36 return SumC;//返回处理结果37 }38 39 int main()40 {41 int zhu[100];//限制了测试组数42 int u = 0;//根据输入,测试u组43 char a[14];//因爲範圍是+-10^9,最多有14個字符44 char b[14];45 while (cin >> a >> b)46 {47 zhu[u] = deal(a) + deal(b);/*调用函数,传入数据处理,最后相加,得出结果, 存入数组中,为后面统一输出*/48 u++;49 }50 for (int y = 0; y < u; y++)51 {52 cout << zhu[y] << endl;//输入结束后, 统一输出答案53 }54 return 0; 55 }
运行结果:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。