当前位置:首页 > 实用技巧 >

c语言简单乘法计算器(c语言实现连续整数加减计算器)

来源:原点资讯(m.360kss.com)时间:2023-11-28 15:41:37作者:YD166手机阅读>>

乘法运算是数学中的一种简单运算,我们在小学的时候常常用竖式乘法的计算方法去计算乘法。对于一些比较大的数字时,通常采用计数器的方法去计算,然而对于一些普通的手机计算器来说,往往只能计算不超过16位数字的乘法。那如何能计算超大正整数的乘法?这是我们需要解决的问题。接下来,我将通过一个简单的例子去展示一种新的整数乘法运算方法。

对于326X36这个乘法例子来说,可以通过以下步骤进行计算。

第一步,对要相乘的数字进行“取反”,即326变成623,36变成63。

第二步,对位数较少的数进行补0使得两个数的位数相同,即63的位数比623的位数少1,所以需要在63后面补1位0,变成630,使得他们位数相同都是3。

第三步,对于n位的整数和m位的整数相乘,往往得到的结果的位数为n m位或n m-1位,所以326X36的结果为4位数或5位数,然后我们把结果的每一位数字都计算出来,就可以得到结果了。

326X36结果的第一位数(即个位)计算方法如下:

c语言简单乘法计算器,c语言实现连续整数加减计算器(1)

6X6=36,36除以10的余数为6,整数部分为3,所以326X36的个位为余数6,同时向十位进位,进位数C=3。

326X36结果的第二位数(即十位)的计算方法:

c语言简单乘法计算器,c语言实现连续整数加减计算器(2)

6X3 2X6 C=30 3=33,33除以10的余数为3,整数部分为3,所以326X36结果的十位为余数3,向百位的进位C=3。

326X36结果的第三位数(即百位)的计算方法:

c语言简单乘法计算器,c语言实现连续整数加减计算器(3)

6X0 2X3 3X6 C=24 3=27,27除以10的余数为7,整数部分为2,所以326X36结果的百位为余数7,进位C的值为整数部分2,即C=2。

326X36结果的第四位数(即千位)的计算方法:

c语言简单乘法计算器,c语言实现连续整数加减计算器(4)

2X0 3X3 C=9 2=11,11除以10的余数为1,整数部分为1,所以326X36结果的千位为余数1,进位C=1。

326X36结果的第五位数(即万位)的计算方法:

c语言简单乘法计算器,c语言实现连续整数加减计算器(5)

3X0 C=0 1=1,1除以10的余数为1,整数部分为0,所以326X36结果的万位为余数1,进位为0。

因为326X36结果的最大位数为5位数,所以只需要计算5步就可以得到结果。根据上面的5次计算,可以得到326X36的结果为11736。易验证该结果是正确的。

C语言程序:

#include<stdio.h>

#include<string.h>

void fanz(char *p) //将p中的元素取反,例如,p:1234变为p:4321

{

int i,length,n;

char s;

length=strlen(p); //计算p的长度

n=length/2;

for(i=0;i<n;i )

{

s=*(p i);

*(p i)=*(p length-i-1);

*(p length-i-1)=s;

}

}

void product(char *p,char *q)

{

int shu[1000];

//shu[]用来存放大整数p和q相乘结果的每一位数字。例如,p*q=12345,则shu[]={5,4,3,2,1}

int n,n1,n2,len,m,sum=0,x,y,cy=0,i,j,M;

n1=strlen(p); //计算p的长度

n2=strlen(q); //计算q的长度

//n=n1 n2;

//n值为p和q相乘结果能达到的最大位数,例如,x位的数乘以y位的数得到的结果的位数是x y-1位或x y位

fanz(p); //将p中的元素取反

fanz(q); //将q中的元素取反

if(n1>n2) //P的长度大于q的长度时

{

for(i=n2;i<n1;i )

*(q i)='0'; //在q后面加入字符'0',使得q与p长度相等

n=2*n1-1;

}

else n=n1 n2;

len=strlen(p);

for(i=0;i<n;i )

{

if(i<len)

{

for(j=0;j<=i;j )

{

x=(int)*(p i-j)-48;

y=(int)*(q j)-48;

sum=sum x*y;

}

m=(sum cy);

cy=(sum cy)/10;

sum=0;

shu[i]=m;

}

else

{

M=i-len;

for(j=i-len 1;j<len;j )

{

x=(int)*(p len-j M)-48;

y=(int)*(q j)-48;

sum=sum x*y;

}

if((i-len 1)==len)

shu[i]=cy;

m=(sum cy);

cy=(sum cy)/10;

sum=0;

shu[i]=m;

}

}

if(shu[n-1]!=0)

printf("%d",shu[n-1]);

for(i=n-2;i>=0;i--)

printf("%d",shu[i]);

}

int main()

{

char s1[500],s2[500];

printf("请输入不超过500位的大整数X:");

scanf("%s",s1);

printf("请输入不超过500位的大整数Y:");

scanf("%s",s2);

printf("X*Y=");

if(strlen(s1)<strlen(s2))

product(s2,s1);

else product(s1,s2);

printf("\n");

return 0;

}

,

栏目热文

c语言输入加减乘除四种算式(怎么用c语言计算器加减乘除)

c语言输入加减乘除四种算式(怎么用c语言计算器加减乘除)

Hello,小伙伴们大家好,今天开始进入C语言第三课时的学习。进入今天正式内容之前呢,先来看一下上次课程中的留下的一道练...

2023-11-28 16:18:38查看全文 >>

c语言模拟计算器可同时加减乘除(c语言计算器加减乘除思路)

c语言模拟计算器可同时加减乘除(c语言计算器加减乘除思路)

C语言实现一个简单计算器,进行加减乘除运算。如:输入简单的算式,如2 1,计算得到结果。分析(1)输入两个数值,符号为字...

2023-11-28 15:52:20查看全文 >>

c语言编写一个简单的加法计算器(怎么用c语言编写一个计算器)

c语言编写一个简单的加法计算器(怎么用c语言编写一个计算器)

实现加减乘除计算。实例# include <stdio.h>int main() { char operat...

2023-11-28 15:57:04查看全文 >>

c语言简单计算器加减乘除函数调用(c语言编写计算器加减乘除)

c语言简单计算器加减乘除函数调用(c语言编写计算器加减乘除)

加减乘除是常见的数学运算,C语言当然支持,不过,C语言中的运算符号与数学中的略有不同,请见下表。加法减法乘法除法求余数(...

2023-11-28 16:05:19查看全文 >>

最新最好看的关于鲨鱼的电影(公认好看的鲨鱼电影)

最新最好看的关于鲨鱼的电影(公认好看的鲨鱼电影)

和鲨鱼相关的电影,最著名的就是《大白鲨》。《大白鲨》海报该片由史蒂文·斯皮尔伯格执导,奠定了海洋霸主鲨鱼在惊悚片中的地位...

2023-11-28 15:48:41查看全文 >>

寒战2剧情详细介绍(寒战1剧情详细介绍)

寒战2剧情详细介绍(寒战1剧情详细介绍)

寒战2《寒战2》是《寒战》系列的第二部,由梁乐民、陆剑青执导的香港警匪片,郭富城、梁家辉、杨采妮、文咏珊领衔主演,周润发...

2023-11-28 16:02:14查看全文 >>

寒战2讲述什么东西(寒战2讲的什么意思)

寒战2讲述什么东西(寒战2讲的什么意思)

第二部开始,刘杰辉老婆女儿被绑架,而幕后BOSS的交换条件就是把李家俊释放出来。刘杰辉真的会因为家人就放?绝对不可能。幕...

2023-11-28 16:11:22查看全文 >>

如何看懂电影寒战2(寒战2到底讲啥)

如何看懂电影寒战2(寒战2到底讲啥)

寒战2已经上映了2年半,我决定再次复习这部电影,因为我发现这部电影仍然有很多看点。它的剧情紧凑,节奏明快,打破了以往警匪...

2023-11-28 16:07:38查看全文 >>

深度解析之寒战2(寒战2到底讲啥)

深度解析之寒战2(寒战2到底讲啥)

无间道作为港产片的一个巅峰亦是一个分水岭,无间道之后港片开始慢慢的走下坡路。更多的香港艺人,尤其是TVB的老艺人前往大陆...

2023-11-28 15:42:29查看全文 >>

寒战2深度解析(寒战2详细剧情解析)

寒战2深度解析(寒战2详细剧情解析)

《寒战》系列电影自《无间道》之后,一直缺乏出色的作品。然而,2012年的《寒战》汇集了梁家辉、郭富城、刘德华等三位影帝,...

2023-11-28 16:16:40查看全文 >>

文档排行