在处理模块时,我遇到了一个问题,无法找出问题的解决方案。 这是个问题。 程序将从用户输出的输入数字和位置获得该位置的数字。 例如 如果number = 256314且position = 0,则输出应为" 2" 如果number = 1256985且position = 3,则输出应为" 6" 这是我的代码
#include <iostream>
#include <cmath>
using namespace std;
int returnDigitAtPosition(int &position,int &totaldigits,int &number)
{
{
int positiondigit = number/pow(10,(totaldigits - position));
positiondigit = positiondigit % 10;
return positiondigit;
}
}
int main()
{
int number = 0,position = 0,digit = 0;
cout << " Enter the number : ";
cin>>number;
cout<<" Enter the position : ";
cin>>position;
/*cout<<" Enter the digit : ";
cin>>digit;*/
int totaldigits = log(number);
int DigitAtPosition = returnDigitAtPosition(position,totaldigits,number);
cout<<DigitAtPosition;
}
答案 0 :(得分:1)
试试这个:
#include <iostream>
#include <string>
using namespace std;
int main(){
int position;
string number;
cout << " Enter the number : " << endl;
cin >> number;
cout << " Enter the position : " << endl;
cin >> position;
cout << number[position] << endl;
}
接收数字作为字符串将接受该数字,无论其长度如何。
答案 1 :(得分:0)
更改两行,您的代码将起作用:
int positiondigit = number / pow(10, (totaldigits - position-1));
和
int totaldigits = log10(number)+1;