函数,实现int类型截取任意位数
求一个函数,实现int类型截取任意位数。
如题例如:
求函数实现
------解决思路----------------------
------解决思路----------------------
------解决思路----------------------
也可以参照@西伯利亚冰 不要要注意四舍五入(不可直接用int取整),所以其代码要修改为:
------解决思路----------------------
------解决思路----------------------
如题例如:
int get_num(int num,int a, int b)
{//a表示从哪一位算起(1从个位算,2从十位算,3从百位算),b表示截取多少位
//例如:传入参数1234567,1,3
int new_num = 567;//怎样求得new_num = 567;
//return new_num ;
}
求函数实现
------解决思路----------------------
#include <math.h>
int get_num(int num,int a, int b)
{
int low,high;
low = high = 0;
low = pow(10., a - 1);
high = pow(10., b);
num /= low;
num%= high;
return num;
}
------解决思路----------------------
int get_num(int num,int a, int b)
{
return num / (int)pow(10.0, a - 1) % (int)pow(10.0, b - a + 1);
}
------解决思路----------------------
int get_num(int num, int a, int b){
int k = 1;
while(--a)num /= 10;
while(b--)k *= 10;
return num % k;
}
也可以参照@西伯利亚冰 不要要注意四舍五入(不可直接用int取整),所以其代码要修改为:
int get_num(int num,int a, int b){
return num / int(pow(10.0, a-1) + .5)
% int(pow(10.0, b-a+1) + .5);
}
// int(x + .5)可以实现对x四舍五入。
------解决思路----------------------
#include <stdio.h>
#include <math.h>
int oct_power(int n)
{
int value = 1;
int i;
for(i = 0; i < n; i++)
{
value *= 10;
}
return value;
}
int get_num(int num, int a, int b)
{
int new_num = num;
new_num /= oct_power(a - 1);
new_num %= oct_power(a - 1 + b);
return new_num;
}
int main(int argc, char* argv[])
{
printf("%d\n", get_num(1234567, 1, 3));
printf("%d\n", get_num(1234567, 3, 3));
printf("%d\n", get_num(1234567, 5, 2));
return 0;
}
------解决思路----------------------
#include<stdio.h>
#include<math.h>
int check_num(int num, int a, int b){
int length = 0;
if(a <= 0
------解决思路----------------------
b <= 0){
return -1;
}
while(++length){
if(num < pow(10, length)){
break;
};
}
if(a + b - 1 > length){
return -1;
}
return 0;
}
int get_num(int num,int a,int b){
return num % (int)pow(10, a + b -1) / (int)pow(10, a - 1);
}
int main(){
int num = 1234567;
int x = 4;
int y = 3;
if(check_num(num, x, y) != 0){
printf("ERROR!\n");
return -1;
}
int result = get_num(num, x, y);
printf("result=%d\n",result);
return 0;
}