上次帮同学用Java Swing写了一个简易计算器,只能进行整型数字的简单加减乘除。今天复习课本又见识到了大整数的加减法。看了好久,注释都放在代码中了,简单易懂,分享给大家。
#include<stdio.h>
#include<string.h>
#include<conio.h>
//s数字字符长度最大20位
#define N 20
//加法进位标志
int addTag=0;
//减法借位标志
int subTag=0;
void beep()
{
//鸣铃,表示操作有误
printf("\a");
}
//两字符相减
char subChar(char ch1,char ch2)
{
char ch;
ch=ch1-ch2-subTag;
if(ch>0)
{
subTag=0;
//字符转为数字[0x30即为字符'0']
return ch+0x30;
}
else//不够减时
{
subTag=1;//产生借位
return ch+10+0x30;//借1当10
}
}
//两字符相加
char addChar(char ch1,char ch2)
{
char ch;
ch=(ch1-0x30+ch2-0x30)+addTag;
if(ch>=10)//逢10进1
{
addTag=1;//产生进位
return ch-10+0x30; //只留下个位
}
else
{
addTag=0;
return ch+0x30;
}
}
//去除结果中产生的多余的空格或无效0
//eg:10001-10000=00001,直接显示1即可
void leftTrim(char *str,char sign)
{
int i;
//找到第一个有效字符位置,其可能为字