题目粗心:

编写一个程序来计算A+B,其中A和B是依照“Galleon Sickle.Knut"的规范格局给出

算法思路:

应用构造体保留一个货币信息,用A,B,result别离代表输出的货币和A+B的值,在A+B的加法过程中,应用carry代表从低到高产生的进位,首先计算Knut的值,其后果为(A.Knut+B.Knut)%29,而其进位为(A.Knut+B.Knut)/29,而后计算Sickle的值,其后果为(A.Sickle+B.Sickle+carry)%17,其进位为(A.Sickle+B.Sickle+carry)/17,最初计算Galleon的值,其后果为A.Galleon+B.Galleon+carry,没有进位,最初将后果依照指定格局输入即可.

提交后果:

AC代码:
#include<cstdio>using namespace std; struct Currency{    int Galleon;    int Sickle;// 逢17进1     int Knut;// 逢29进1 };int main(){    Currency A,B,result;    scanf("%d.%d.%d %d.%d.%d",&A.Galleon,&A.Sickle,&A.Knut,&B.Galleon,&B.Sickle,&B.Knut);    int carry;//进位     result.Knut = (A.Knut+B.Knut)%29;    carry = (A.Knut+B.Knut)/29;    result.Sickle = (A.Sickle+B.Sickle+carry)%17;    carry = (A.Sickle+B.Sickle+carry)/17;    result.Galleon = A.Galleon+B.Galleon+carry;    printf("%d.%d.%d",result.Galleon,result.Sickle,result.Knut);    return 0;}