⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sy1.cpp

📁 用C语言实现的乘法器
💻 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 + -