📄 subtract.cpp
字号:
#include <iostream.h>
#include <math.h>
#include <string.h>
#include <stdio.h>
int abigerb(char numa[],char numb[]) //numa>numb,返回1;numa=numb;numa<numb,返回0。
{
int along=strlen(numa);
int blong=strlen(numb);
int i=0;
if(along>blong) return 1;
if(along==blong)
{
while(i<along)
{
if(numa[i]>numb[i]) return 1;
else if(numa[i]<numb[i]) return 0;
else { i++; }
}
return 2;
}
return 0;
}
void subtract(char numa[],char numb[])
{
// cout<<abigerb(numa,numb)<<endl;
char result[20001];//多出一位用来存储正负号
char temp[20000];
int along=strlen(numa);
int blong=strlen(numb);
int carry=0;
int temp_result;
if(abigerb(numa,numb)==0) //将numa和numb交换,始终用较大的减去较小的
{
along=strlen(numb);
blong=strlen(numa);
strcpy(temp,numa);
strcpy(numa,numb);
strcpy(numb,temp);
result[0]='-'; //numa<numb,结果数组首位记录负号
}
else result[0]=' '; //记录空格
int tempalong=along; //along在循环过程中会有变化,但在输出结果时又要用到!!!!!!
// cout<<result[0]<<endl;
// cout<<"along"<<along<<endl;
// cout<<"blong"<<blong<<endl;
while(along)
{
if(blong>0)
{
if((numa[along-1]-carry)>=numb[blong-1])
{
temp_result=(numa[along-1]-48)-carry-(numb[blong-1]-48);
result[along]=temp_result+48;
carry=0;
along--;
blong--;
}
else
{
temp_result=(numa[along-1]-48)+10-(numb[blong-1]-48)-carry;
result[along]=temp_result+48;
carry=1;
along--;
blong--;
}
}
else
{
if((numa[along-1]-carry)>=48)
{
temp_result=(numa[along-1]-48)-carry;
result[along]=temp_result+48;
carry=0;
along--;
}
else
{
temp_result=(numa[along-1]-48)+10-carry;
result[along]=temp_result+48;
carry=1;
along--;
}
}
/* cout<<"temp_result"<<temp_result<<endl;
cout<<"carry"<<carry<<endl;
cout<<"along"<<along<<"result[along]"<<result[along]<<endl;*/
/* along--;
blong--;
if(blong<0) numb[blong]=48;*/
}
//消除无价值的零
int i=1;
int count=0; //计数,结果中无价值零的个数
while(result[i]=='0')
{
count++;
i++;
}
for(i=1;i<=tempalong-count;i++)
result[i]=result[count+i];
for(i=0;i<=tempalong-count;i++)
cout<<result[i];
}
void main()
{
char numa[20000],numb[20000];
char yunsuanfu;
cout<<endl<<"please write in A:";
cin>>numa;
cout<<endl<<"please write in B:";
cin>>numb;
cout<<endl<<"please write in yunsuanfu:";
cin>>yunsuanfu;
switch(yunsuanfu)
{
case '-': subtract(numa,numb); break;
default: break;
}
// cout<<abigerb(numa,numb)<<endl;;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -