c语言大数相除和大数求摸怎么实现?

c语言大数相除和大数求摸怎么实现?,第1张

1、大数就是位数多,数值大的意思。通常来说c语言里的基本数据类型范围是有限的,如long型的最大只能表示几十亿,几十亿也就11位数字长弯拍度而已。如果用100长的数组表示,假设数组一个埋激羡元素存数字的一位,那么总位数可以达到100位,这是基本数据类型无法表示的。

2、例程:

#include"stdio.h"

int getlength(char a[]){

 int i=0

 while(a[i])

  i++

 return i

}/*返回字符串的长度*/

int chartoint(char a){

 return a-48

}/*将字符编程整形*/   

void creatarray(char a[],char b[]){

 printf("请输入第一个数:")

 scanf("%s",a)

 printf("请输入第二个数:")

 scanf("%s",b)

}/*创建数组*/

void go(char a[],char b[],int s[]){

 int alength=getlength(a)

 int blength=getlength(b)

 int i=alength-1

 int j=blength-1

 int k/*s数组下标*/

 int slength

 if(alength>blength)

  slength=alength

 else

  slength=blength

 k=slength

 while(i>=0&&j>=0)

  s[k--]=chartoint(a[i--])+chartoint(b[j--])

 铅埋while(i>=0)

  s[k--]=chartoint(a[i--])

 while(j>=0)

  s[k--]=chartoint(b[j--])

 k=slength

 while(k>=2){

  if(s[k]>=10){

   s[k-1]++

   s[k]-=10

  }

  k--

 }

 printf("两数之和为:")

 if(s[1]>=10){

  s[0]=1

  s[1]-=10

  for(i=0i<=slengthi++)

   printf("%d",s[i])

 }

 else{

  for(i=1i<=slengthi++)

   printf("%d",s[i])

 }

 printf("\n")

}

void main(){

 char a[1000],b[1000]

 int s[1000]

 int lab

lab1: creatarray(a,b)

 go(a,b,s)

 printf("请输入1继续(想退出按其他数字键):")

 scanf("%d",&lab)

 if(lab==1)

  goto lab1

}

楼主的意思是数组的每个元素只可能是0-9之间的数?除数怎样?也用数组表示?或者简单的int?

如果全部转换为减法运算比较麻烦,也许就是要编程实现小学除法的具体步骤?从被除数的最高位依次和除数比较,用另外一个数组保存当前比较值,另外用一个数组保存余数,当然还需要一个数组保存商。在运算过程中不断更新这三个数组。历判尺

举个例子吧,也许有点帮助。

被除数冲耐 int d[5] = {1,2,3,4,5}// 表示 d = 12345

除数 int x[2] = {6,7} // 同肢高样 x = 67

商 int q[5] = {0} // 初始化

余数 int r[2] = {0} // 初始化

当前值 int c[3] = {0} //初始化

(1) 更新 c[3] = {0,0,1}, q[5] = {0,0,0,0,0}, r[2] = {0,1}

(2) 更新 c[3] = {0,1,2}, q[5] = {0,0,0,0,0}, r[2] = {1,2}

(3) 更新 c[3] = {1,2,3},q[5] = {0,0,0,0,1},r[2] = {5,6}

(4) 更新 c[3] = {5,6,4},q[5] = {0,0,0,1,8},r[2] = {2,8}

(5) 更新 c[3] = {2,8,5},q[5] = {0,0,1,8,4},r[2] = {1,7};

(6) d 没有更多的位,DONE。

结果:商184, 余数17。

当然要求具体每一步如何更新需要自己定义或转化。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12450335.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存