加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数a*b

发布时间:2020-12-14 02:42:15 所属栏目:大数据 来源:网络整理
导读:两个大数相乘要考虑: 1:两个数相乘结果最多多少位.2:要错位的相加 。 #include stdio.h #include stdlib.h #includestring.h #includemath.h int main() { ? ? char a[100000],b[100000];//定义输入的数; ? ? while(1) ? ? { ? ? int i,j,q,w,e=0,c[100000

两个大数相乘要考虑:1:两个数相乘结果最多多少位.2:要错位的相加

#include <stdio.h> #include <stdlib.h> #include<string.h> #include<math.h> int main() { ? ? char a[100000],b[100000];//定义输入的数; ? ? while(1) ? ? { ? ? int i,j,q,w,e=0,c[100000]={0},d[100000]={0},f[100000]={0}; ? ? scanf("%s %s",a,b);// 输入两个大数,都是以字符的形式输进去的。 ? ? q=strlen(a); ? ? w=strlen(b); ? ? for(i=0;i<q;i++) ? ? { ? ? ? ?c[i]=a[q-i-1]-'0'; ? ? } ? ? ?for(i=0;i<w;i++) ? ? { ? ? ? ?d[i]=b[w-i-1]-'0';//将两个数的字符都转化成数组的形式,因为字符不能乘。 ? ? } ? ? for(j=0;j<q;j++)//j表示乘数的第几位与另一个数相乘。 ? ? { ? ? ? ? for(i=0;i<(q+w);i++) ? ? ? ?{ ? ? ? ? f[i+j]=c[j]*d[i]+f[i+j];//表示乘数的一位与另一个数相乘记录下来,并实现错位相加。 ? ? ? ? if(f[i]>=10) ? ? ? ? { ? ? ? ? ? ? f[i+1]=f[i+1]+f[i]/10;//进位。 ? ? ? ? ? ? f[i]=f[i]%10; ? ? ? ? } ? ? ? ?} ? ? } ? ? for(j=q+w;j>=0;j--) ? ? { ? ? ? ? if(f[j]!=0)//判断最高位判断是否为0 ? ? ? ? { ? ? ? ? ? ? e++; ? ? ? ? ? ? for(i=j;i>=0;i--) ? ? ? ? ? ? ? ? printf("%d",f[i]); ? ? ? ? ? ? ? ? break; ? ? ? ? } ? ? } ? ? if(e==0)//排除0000*0000 ? ? ? ? printf("0"); ? ? printf("n"); ? ? } ? ? return 0; }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读