📄 sy1.cpp
字号:
// sy1.cpp : Defines the entry point for the console application.
//
//#include "stdafx.h"
#include <cstdio>
#include <iostream>
#include <string>
using namespace std;
string mul(string op,char Sbit)
{string result="";//用来存储结果
string::size_type N;
int i,Cbit=0,digital_op,digital_Sbit,digital_temp;//i用来控制循环,c用来记录进位位
char temp;
op="0"+op;
N=op.length();
for (i=N-1;i>=0;i--)
{digital_op=op[i]-'0';
digital_Sbit=Sbit-'0';
digital_temp=(digital_op*digital_Sbit+Cbit)%10;
Cbit=(digital_op*digital_Sbit+Cbit)/10;
temp=digital_temp+'0';
result=temp+result;
}
// if(result[0]=='0')
// result=result.substr(1,result.length()-1);
return result;
}
string add(string op1,string op2)
{string result="";
string::size_type length_op1=op1.length(),length_op2=op2.length();
int i,j,max,digital_op1,digital_op2,digital_temp,Cbit=0;
char temp;
if(length_op1>length_op2)//为了计算的方便,这一个过程是对阶过程,为的是使两个字符串的长度相同
{for(i=0;i<length_op1-length_op2;i++)op2='0'+op2;max=length_op1;}
else if(length_op1<length_op2)
{for(i=0;i<length_op2-length_op1;i++)op1='0'+op1;max=length_op2;}
else max=length_op1;
op1='0'+op1;
op2='0'+op2;
for(j=max;j>=0;j--)//开始计算
{digital_op1=op1[j]-'0';
digital_op2=op2[j]-'0';
digital_temp=(digital_op1+digital_op2+Cbit)%10;
Cbit=(digital_op1+digital_op2+Cbit)/10;
temp=digital_temp+'0';
result=temp+result;
}
//if(result[0]=='0')result=result.substr(1,result.length()-1);
return result;
}
main()
{string op1,op2,temp,result="";
string::size_type N;
int i,j,a,b,c,d,point_count=0;
cout<<"请输入第一个操作数:"<<endl;
cin>>op1;
cout<<"请输入第二个操作数:"<<endl;
cin>>op2;
a=op1.find(".");
b=op2.find(".");
c=op1.length();
d=op2.length();
if(op1.find(".")!=string::npos)
{op1=op1.substr(0,op1.find("."))+op1.substr(op1.find(".")+1,op1.length()-op1.find("."));
point_count=point_count+c-a-1;
}
if(op2.find(".")!=string::npos)
{op2=op2.substr(0,op2.find("."))+op2.substr(op2.find(".")+1,op2.length()-op2.find("."));
point_count=point_count+d-b-1;
}
N=op2.length()-1;
i=N;
while(i>=0)
{temp=mul(op1,op2[i]);
for(j=N-i;j>0;j--)temp=temp+'0';
result=add(result,temp);
i--;
}
if(point_count!=0)
result=result.substr(0,result.length()-point_count)+'.'+result.substr(result.length()-point_count,point_count);
while(result[0]=='0')
result=result.substr(1,result.length()-1);
if(result[0]=='.')
result='0'+result;
cout<<"结果如下:"<<endl<<result<<endl;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -