两个大数的加、减、乘、除、取余

合集下载

大数的四则运算

大数的四则运算

进位规则:当两个数的和超过10时,需要进位 进位方法:将超过10的部分加到下一位
进位示例:12+34=46,其中2+4=6,超过10,需要将6的个位加到下一位
进位注意事项:进位时,需要注意位数的变化,避免错误
减法运算的基本原理 减法运算的注意事项
位数不同时的减法方法 减法运算的应用实例
相同位数的大 数减法,首先 将两个数对齐, 从低位开始相
余数定义:在除法运算中,被除数不能被除数整除的部分
余数性质:余数小于除数
余数应用:在计算中,余数可以用来判断除法运算的结果是否正确
余数处理方法:在计算中,可以通过余数来判断是否需要进行下一次除法运算, 或者进行其他处理。
仔细阅读题目,理解题意
认真检查计算过程,避免 漏算、错算
使用计算器或计算机进行 辅助计算,提高准确性
科学计数法:用E或e表示乘以10的幂次 指数表示法:用指数表示大数的大小 符号表示法:用符号表示大数的正负 组合表示法:用组合表示大数的位数和位数之间的关系
大数是指位数较多的数,通常超过计算机能够直接表示的范围
大数的位数通常用科学计数法表示,如10^100
大数的位数可以通过计算得到,例如10^100的位数为101 大数的位数也可以根据实际情况进行估计,例如10^100的位数大约为 100
加法原理:将两个数的每一位 相加,得到新的数
进位处理:当某一位相加结果 大于10时,需要进位
结果表示:将每一位相加的结 果和进位结果组合成新的数
示例:*** + *** = ***
加法法则:相同位数相加,从低位到高位依次相加 进位处理:当低位相加结果大于等于10时,需要进位 结果表示:将进位结果加到高位,得到最终结果 示例:*** + *** = ***

加减乘除运算公式

加减乘除运算公式

加减乘除运算公式在数学中,加减乘除是最基本的四则运算操作。

它们是数学运算中最常用的方法之一,也是我们日常生活中使用最频繁的计算方式。

下面,我们将详细介绍加减乘除运算公式及其应用。

一、加法运算公式加法是将两个或多个数值相加,得到它们的和。

在数学中,加法运算有以下基本公式:1.1 两个整数相加当我们需要计算两个整数的和时,可以使用以下公式:a +b = c其中,a和b是要相加的整数,c是它们的和。

例如,5 + 3 = 8。

1.2 两个小数相加如果我们要计算两个小数的和,可以使用以下公式:a +b = c其中,a和b是要相加的小数,c是它们的和。

例如,2.5 + 1.3 = 3.8。

1.3 多个数相加当我们需要计算多个数的和时,可以使用以下公式:a +b +c + ... = d其中,a、b、c等是要相加的数,d是它们的和。

例如,2 + 3 + 4 +5 = 14。

二、减法运算公式减法是从一个数中减去另一个数,得到差值。

在数学中,减法运算有以下基本公式:2.1 两个整数相减当我们需要计算两个整数的差时,可以使用以下公式:a -b = c其中,a是被减数,b是减数,c是它们的差。

例如,8 - 3 = 5。

2.2 两个小数相减如果我们要计算两个小数的差,可以使用以下公式:a -b = c其中,a是被减数,b是减数,c是它们的差。

例如,3.5 - 1.2 = 2.3。

2.3 多个数相减当我们需要计算多个数的差时,可以使用以下公式:a -b -c - ... = d其中,a、b、c等是要相减的数,d是它们的差。

例如,10 - 3 - 2 - 1 = 4。

三、乘法运算公式乘法是将两个数相乘,得到它们的积。

在数学中,乘法运算有以下基本公式:3.1 两个整数相乘当我们需要计算两个整数的积时,可以使用以下公式:a ×b = c其中,a和b是要相乘的整数,c是它们的积。

例如,5 × 3 = 15。

3.2 两个小数相乘如果我们要计算两个小数的积,可以使用以下公式:a ×b = c其中,a和b是要相乘的小数,c是它们的积。

大数的知识点总结

大数的知识点总结

大数的知识点总结一、大数的概念大数是指数值非常大的数,它的大小远远超出了常规的数值范围。

具体来说,大数通常指的是超过计算机所能够表示的范围的数值,也就是超过了计算机的存储容量。

在实际生活和科学研究中,大数经常会出现在物理、化学、天文、地质、经济学等领域中,因此了解大数的概念和处理方法对于解决实际问题至关重要。

二、大数的表示方法在日常生活中,我们通常使用十进制表示法来表示和处理数值。

十进制表示法是一种位置计数法,通过使用数字0-9和位权来表示任意数值。

例如,数值123456789就是由这些数字和其对应的位权组成的。

然而,当涉及到非常大的数值时,十进制表示法可能不够方便和高效。

因此,需要使用其他表示方法来处理大数。

1. 科学计数法科学计数法是一种用于表示大数和小数的方法。

它将数值表示成一个数字(大于等于1且小于10)与10的乘方的乘积的形式。

例如,数值123456789可以用科学计数法表示为1.23456789×10^8。

这种表示方法可以方便地表示和处理大数,而且对于科学计算和工程计算来说也非常方便。

2. 字符串表示法当涉及到超出计算机表示范围的大数时,一种常用的表示方法是使用字符串来表示。

在这种方法中,将大数的每一位数字用字符串的形式存储起来,然后通过字符串的操作来进行数值的计算和处理。

这种方法虽然效率较低,但对于超出计算机表示范围的大数来说是一种有效的处理方法。

三、大数的运算规则在处理大数的过程中,涉及到大数的加减乘除等运算。

对于大数的运算,需要遵循一定的规则和原则,以确保计算结果的准确性和有效性。

以下是关于大数运算的一些基本规则:1. 加法规则:对于大数的加法运算,可以按照十进制表示法中的加法规则进行计算。

首先对齐各位上的数字,然后从低位开始逐位相加,当生成的进位满10时,向高一位进位,直到最高位。

2. 减法规则:对于大数的减法运算,需要注意被减数要大于减数,否则需要采取特殊处理。

首先对齐各位上的数字,然后从低位开始逐位相减,当不够减时,向高一位借位。

大位数乘除取余法

大位数乘除取余法

大位数乘除取余法
“大位数乘除取余法”是一种大数运算方法,主要用于大数除法中求余数。

该算法的基本思想是反复做减法,通过比较被除数和除数的大小,逐步求出余数。

下面是一个简单的示例:
假设有两个大整数$a$和$b$,$a\neq0$,$b\neq0$。

- 当$a=b$时,$a\div b=1$,余数为$0$。

- 当$a>b$时,$a\div b\ge1$,余数需要通过计算求得。

- 当$a<b$时,$a\div b=0$,余数就是$a$。

以$28536$除以$23$为例,求余数的过程如下:
开始商为$0$。

- $28536\div23=1248\ldots10$,余数为$10$。

- $28536\div23=1248\ldots5$,余数为$5$。

- $28536\div23=1248\ldots2$,余数为$2$。

- $28536\div23=1248\ldots0$,余数为$0$。

因此,$28536$除以$23$的余数为$0$。

大位数乘除取余法在实际应用中,可以有效地处理大数运算中取余的问题,并且具有计算速度快、准确性高等优点。

加、减、乘、除的计算法则

加、减、乘、除的计算法则

先乘除,后加减,有括号的先算括号里的积/一个因数=另一个因数被除数/除数=商被除数/商=除数除数*商=被除数整数加、减计算法则:1)要把相同数位对齐,再把相同计数单位上的数相加或相减;2)哪一位满十就向前一位进。

2、小数加、减法的计算法则:1)计算小数加、减法,先把各数的小数点对齐(也就是把相同数位上的数对齐),2)再按照整数加、减法的法则进行计算,最后在得数里对齐横线上的小数点点上小数点。

(得数的小数部分末尾有0,一般要把0去掉。

)3、分数加、减计算法则:1)分母相同时,只把分子相加、减,分母不变;2)分母不相同时,要先通分成同分母分数再相加、减。

4、整数乘法法则: 1)从右起,依次用第二个因数每位上的数去乘第一个因数,乘到哪一位,得数的末尾就和第二个因数的哪一位对个因数的哪一位对齐;2)然后把几次乘得的数加起来。

(整数末尾有0的乘法:可以先把0前面的数相乘,然后看各因数的末尾一共有几个0,就在乘得的数的末尾添写几个0。

)5、小数乘法法则:1)按整数乘法的法则算出积;2)再看因数中一共有几位小数,就从得数的右边起数出几位,点上小数点。

3)得数的小数部分末尾有0,一般要把0去掉。

6、分数乘法法则:把各个分数的分子乘起来作为分子,各个分数的分母相乘起来作为分母,(即乘上这个分数的倒数),然后再约分。

7、整数的除法法则1)从被除数的商位起,先看除数有几位,再用除数试除被除数的前几位,如果它比除数小,再试除多一位数;2)除到被除数的哪一位,就在那一位上面写上商;3)每次除后余下的数必须比除数小。

8、除数是整数的小数除法法则:1)按照整数除法的法则去除,商的小数点要和被除数的小数点对齐;2)如果除到被除数的末尾仍有余数,就在余数后面补零,再继续除。

9、除数是小数的小数除法法则:1)先看除数中有几位小数,就把被除数的小数点向右移动几位,数位不够的用零补足;2)然后按照除数是整数的小数除法来除10、分数的除法法则:1)用被除数的分子与除数的分母相乘作为分子;2)用被除数的分母与除数的分子相乘作为分母。

加减乘除运算法则

加减乘除运算法则

加减乘除运算法则一、加法运算法则加法是将两个或多个数值相加的运算。

加法运算的基本法则如下:1.交换律:a+b=b+a。

即交换数值的位置不会改变运算结果。

例如,2+3=3+2=52.结合律:(a+b)+c=a+(b+c)。

即运算的顺序不会改变运算结果。

例如,(2+3)+4=2+(3+4)=93.加零律:a+0=a。

任何数和0相加的结果都是原数本身。

例如,2+0=2二、减法运算法则减法是将一个数值从另一个数值中减去的运算。

减法运算的基本法则如下:1.减法的定义:a-b=a+(-b)。

减法可以转化为加法操作,把减法转化为加法,然后按照加法的计算法则进行计算。

2.减零律:a-0=a。

任何数减去0的结果都是原数本身。

例如,5-0=5三、乘法运算法则乘法是将两个数值相乘的运算。

乘法运算的基本法则如下:1.交换律:a×b=b×a。

即交换数值的位置不会改变运算结果。

例如,2×3=3×2=62.结合律:(a×b)×c=a×(b×c)。

即运算的顺序不会改变运算结果。

例如,(2×3)×4=2×(3×4)=243.乘一律:a×1=a。

任何数乘以1的结果都是原数本身。

例如,2×1=24.乘零律:a×0=0。

任何数乘以0的结果都是0。

例如,2×0=0。

5.数的次序交换:a×b×c=a×c×b。

即可以改变乘法的顺序,结果不变。

例如,2×3×4=4×3×2=246.同底数乘方:a^m×a^n=a^(m+n)。

即相同底数的幂相乘时,底数不变,指数相加。

例如,2^3×2^2=2^(3+2)=2^5=327.积的分配律:a×(b+c)=a×b+a×c。

数学的算法知识点归纳总结

数学的算法知识点归纳总结数学的算法知识点归纳总结在数学领域中,算法是解决问题和完成计算任务的关键工具。

它们描述了完成特定操作或计算的一系列步骤。

本文将对数学中的各种算法进行归纳总结,帮助读者更好地理解和应用这些算法。

一、基本运算算法1. 加法算法:加法是数学中最基本的运算之一。

算法的基本步骤是垂直对齐两个加数,从右至左逐位相加,并记录下每一位的进位。

2. 减法算法:减法是加法的逆运算。

算法的基本步骤是垂直对齐被减数和减数,从右至左逐位相减,并记录下每一位的借位。

3. 乘法算法:乘法是将两个数相乘得到一个积的运算。

传统的乘法算法是将被乘数逐位与乘数相乘,并将乘积相加得到最终结果。

4. 除法算法:除法是将一个数分为若干等分的运算。

传统的除法算法是将除数逐位分别除以被除数,并将商相加得到最终结果。

二、数论算法1. 质数判断算法:质数是只能被1和自身整除的正整数。

判断一个数是否为质数的算法可以通过将该数与小于等于其平方根的所有正整数进行取余运算,如果能整除其中任何一个数,则该数为合数,否则为质数。

2. 最大公约数算法:最大公约数是两个或多个整数共有的约数中最大的一个。

欧几里得算法是一种辗转相除的算法,通过连续地将较大数除以较小数取余,直到余数为0,最后一个被除数即为最大公约数。

3. 最小公倍数算法:最小公倍数是两个或多个整数公有的倍数中最小的一个。

通过将两个数的乘积除以最大公约数即可得到最小公倍数。

三、代数算法1. 方程求解算法:方程是含有一个或多个未知数的等式。

求解代数方程的算法有很多种,包括直接求解、代数变形、因式分解、牛顿迭代等方法。

2. 矩阵运算算法:矩阵是一个按照轴对称排列的数表。

矩阵运算包括加法、减法、乘法和求逆等操作。

其中矩阵乘法的算法是通过将一个矩阵的每一行与另一个矩阵的每一列进行乘法运算,并将结果相加得到新的矩阵。

3. 求导与积分算法:求导是求函数导数的运算,可以使用导数的定义和公式进行计算。

用C实现两个数的加、减、乘、除、取余运算

用C# 实现两个数‎的加、减、乘、除、取余运算输出结果如‎下:实现思路:新建一个控‎制台应用程‎序C alc‎u lato‎r。

定义4个变‎量,分别代表第‎一个操作数‎、第二个操作‎数、计算结果和‎运算符。

使用if结‎构判断运算‎符的类型,进行计算输‎出。

代码:names‎p ace Calcu‎l ator‎{class‎Progr‎a m{stati‎c void Main(strin‎g[] args){doubl‎e num1, num2, jiegu‎o, yunsu‎a nfu;Conso‎l e.Write‎L ine("请输入第一‎个操作数:");num1 = Conve‎r t.ToDou‎b le(Conso‎l e.ReadL‎i ne());Conso‎l e.Write‎L ine("请输入第二‎个操作数:");num2 = Conve‎r t.ToDou‎b le(Conso‎l e.ReadL‎i ne());Conso‎l e.Write‎L ine("请选择操作‎符类型(选择1——5中的一个‎): 1——加法,2——减法,3——乘法,4——除法,5——除余");yunsu‎a nfu = Conve‎r t.ToDou‎b le(Conso‎l e.ReadL‎i ne());strin‎g fuhao‎;if (num1 != null && num2 != null && yunsu‎a nfu != null){if (yunsu‎a nfu == 1) { jiegu‎o = num1 + num2; fuhao‎= "相加"; }else if (yunsu‎a nfu == 2) { jiegu‎o = num1 - num2; fuhao‎= "相减"; }else if (yunsu‎a nfu == 3) { jiegu‎o = num1 * num2; fuhao‎= "相乘"; }else if (yunsu‎a nfu == 4) { jiegu‎o = num1 / num2; fuhao‎= "相除"; }else if (yunsu‎a nfu == 5) { jiegu‎o = num1 % num2; fuhao‎= "除余"; }else { jiegu‎o = 0; fuhao‎= "非法运算"; }}else{jiegu‎o = 0; fuhao‎= "非法运算";}if (fuhao‎!= "非法运算"){Conso‎l e.Write‎L ine("第一个操作‎数是{0},第二个操作‎数是{1},两数{2}结果是{3}", num1, num2, fuhao‎, jiegu‎o);}}}}。

取余运算规则范文

取余运算规则范文取余运算是一种常见的数学运算,也被称为求模运算或者模运算。

它在计算机科学、离散数学和其他许多领域中都得到广泛应用。

本文将详细介绍取余运算的规则、性质和应用。

一、取余运算规则1.定义:给定两个整数a和b(其中b不为零),取余运算的结果是c,表示a被b整除后的余数。

2.符号:取余运算的符号与被除数a的符号相同。

3. 公式:取余运算可以表示为 a mod b = c 或者 a % b = c。

4.范围:取余运算的结果c的范围是0到b-1之间,即0≤c<,b。

5.性质:取余运算具有以下几个性质:-交换性:a%b=b%a-结合性:(a%b)%c=a%(b*c)-分配性:(a+b)%c=((a%c)+(b%c))%c-乘法性:(a*b)%c=((a%c)*(b%c))%c6.特殊情况:-当被除数a等于零时,a%b=0。

-当除数b等于零时,取余运算无定义,通常会导致除零错误。

二、取余运算的应用1.整除判定:通过取余运算,可以判断一个整数是否能被另一个整数整除。

如果a%b等于零,则a能被b整除。

2.周期性问题:在一些问题中,需要根据一些周期性单位进行计算。

取余运算可以将计算结果限制在一些固定的范围内,例如计算星期几、小时数、分钟数等。

3.数字运算的优化:在一些情况下,取余运算可以用于优化数字运算的效率。

例如,对于大数的除法运算,可以通过取余运算的逐步逼近,减少大数的运算量。

4.随机数生成:在计算机科学中,取余运算可以用来生成伪随机数。

通过将当前时间戳取余一个较大的数,可以得到一个在一定范围内变化的数字序列。

5.数据存储与处理:在计算机中,存储单元的数量通常是固定的。

取余运算可以用于计算数据在存储单元中的位置,从而实现数据的定位和处理。

6.加密算法:一些加密算法中,取余运算被用来处理密钥生成、数据混淆、哈希计算等。

三、取余运算的例子1.47%5=2:47除以5得到9,余数为22.-47%5=-2:-47除以5得到-9,余数为-2,符号与被除数相同。

大整数加减乘除

大整数加减乘除在数学中,我们经常需要对整数进行加减乘除运算。

通常情况下,我们可以直接使用计算器或者编程语言提供的函数来完成这些运算。

但是,当涉及到大整数时,这些方法可能会遇到一些限制。

本文将介绍大整数加减乘除的算法,并给出相应的实现示例。

一、大整数加法大整数加法是指对两个或多个大整数进行相加的运算。

由于整数的位数很大,不能直接使用普通的加法运算。

下面是一种常用的大整数加法算法:1. 将两个大整数对齐,即使它们的位数不相等。

2. 从个位开始,逐位相加,并将结果保存在一个新的整数中。

3. 如果相加的结果大于等于 10,需要进位,将进位的值加到下一位的相加结果中。

4. 重复上述步骤,直到所有位都相加完毕。

下面是一个示例,演示了如何使用上述算法来实现大整数加法:```pythondef big_int_addition(num1, num2):result = []carry = 0i = len(num1) - 1j = len(num2) - 1while i >= 0 or j >= 0:digit1 = int(num1[i]) if i >= 0 else 0digit2 = int(num2[j]) if j >= 0 else 0carry, digit_sum = divmod(digit1 + digit2 + carry, 10)result.append(str(digit_sum))i -= 1j -= 1if carry:result.append(str(carry))result.reverse()return ''.join(result)```二、大整数减法对于大整数减法,我们可以利用大整数加法的算法,结合负数的概念,将减法转化为加法运算。

具体步骤如下:1. 如果被减数大于减数,则直接进行大整数加法运算;2. 如果被减数小于减数,则将被减数和减数互换位置,并标记结果为负数;3. 利用大整数加法算法,对互换位置后的两个整数进行相加运算,并将结果标记为负数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include<stdio.h>#include<string.h>#include<stdlib.h>char *add_together(char *a,char *b);//两数相加char *subtract(char *a,char *b);//两数相减char *divide(char *a,char *b,int d);//两数相除char *multiplied(char *a,char *b);//两数相乘bool contrast(char *a,char *b,int c);//检查a,b两个字符串的大小void inspect_char_valid(char *a,char *b);//检查两个字符串是否有其他符号void printf_char(char *a);//输出字符串int main(){char a[1000],b[1000],c;do{printf("请输入一个数:");gets(a);printf("请输入一个数:");gets(b);printf("请输入'+','-','*','/','%%'的任意一个符号:");c=getchar();switch (c){case '+':printf("两数相加的结果是:");printf_char(add_together(a,b));break;case '-':printf("两数相减的结果是:");printf_char(subtract(a,b));break;case '*':printf("两数相乘的结果是:");printf_char(multiplied(a,b));break;case '/':printf("两数相除的结果是:");printf_char(divide(a,b,20));break;case '%':divide(a,b,0);printf("第一个数对第二个数取余的结果是:");printf_char(a);break;default:printf("你输入的不是'+','-','*','/','%'其中的符号\n退出!!!\n");}getchar();}while (c=='+' || c=='-' || c=='*' || c=='/' || c=='%');return 0;}char *add_together(char *a,char *b)//两数相加{inspect_char_valid(a,b);int i,j,c_len,sum,Carry=0;char c[1000]={'\0'};if (strlen(a)>strlen(b))c_len=(int)strlen(a);elsec_len=(int)strlen(b);for (i=0;i<c_len;i++){sum=Carry;if (((int)strlen(a)-i)>0)sum=sum+a[strlen(a)-1-i]-'0';if (((int)strlen(b)-i)>0)sum=sum+b[strlen(b)-1-i]-'0';if (sum<10){c[c_len-1-i]=sum+'0';Carry=0;}else{c[c_len-1-i]=(sum%10)+'0';Carry=sum/10;}}if(Carry){for (j=strlen(c);j>0;j--){c[j]=c[j-1];}c[0]=Carry+'0';Carry=0;}return c;}char *subtract(char *a,char *b)//两数相减{inspect_char_valid(a,b);char c[1000]={'\0'};int i,j,a_len,b_len,h,sum,borrow=0;for (i=0;*(a+i)=='0';i++);for (j=0;*(b+j)=='0';j++);a_len=(int)strlen(a);b_len=(int)strlen(b);if ((a_len-i)<(b_len-j)||((a_len-i)==(b_len-j)&&contrast(b,a,1))) {c[0]='-';strcpy(c+1,b);for (h=0;h<b_len;h++){if ((a_len-h)>0)if ((b[b_len-1-h]+borrow)>=a[a_len-1-h]){c[b_len-h-j]=b[b_len-1-h]+borrow-(a[a_len-1-h]-'0');borrow=0;}else{c[b_len-h-j]=b[b_len-1-h]+borrow+10-(a[a_len-1-h]-'0');borrow=-1;}else{if ((borrow+c[b_len-h-j]-'0')<0){c[b_len-h-j]=c[b_len-h-j]+10+borrow;borrow=-1;}else{c[b_len-h-j]=c[b_len-h-j]+borrow;borrow=0;}}}}else{strcpy(c,a);for (h=0;h<a_len;h++){if ((b_len-h)>0)if ((a[a_len-1-h]+borrow)>=b[b_len-1-h]){c[a_len-1-h]=a[a_len-1-h]+borrow-(b[b_len-1-h]-'0');borrow=0;}else{c[a_len-1-h]=a[a_len-1-h]+borrow+10-(b[b_len-1-h]-'0');borrow=-1;}else{if ((borrow+c[a_len-h-1]-'0')<0){c[a_len-h-1]=c[a_len-h-1]+10+borrow;borrow=-1;}else{c[a_len-h-1]=c[a_len-h-1]+borrow;borrow=0;}}}}return c;}char *divide(char *a,char *b,int d=0)//两数相除{inspect_char_valid(a,b);char bb[10][1000]={'\0'},c[1000]={'\0'},tihuan;int i,j,h=0,a_len,b_len;a_len=(int)strlen(a);b_len=(int)strlen(b);for (i=1,strcpy(bb[0],b);i<10;i++)strcpy(bb[i],add_together(bb[i-1],b));i=0;if (a_len>=b_len){for (i=0;i<=a_len-b_len;a[b_len+i]=tihuan,i++){tihuan=a[b_len+i];a[b_len+i]='\0';for (j=0;j<10 && contrast(a,bb[j],0);j++);if (j){strcpy(a,subtract(a,bb[j-1]));}a[b_len+i]=tihuan;c[i]=j+'0';}}for (c[i]='.',h=1;h<=d;h++){a[a_len+h-1]='0';a[a_len+h]='\0';for (j=0;j<10 && contrast(a,bb[j],0);j++);if (j){strcpy(a,subtract(a,bb[j-1]));}c[i+h]=j+'0';}return c;}char *multiplied(char *a,char *b)//两数相乘{inspect_char_valid(a,b);char c[1400][1400]={'\0'};long long Product,Carry=0;int i,j,r,k,k1=0;k=strlen(a);i=strlen(b);//这里是计算b里面的每一个数字与a大数相乘的结果,并放在c数组相应的位子---- for (i=i-1;i-k1>=0;k1++){for (r=k1,c[i-k1][k+r]='\0';r>0;r--){c[i-k1][k+r-1]='0';}for (j=k-1;j>=0;j--){Product=Carry+(b[i-k1]-'0')*(a[j]-'0');if (Product<10){c[i-k1][j]=Product+'0';Carry=0;}else{c[i-k1][j]=(Product%10)+'0';Carry=Product/10;}}//这里是检查每个数与大数相乘结束后,最后是否还需要进位------------------ if (Carry){for (j=k+k1,c[i-k1][j+1]='\0';j>0;j--){c[i-k1][j]=c[i-k1][j-1];}c[i-k1][0]=Carry+'0';Carry=0;}}//下面是把c数组里面的大数从后面对其相加得出来的结果放在c[0]里面------ for (i=1;c[i][0];i++){strcpy(c[0],add_together(c[0],c[i]));}return c[0];}bool contrast(char *a,char *b,int c)//检查a,b两个字符串的大小{inspect_char_valid(a,b);for (;*a=='0';a++);for (;*b=='0';b++);if (strlen(a)>strlen(b)|| (strlen(a)==strlen(b)&& strcmp(a,b)>=c))return 1;elsereturn 0;}void inspect_char_valid(char *a,char *b)//检查两个字符串是否有其他符号{for (int i=0;*(a+i);i++){if (*(a+i)<'0'||*(a+i)>'9'){printf("输入的第一组数字里面包含符号\n退出!!!");exit(0);}}for (int i=0;*(b+i);i++){if (*(b+i)<'0'||*(b+i)>'9'){printf("输入的第二组数字里面包含符号\n退出!!!");exit(0);}}}void printf_char(char *a)//输出字符串{if (a[0]=='-'){for (a++;*a=='0';a++);a--;a[0]='-';puts(a);}else{for (;*a=='0';a++);if (a[0]=='\0')a--;puts(a);}}。

相关文档
最新文档