0、难点
- swap(a,b)函数
- 进位与借位的实现方法
1、题目
2、代码
#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
int a,b,c,m,n,t,x,y,z;
scanf("%d.%d.%d %d.%d.%d",&a,&b,&c,&m,&n,&t);
// 应付 带的钱
if(a>m || (a==m && b>n) || (a==m && b==n &&c>t)){ //要付的钱比带的钱多
printf("-");
}else{
swap(a,m);swap(b,n);swap(c,t); //将将多的放在前面,方便前后相减
//则有一下情况
// 3.x.x 2.x.x 最高位大于左边
// 3.2.x 3.1.x 最高位相等,但中位更大
// 3.2.1 3.2.0 最高位相等,中位相等,最低位更大
// 3.2.1 3.2.1 完全相等
}
z=c>=t?c-t:c+29-t; //末尾相减,如果不够借位+29
b=c>=t?b:b-1; //若末尾小减大则必借了位,这里中位则-1
y=b>=n?b-n:b+17-n; //中位相减,如果不够借位+17
x=b>=n?a-m:a-1-m; // 因为swap交换了,所以最高位直接相减即可,但是可能有借位,所以判断一下中位大小并-1
printf("%d.%d.%d",x,y,z);
return 0;
}