用c语言如何实现64位长整型的加减法、32位长整型乘法、64位长整型除法?
#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#等。