C练习_大数(数字字符串)相乘
2018-02-23 16:07
337 查看
#include <stdio.h> #include <stdlib.h> #include <string.h> int mul(int a[],int b[], int res[]); int str_to_arr(char *str, int *arr); #define N 100 //定义输入数字的最大位数 int main(void) { int a ,b ,res[2*N]; char stra ,strb ; memset(a,0,N*sizeof(int)); memset(b,0,N*sizeof(int)); memset(res,0,2*N*sizeof(int)); scanf("%s",stra); scanf("%s",strb); str_to_arr(stra,a); str_to_arr(strb,b); int i; for(i=mul(a,b,res);i>=0;i--) { printf("%d",res[i]); } }
//数字字符串转数组 int str_to_arr(char *str, int *arr) { int i=0,len=0; while(str[i]!='\0' && i<N) { if (str[i]>='0' && str[i]<='9') i++; } len=i; for(;i>0;i--) { arr[i-1]=str[len-i]-'0'; } return len; }
//大数a和b相乘得到res,返回res的长度,res必须为空,否则会累加入原值 int mul(int a[],int b[], int res[]) { int i,j,m; int tmp; for(i=0;i<N;i++) { for(j=0;j<N;j++) { tmp = a[i] *b [j]; res[i+j] += (tmp%10); res[i+j+1] += (tmp/10); } for(m=0;m<2*N;m++) { if(res[m]>=10) { res[m+1] += (res[m]/10); res[m] %= 10; } } } for(i=2*N-1;i>=0;i--) if (res[i]!=0) return i; }
相关文章推荐
- 拼多多内推笔试二:数字字符串两个字符串相乘/大数相乘
- 基本功练习_2_17_2整形数字转字符串
- HDU 1063 字符串 大数相乘
- 练习2-3 编写函数htoi(s),把由16进制数字组成的字符串(包含可选的前缀0X或0x)转换成与之等价的整形值。字符串中允许包含的数字包括:0 ~ 9, a ~ f,A ~ F。
- 练习2-3 编写函数 htoi(s),把由十六进制数字组成的字符串(包含可选的前缀0x 或0X)转换为与之等价的整型值。字符串中允许包含的数字包括:0~9、a~f以及A~F。
- c#练习——统计字符串中的数子字符的个数以及所有的数字字符
- 小练习1:如何将一个纯数字字符串升序,得到一个新字符串
- 练习六:大数相乘
- 华为练习3 在字符串中找出连续最长的数字串
- 大数问题:用字符串解决大数相加和相乘。
- 面试题35:大数(字符串)相乘
- 菜鸟练习华为级考题——字符串过滤和统计高频数字出现频次
- 0725-字符串练习:汉字时间转为阿拉伯数字时间
- java 数据装箱及练习-对一个字符串中的数字进行排序
- 练习-字符串转数字
- 字符串表示 大数相乘
- [置顶] 大数字符串形式相加和相乘
- 大数问题:用字符串解决大数相加和相乘
- jquery练习1 字符串分割求数字和
- Multiply Strings 两个字符串代表数字相乘@LeetCode