//
#include "stdafx.h"
int ChangeSixToTen(char source)
{
if(source >= 'a' && source <='f')
return (10+ source - 'a');
else if(source >= 'A' && source <= 'F')
return (10 + source - 'A');
else if(source >= '0' && source <= '9')
return (source - '0');
else
printf("Error Input!\n");
}
char ChangeTenToSix(int source)
{
if (source < 10)
return (source + '0');
else
return (source - 10 + 'A');
}
char NumAdd(char* Num1,char* Num2,char* result)
{
int len1 = strlen(Num1);
int len2 = strlen(Num2);
int lenresult = len1>len2?len1:len2;
int NumCarry =0,BeforeCarry =0;
int NumTemp =0;
result[lenresult] = 0;
for(int i = 1;i!=lenresult+1;++i)
{
if(len1 < i)
NumTemp =0;
else NumTemp = ChangeSixToTen(Num1[len1 - i]);
if(len2 < i)
NumTemp += 0;
else NumTemp += ChangeSixToTen(Num2[len2 - i]);
if (NumTemp >15)
{
NumTemp -= 16;
BeforeCarry = 1;
}
else
BeforeCarry = 0;
result[lenresult - i] = ChangeTenToSix(NumTemp + NumCarry);
NumCarry = BeforeCarry;
}
return ChangeTenToSix(NumCarry);
}
int main(int argc, char* argv[])
{
char Addend[100],Summand[100],Sum[100];
char strTemp[100];
char result;
do
{
puts("輸入加數:");
gets(Addend);
puts("輸入被加數:");
gets(Summand);
printf("結果:");
if((result = NumAdd(Addend,Summand,Sum)) != '0')
putchar(result);
printf("%s\n",Sum);
puts("繼續請按1,退出請按2");
gets(strTemp);
}while(strTemp[0] != '2');
return 0;
}
竟然比想象的難點 給分吧 大半夜的給妳寫代碼