描述:
求2个浮点数相加的和 题目中输入输出中出现浮点数都有如下的形式: P1P2…Pi.Q1Q2…Qj 对于整数部分,P1P2…Pi是一个非负整数 对于小数部分,Qj不等于0
输入描述:
对于每组案例,每组测试数据占2行,分别是两个加数。
输出描述:
每组案例是n行,每组测试数据有一行输出是相应的和。 输出保证一定是一个小数部分不为0的浮点数
示例1
输入:
0.111111111111111111111111111111
0.111111111111111111111111111111输出:
0.222222222222222222222222222222
知识点: 字符串
AC代码:
#include <stdio.h>
#include <string.h>#define MAX 100void fenli(char n[], char nint[], char ndec[]) {int i;int j = 0, k = 0;for(i = 0; i < strlen(n); i ++) {if(n[i] == '.') {i ++;break;}nint[j ++] = n[i];}nint[j] = '\0';for( ; i < strlen(n); i ++) {ndec[k ++] = n[i];}ndec[k] = '\0';
}int main() {char a[MAX], b[MAX];char aint[MAX], adec[MAX], bint[MAX], bdec[100];while(scanf("%s%s", a,b) != EOF) {fenli(a, aint, adec);fenli(b, bint, bdec);// 扩充小数int adec_len = strlen(adec), bdec_len = strlen(bdec);int dec_len;if(adec_len > bdec_len) {for(int i = bdec_len; i < adec_len; i ++) {bdec[i] = '0';}dec_len = adec_len;}else if(adec_len < bdec_len){for(int i = adec_len; i < bdec_len; i ++) {adec[i] = '0';}dec_len = bdec_len;}else dec_len = adec_len;// 计算小数int dec_sum[MAX] = {0};int jw = 0;for(int i = dec_len - 1; i >= 0; i --) {dec_sum[i] = (adec[i] - '0' + bdec[i] - '0' + jw) % 10;jw = (adec[i] - '0' + bdec[i] - '0' + jw) / 10;}// 扩充整数int aint_len = strlen(aint), bint_len = strlen(bint);int cha, int_len;if(aint_len > bint_len) {cha = aint_len - bint_len;for(int i = bint_len - 1; i >= 0; i --)bint[i + cha] = bint[i];for(int i = 0; i < cha; i ++)bint[i] = '0';int_len = aint_len;}else if(aint_len < bint_len){cha = bint_len - aint_len;for(int i = aint_len - 1; i >= 0; i --)aint[i + cha] = aint[i];for(int i = 0; i < cha; i ++)aint[i] = '0';int_len = bint_len;}else int_len = aint_len;// 计算整数int int_sum[MAX] = {0};int zsjw = jw;for(int i = int_len - 1; i >= 0; i --) {int_sum[i] = (aint[i] - '0' + bint[i] - '0' + zsjw) % 10;zsjw = (aint[i] - '0' + bint[i] - '0' + zsjw) / 10;}//打印if(zsjw)printf("%d", zsjw);for(int i = 0; i < int_len; i ++)printf("%d", int_sum[i]);printf(".");for(int i = 0; i < dec_len; i ++)printf("%d", dec_sum[i]);}return 0;
}