数一数位数
时间限制:1秒 内存限制:128M
题目描述
小可想写个程序完成这样一个功能:输入一个数,输出这个数的位数,例如1237是个四位数,则输出4。
输入描述
输入一行,输入一个整数n, -1015<n<1015
输出描述
输出一行,输出整数的位数
样例
输入
-123456789852
输出
12
(c++)
可以使用循环实现:当这个整数不为0时,位数+1,然后除以10,直到其为0,然后循环结束即可计算出它的位数。
代码如下:
参考链接:
#include <iostream>
using namespace std;
int main(void){
long long n; // 存储输入的整数
int digit=0; // 存储整数n的位数 ,初始值为0
cin>>n; // 获取一个整数
// 计算n的位数
// 利用除以10来计算n的位数 ,直到其为0
while(n!=0){
digit++; // 位数增加一位
n/=10; // n除以10
}
cout<<digit;
return 0;
}
【以下回答由 GPT 生成】
解决方案如下:
#include <iostream>
#include <cmath>
using namespace std;
int main() {
long long n;
cin >> n;
int numDigits = floor(log10(abs(n))) + 1;
cout << numDigits << endl;
return 0;
}
解决思路: - 首先,我们使用long long
类型来接收输入的整数n,以确保能够处理较大的数值范围。 - 然后,我们使用log10
函数计算n的绝对值的对数(底数为10),并使用floor
函数向下取整得到位数。 - 最后,我们输出位数的结果。 - 注意,由于存在负数的情况,所以我们需要使用abs
函数取n的绝对值。
对于输入例子-123456789852,我们的程序将会输出12,即-123456789852有12位数。
【相关推荐】