當前位置:編程學習大全網 - 編程語言 - 高分!微機原理程序設計(十六進制數相加)

高分!微機原理程序設計(十六進制數相加)

// Console16位數相加.cpp : 定義控制臺應用程序的入口點。

//

#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;

}

竟然比想象的難點 給分吧 大半夜的給妳寫代碼

  • 上一篇:五月是北方旅遊的最佳時間四月是北方旅遊的最佳時間
  • 下一篇:新媒體專業主要學什麽內容?
  • copyright 2024編程學習大全網