我正在研究一个问题来计算一个数字中的位数,但是根据约束,该数字的范围应该是10 ^ 100(10到100的功率)。我已经尝试使用limits.h但它没有用。任何人都可以建议一种方法吗?
int main(){
int n=LONG_MAX;
int count;
scanf("%d",&n);
while(n!=0)
{
n=n/10;
count++;
}
printf("%d",count);
return 0;
}
答案 0 :(得分:0)
好吧,在C 10 ^ 100中可以很容易地存储到int
:
int xored = 10^100;
之后,xored
将存储110。
1100100
0001010
-------
1101110
答案 1 :(得分:-3)
正如其他人所说,你不需要将它存储为数字。创建一个长度为100的字符数组。将值初始化为非数字值。从CIN或者你得到的数字,然后将它保存到该字符数组。然后计算在到达非数字之前有多少数字。
BigNumber = new char[100];
cout << "Input the number:\n";
cin >> BigNumber;
digits = 0;
for(i = 0; i < 100; i++)
{
if( IsNumeric(BigNumber[i]) )
{
digits++;
}
else
{
break;
}
}
cout << "That number is " << digits << " digits long";