<C语言经典100例>c31 大数相乘
来源:互联网 发布:mysql 排序后limit 编辑:程序博客网 时间:2024/06/05 06:15
/* 【程序31】 大数相乘* 题目:求出两个非常大的数的乘积,例如:123456789123456*123456789 * 程序分析:乘积非常大,int、long、long long 等数据类型都装不下这个数怎么办?采用数组方式求。 */#include <stdio.h>#include <string.h>//strlen() memset()#define SIZE 1000void mul_oper(const char num1[], const char num2[]);void output(int num[], int len);int main(int argc, char *argv[]){char num1[SIZE] = {};char num2[SIZE] = {};puts("Input number1:");scanf("%s", num1);fputs("Input number2:\n", stdout);scanf("%s", num2);printf("Result = ");mul_oper(num1, num2);return 0;}// 乘法运算void mul_oper(const char num1[], const char num2[]){unsigned int len1 = strlen(num1);unsigned int len2 = strlen(num2);int result_mul[len1+len2];memset(result_mul, 0, sizeof(result_mul));// 转换并相乘for (int i=0; i<len1; i++){for (int j=0; j<len2; j++){result_mul[i+j+1] += (num1[i]-'0') * (num2[j]-'0');}}// 进位for (int i=len1+len2-1; i>=0; i--){result_mul[i-1] += result_mul[i]/10;result_mul[i] %= 10;}output(result_mul, len1+len2);}// 输出void output(int result[], int len){int k, n = 0;while (result[n] == 0){n++;}for (k=n; k<len; k++){if ((len-k)%3 == 0 && k != n)// 倒数每隔3位输出一个逗号“,”printf(",");printf("%d", result[k]);}//forprintf("\n");}
结果:
阅读全文
0 0
- <C语言经典100例>c31 大数相乘
- C语言:大数相乘.
- 【C语言】大数相乘
- C语言大数相乘
- C语言大数相乘
- c语言的大数相乘 十分经典的代码
- 大数相乘(C语言)
- 大数相乘-C语言实现
- 大数相乘C语言代码
- c语言实现大数相乘
- 【C语言代码】大数相乘
- C语言 大数相乘法
- C语言 乘法 大数相乘
- C语言实现大数相乘
- C语言大数相乘A × B problem
- 大数相乘 +方法2(C语言)
- C语言大数相乘的问题
- C语言中的大数相乘问题
- 在线格式化ReactJS的代码
- 利用流式套接字实现文件传输
- 【LeetCode】 Find Minimum In Rotated Sorted Array(BinarySearch)
- Ubuntu Linux 16.04下安装node.js及supervisor、express
- C++类 备忘录
- <C语言经典100例>c31 大数相乘
- 进程保活方案
- [matlab]install Image Acquisition Toolbox Adaptors 利用matlab获取摄像头图像
- 人脸识别
- Kali Linux学习笔记·局域网断网攻击
- 如何使用Windows Server 2012配置群集任务
- 买书的贪婪
- hadoop dfs 保错.IllegalArgumentException: Wrong FS: hdfs://XXX:9000, expected: file:///
- Android资源汇总