简单题,但要考虑一些细节:
前导0不要,后导0不要,小数长度不一样时,有进位时,逆置处理输出
然后处理起来就比较麻烦了。
我的代码纯模拟,把小数点前后分开来处理,写的很繁杂,纯当纪念——可怜我的眼睛。
#include<string.h> #include<stdio.h> int i,la,lb,la1,lb1,la2,lb2,lc1,lc2,yi,temp; char a[410],b[410],a1[410],a2[410],b1[410],b2[410],c1[410],c2[410]; void nizhi1(){ int le=la1/2; char c; for(int i=0;i<le;i++){ c=a1[i];a1[i]=a1[la1-1-i];a1[la1-1-i]=c; } } void nizhi2(){ int le=la2/2; char c; for(int i=0;i<le;i++){ c=a2[i]; a2[i]=a2[la2-1-i]; a2[la2-1-i]=c; } } void nizhi3(){ int le=lb1/2; char c; for(int i=0;i<le;i++){ c=b1[i]; b1[i]=b1[lb1-1-i]; b1[lb1-1-i]=c; } } void nizhi4(){ int le=lb2/2; char c; for(int i=0;i<le;i++){ c=b2[i]; b2[i]=b2[lb2-1-i]; b2[lb2-1-i]=c; } } void nizhi5(){ int le=lc1/2; char c; for(int i=0;i<le;i++){ c=c1[i]; c1[i]=c1[lc1-1-i]; c1[lc1-1-i]=c; } } void nizhi6(){ int le=lc2/2; char c; for(int i=0;i<le;i++){ c=c2[i]; c2[i]=c2[lc2-1-i]; c2[lc2-1-i]=c; } } int main() { while(scanf("%s%s",a,b)!=EOF) { memset(a1,0,sizeof(a1)); memset(a2,0,sizeof(a2)); memset(b1,0,sizeof(b1)); memset(b2,0,sizeof(b2)); memset(c1,0,sizeof(c1)); memset(c2,0,sizeof(c2)); i=la=lb=la1=lb1=la2=lb2=lc1=lc2=yi=temp=0; la=strlen(a); lb=strlen(b); la1=la2=lb1=lb2=0; for(i=0;i<la;i++) { if(a[i]=='.'||a[i]=='