突破取值范围,该如何解决
突破取值范围
{int n,b,s;
s=0;
cin>>n;
while(n)
{b=n%10;
n=n/10;
s=s+b;
}
cout<<"s="<<s<<endl;
}
这个程序是求所输入的数的各位数字之和,然定义数据类型为整数后,对所输入的数字的范围有了限制!如何突破这个限制呢???望指教。
------解决方案--------------------
将int 改为long int
------解决方案--------------------
{ int i=1, sum=0,n,t;
cin>>n;
while(n>10)
{
t=n%10;
sum=sum+t;
n=(n-t)/10 ;//取完个位将个位数丢去,然后再除以10那么原来的十位变成个位
}
sum=sum+n;//在最后要加上最高位
cout<<sum;
}
楼主给分吧,穷死我了
------解决方案--------------------
如果使用64位整数__int64还不够的话就只能用字符串来做转换了
------解决方案--------------------
int64或者字符串
{int n,b,s;
s=0;
cin>>n;
while(n)
{b=n%10;
n=n/10;
s=s+b;
}
cout<<"s="<<s<<endl;
}
这个程序是求所输入的数的各位数字之和,然定义数据类型为整数后,对所输入的数字的范围有了限制!如何突破这个限制呢???望指教。
------解决方案--------------------
将int 改为long int
------解决方案--------------------
{ int i=1, sum=0,n,t;
cin>>n;
while(n>10)
{
t=n%10;
sum=sum+t;
n=(n-t)/10 ;//取完个位将个位数丢去,然后再除以10那么原来的十位变成个位
}
sum=sum+n;//在最后要加上最高位
cout<<sum;
}
楼主给分吧,穷死我了
------解决方案--------------------
如果使用64位整数__int64还不够的话就只能用字符串来做转换了
------解决方案--------------------
int64或者字符串