永发信息网

C, 如何提取一个数(int)的最高几位?

答案:5  悬赏:80  手机版
解决时间 2021-04-22 19:11
  • 提问者网友:夢醒日落
  • 2021-04-22 14:09
用c语言实现.传入参数 int num , int k返回结果 int n , int m要求,把num中的最高k位提取出来,并保存到n中,并把剩下的位保存到m中.【希望可以用纯算术运算得出结果】.(【即不可以把num转为字符串,然后提取,只能用加减乘除等算术运算】.)比如,num=123456 , k=1 则 n=1 m=23456num=123456 , k=2 则 n=12 m=3456num=456 , k=2 则 n=45 m=6
最佳答案
  • 五星知识达人网友:十鸦
  • 2021-04-22 15:32
int temp = num;
int count = 1;
int res1 = 0,res2 =0;
while(temp / 10 != k -1){
temp = temp/10;
count *= 10;
}
res1 =temp;
res2 = num - res1 *count;
printf("k = %d, n = %d, m = %s",k,res1,res2);

//大致思路了,具体值对不对还要compile下,楼主试试吧
全部回答
  • 1楼网友:污到你湿
  • 2021-04-22 19:50
void fun(int nNum, int nK, int &nN, int &nM) { int nTemp = pow(10, nK); nN = nNum/nTemp; nM = nNum%nTemp; }
  • 2楼网友:时间的尘埃
  • 2021-04-22 18:19
#include<stdio.h> long a,k,n,m,i,j,x,y; main() { scanf("%ld%ld",&a,&k); x=y=1; for(i=1;i<=k;i++)y*=10; x=y/10; n=a;j=1; while(n>=y){n/=10;j*=10;} m=a-n*j; printf("n=%ld m=%ld",n,m); }
  • 3楼网友:慢性怪人
  • 2021-04-22 16:51
用c语言实现. 返回结果 intn , int m 要求,把num中的最高k位提取出来,并保存到n中,并把剩下的位保存到m中. 【希望可以用纯算术运算得出结果】. (【即不可以把num转为字符串,然后提取,只能用加减乘除等算术运算】.) 比如,
  • 4楼网友:酒安江南
  • 2021-04-22 16:36
#include <stdio.h> void fun(int num, int k, int *n, int *m) { int t = num, c = 0; do { c++; } while(t /= 10); for(t = 10 , c -= k; --c; t *= 10); *n = num / t; *m = num % t; } int main() { int num, k, n, m; printf("input num,k:\n"); while(scanf("%d", &num), num) { scanf("%d", &k); fun(num, k, &n, &m); printf("n=%d,m=%d\n", n, m); } return 0; }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯