题意如下:
给定两个以字符串形式表示的非负整数 num1
和 num2
,返回 num1
和 num2
的乘积,它们的乘积也表示为字符串形式。
注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。
示例 1:
输入: num1 = "2", num2 = "3" 输出: "6"
示例 2:
输入: num1 = "123", num2 = "456" 输出: "56088"
提示:
1 <= num1.length, num2.length <= 200
num1
和num2
只能由数字组成。num1
和num2
都不包含任何前导零,除了数字0本身。
代码如下:
#include <iostream>
#include <string.h>
using namespace std;
int my_atoi(char *a)//将字符串转化为数字
{int lenth=strlen(a);int ret=0,t=0;for(int i=0;i<lenth;i++){t=a[i]-'0';ret*=10;ret+=t; }return ret;
}
char* test(char *a,char *b)
{int r1=my_atoi(a),r2=my_atoi(b);cout<<"a=="<<r1<<" "<<"b=="<<r2<<endl;int s=r1*r2;int ss=s,t=0;char q[100];while(ss){q[t++]=(ss%10)+'0';//将结果的每一位数字转化成字符 ss/=10; }char p[t];for(int i=t-1,j=0;i>=0;i--,j++)//将字符串逆序回来 {p[i]=q[j];}return p; }
int main(){char a[1000],b[1000];cin>>a>>b;cout<<"结果是"<<test(a,b)<<endl;
}
注:
C语言和C++中都有atoi()和atof()将字符串中的数字转化成数字,这里不直接使用,而是自己写;
在将结果重新转化成字符串时,我用了2次循环,不知道还有没有更好的办法,望各位赐教。