C++ 如何获取C+;中int中特定位置的编号+;?
所以我有一个向上计数的整数 假设我们已经达到65000人 我需要得到第千位(5)的数字,然后分配给另一个整数 我发现下面的代码片段非常简单,但不是我所需要的 您可以对任何数量的整数使用%运算符 分离例如,888 1%10将为您提供1,888 1%100将为您提供1 给你81C++ 如何获取C+;中int中特定位置的编号+;?,c++,C++,所以我有一个向上计数的整数 假设我们已经达到65000人 我需要得到第千位(5)的数字,然后分配给另一个整数 我发现下面的代码片段非常简单,但不是我所需要的 您可以对任何数量的整数使用%运算符 分离例如,888 1%10将为您提供1,888 1%100将为您提供1 给你81 谢谢 试试这样的东西 int a =65432; int b = ((a%10000)-(a%1000))/1000; 此处(a%10000)=5432 和(a%1000)=432 所以(a%10000)-(a%1000)
谢谢 试试这样的东西
int a =65432;
int b = ((a%10000)-(a%1000))/1000;
此处(a%10000)=5432和(a%1000)=432
所以(a%10000)-(a%1000)将是5000
最后5000/1000=5 或者直接使用
int b = (a%10000)/1000;
试试这样的
int a =65432;
int b = ((a%10000)-(a%1000))/1000;
此处(a%10000)=5432和(a%1000)=432
所以(a%10000)-(a%1000)将是5000
最后5000/1000=5 或者直接使用
int b = (a%10000)/1000;
@Matt在评论中建议:
int num1 = 65000;
int num2 = num%10000; //num2 is 5000
num2 = num2/1000;
Output: 5
@Matt在评论中建议:
int num1 = 65000;
int num2 = num%10000; //num2 is 5000
num2 = num2/1000;
Output: 5
你可能需要这个
int AtPos(int number, int pos)
{
return ((number > 0 ? number : -number) / (int)pow(10, pos)) % 10;
}
如果这是您要查找的参数,则应添加参数有效性检查
编辑。 我刚刚注意到,您需要在指定的位置分配不同的号码。因此,您需要进行以下改进:
int& SetValueAtPos(int& number, int pos, int newValue)
{
int power = (int)pow(10, pos);
number -= AtPos(number, pos) * power;
number += power * newValue;
return number;
}
此外,您还可以合并这些函数并缓存pow(10,pos)的值。这样会更优化。您可能需要这样做
int AtPos(int number, int pos)
{
return ((number > 0 ? number : -number) / (int)pow(10, pos)) % 10;
}
如果这是您要查找的参数,则应添加参数有效性检查
编辑。 我刚刚注意到,您需要在指定的位置分配不同的号码。因此,您需要进行以下改进:
int& SetValueAtPos(int& number, int pos, int newValue)
{
int power = (int)pow(10, pos);
number -= AtPos(number, pos) * power;
number += power * newValue;
return number;
}
此外,您还可以合并这些函数并缓存
pow(10,pos)
的值,这样会更优化。提示:如何使用%
操作符来获取以5
开头的内容?那么,您如何使用/
运算符仅提取其中的第一位数字呢?没有接受的答案。您找到问题的答案了吗?提示:如何使用%
运算符获取以5
开头的内容?那么,您如何使用/
运算符仅提取其中的第一位数字呢?没有接受的答案。你找到问题的答案了吗?