A. 如何实现用c++语言编写存放40位的整数
1,用3个int型的变量,联合表示
2,用字符串存放
B. java里面如何定义一个40位的整数
可以用一个长度为40的数组,没位数值为0-9,这样的数组算是一个数组
C. C++里面大于longlong的数字怎么声明啊,比如一个40位的数字(十进制)……
没有哦,你可以用高精度,例如高加,你只需改变N的值(这里是500位的)就可以了:
#include<iostream>
#include<string>
using namespace std;
const int N=501;
string a,b;
int c[N],d[N],e[N],k;
int main()
{
int i,j;
cin>>a>>b;
for(i=0;i<a.size();i++)
c[i]=a[a.size()-i-1]-'0';
for(i=0;i<b.size();i++)
d[i]=b[b.size()-i-1]-'0';
if (a.size()>=b.size())
k=a.size();
else
k=b.size();
for(i=0;i<k;i++)
{
c[i]+=d[i];
if(c[i]>=10)
{
c[i]=c[i]%10;
c[i+1]++;
}
}
if(!c[k])
for(j=k-1;j>=0;j--)
cout<<c[j];
else
for(j=k;j>=0;j--)
cout<<c[j];
return 0;
}
D. 大整数加法 C语言 求代码 要求如下
#include<stdio.h>
#include<string.h>
voidreverse(char*s)/*将字符串逆置*/
{
intlength;
inti=0;
chartemp;
length=strlen(s);
while(i<length-i-1)
{
temp=s[i];
s[i]=s[length-i-1];
s[length-i-1]=temp;
i++;
}
}
voidAddBigNum(char*s1,char*s2,char*result)
{
intlen1=strlen(s1);
intlen2=strlen(s2);
intacc=0,temp,i;/*acc为进位标记*/
if(s1==NULL||s2==NULL||result==NULL)
{
return;
}
reverse(s1);
reverse(s2);
for(i=0;i<len1&&i<len2;i++)
{
temp=s1[i]-'0'+s2[i]-'0'+acc;/*计算每位的实际和*/
result[i]=temp%10+'0';/*通过求余数来确定每位的最终值*/
if(temp>=10)/*通过这个if..else..条件来判断是否有进位,并设置进位值*/
acc=1;
else
acc=0;
}
if(i<len1)/*两个加数位数不同*/
{
for(;i<len1;i++)
{
temp=s1[i]-'0'+acc;/*依旧要考虑进位,比如9999+1的情况*/
result[i]=temp%10+'0';
if(temp>=10)
acc=1;
else
acc=0;
}
}
if(i<len2)
{
for(;i<len2;i++)
{
temp=s2[i]-'0'+acc;
result[i]=temp%10+'0';
if(temp>=10)
acc=1;
else
acc=0;
}
}
if(acc==1)/*考虑如:123+911=1034的情况,如果不增加这个条件会得到结果为034,进位被舍弃*/
result[i++]='1';
result[i]='