用c语言如何实现64位长整型的加减法、32位长整型乘法、64位长整型除法?

 我来答
Conqueror
高粉答主

2018-04-14 · 关注我不会让你失望
知道大有可为答主
回答量:794
采纳率:100%
帮助的人:23.9万
展开全部

#include<stdio.h>

#include<string.h>

#define N 1005

int main()

{

char str1[N],str2[N];

int num1[N],num2[N],t,len1,len2,i,j,max;

scanf("%d",&t);//测试t组数据,减法就不写了

getchar();

while(t--)

{

memset(str1,0,sizeof(str1));

memset(str1,0,sizeof(str2));

memset(num1,0,sizeof(num1));

memset(num2,0,sizeof(num2));

scanf("%s",str1);//输入第一个数,这个1000位整数相加也没问题,上面自己改长度

scanf("%s",str2);//输入第二个数,因为没有太长的数据类型,用字符串表示大整数

len1=strlen(str1);

len2=strlen(str2);

max=len1>len2?len1:len2;

j=0;

for(i=len1-1; i>=0; i--) //这里注意啊,倒着转换,但是num1是正向存每一位的

{

num1[j]=str1[i]-'0';   //转换成数字一个一个存到数组里面

j++;

}

j=0;

for(i=len2-1; i>=0; i--)

{

num2[j]=str2[i]-'0';

j++;

}

for(i=0; i<max; i++)  //一位一位相加

{

num2[i]+=num1[i];      //加到num2数组中

if(num2[i]>=10)  //大于10进位

{

num2[i]-=10;

num2[i+1]+=1;

}

}

if(num2[max]==1)   

printf("%d",num2[max]);

for(i=max-1; i>=0; i--)   //这样就把大整数的每一位算出来了,顺序输出就好

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

printf("\n");

}

return 0;

}

C语言,是一种通用的、过程式的编程语言,广泛用于系统与应用软件的开发。具有高效、灵活、功能丰富、表达力强和较高的移植性等特点,在程序员中备受青睐。最近25年是使用最为广泛的编程语言。

C语言是由UNIX的研制者丹尼斯·里奇(Dennis Ritchie)于1970年 由 肯·汤普逊(Ken Thompson)所研制出的B语言的基础上发展和完善起来的。目前,C语言编译器普遍存在于各种不同的操作系统中,例如UNIX、MS-DOS、Microsoft Windows及Linux等。C语言的设计影响了许多后来的编程语言,例如C++、Objective-C、Java、C#等。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式