地址:http://acm.hdu.edu.cn/showproblem.php?pid=1753
题意:中文。。。高精度正小数加法。
mark:高精度加法,如果把整数部分和小数部分分开搞,比较麻烦。定义了一个struct,数组存数字,dec存的是这个数字里末尾的多少位是小数部分的。两个小数相加,先对齐小数位(位数少的在后面补0)然后当整数加法搞!wa了一次。用宏要注意!41行和42行,如果没有加{}的话,前面的if只管一句!
代码:
1 # include <stdio.h> 2 # include <string.h> 3 4 5 #define ExPand(a,b) for(i = 0 ; i < b ; i++) strcat(a->num,"0") ; a->dec+=b 6 7 8 typedef struct Real{ 9 char num[1000] ; 10 int dec ; 11 }Real ; 12 13 14 Real r1, r2, r3 ; 15 char s1[1000], s2[1000], ans[1000] ; 16 17 18 int max(int a, int b){return a>b?a:b;} 19 20 21 void add(char a[], char b[], char c[]) 22 { 23 int aa, bb, len1 = strlen(a), len2 = strlen(b), len = max(len1, len2) ; 24 int i, j, k, cc = 0 ; 25 c[len+1] = '