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");
#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");
}
阅读全文
0 0
- C++多位整形数据相乘的代码
- 大数相乘的c代码
- 通过位运算获取某个整形数据的某些位
- 矩阵相乘的C代码实现
- C/C++ 64位整形
- c/c++ 64位整形
- c的整形转换和整形提升
- c语言的大数相乘 十分经典的代码
- 大数相乘C语言代码
- 【C语言代码】大数相乘
- 华为2012校园招聘上机题——大数相乘,两个超过100位的大数相乘C语言
- C语言中求整形数中每一位的数字
- 各整形的数据范围
- 怎么设置JSP代码中算数相乘以后的结果小数点只取后2位
- 整形数的转换(32位)
- printf打印64位的整形数
- c/c++ 的 整形编译
- 关于c语言整形数据表示范围
- 数据结构之线性表 -- 链表(总括)
- GUI2
- Solr配置停止词/排除词 stopwords(mmseg版)
- hdu4283(区间DP)
- 悲观锁乐观锁
- C++多位整形数据相乘的代码
- OutOfMemoryError系列(6): Out of swap space?
- #define PINT int*与typedef int *SINT的区别.
- Java后台框架篇--Spring中Bean的生命周期
- Java SE8 Lambda 基础入门---怎么写lambda表达式
- leetcode---combinations---dfs
- ASM常用命令
- 【BZOJ 1093】【ZJOI 2007】【最大半连通子图】【tarjan强连通分量】【拓扑排序dp】
- Java BufferedReader readLine方法i