C++多位整形数据相乘的代码

来源:互联网 发布:网络信用卡有哪些 编辑:程序博客网 时间:2024/06/05 15:12
#include<iostream>
#include<string.h>
void mutilpy(char *str,char *str1){//返回一个指向数组的指针
//std::cout<<strlen(str);测试是否可以读取到有多少个字符
int *sum = (int *)malloc(sizeof(int)*(strlen(str) + strlen(str1)));//为sum开辟内存空间
memset(sum, 0, sizeof(int)*(strlen(str) + strlen(str1)));//对创建的数组进行赋值
//下面这个是将相乘的数据整合到一个数组里面
for (int i = 0; i < strlen(str);i++){
for (int j = 0; j < strlen(str1); j++){
sum[i + j + 1] += (str[i]-'0') * (str1[j]-'0');//第一个位置空出来,作为预留的位置,减0是为了让数字和int类型相对应
}
}
for (int i = strlen(str) + strlen(str1)-1; i >0; i--){
if (sum[i] >= 10){//先判断是否符合条件
sum[i - 1] += sum[i] / 10;//先向前进位
sum[i] %= 10;
}
}
int tmp = strlen(str) + strlen(str1) - 1;
while (sum[tmp] == 0){
tmp--;//去掉后面为0的数
}
for (int i = 0; i <= tmp; i++){
if (i == 0 && sum[i] == 0){//第一个为0的情况
continue;
}
std::cout << sum[i];//输出结果
}
std::cout << std::endl;//打印换行
}
void main(){
char str[105] = { 0 };//定义一个100以内的字符数组
char str1[105] = { 0 };
std::cout << "请输入两个正整数,你将得到这两个整数的乘积(两个数的长度控制在0-100之间)"<<std::endl;
std::cin >> str >> str1;//输入一个整数的值
mutilpy(str, str1);//调用大数据乘法函数
//std::cout << str << str1 << std::endl;检测输入是否正确
system("pause");

}


原创粉丝点击