读前福利:几百本互联网技术书籍送给大家 www.keketec.club/posts/77172…
1 题目
函数:unsigned fun(unsigned w)
功能:求数字的低n-1位的数
描述:w 是一个大于10的无符号整数,若 w 是 n(n>=2)位的整数,函数求出来w的低n-1位的数作为函数值返回
举例:w 值为5923,则函数返回 923
2 思路
两步走:
- 先判断当前无符号整数的位数,记录位数*10。例如:如果有三位,那么记录time=100
- 根据time计算后 n-1 位,即:w-((w/time)*time)
3 代码
#include <stdio.h>
#include <stdlib.h>
/**
函数:unsigned fun(unsigned w)
功能:求数字的低n-1位的数
描述:w 是一个大于10的无符号整数,若 w 是 n(n>=2)位的整数,函数求出来w的低n-1位的数作为函数值返回
举例:w 值为5923,则函数返回 923
**/
unsigned fun(unsigned w) {
// 先判断数字的位数
int temp_w = w;
int time = 1; // 位数10的指数次
while(temp_w > 0) {
time*=10;
temp_w = temp_w/10;
}
time = time/10;
// 计算返回
return w-((w/time)*time);
}
int main(int argc, char const *argv[]) {
int w;
printf("请一个大于10的无符号整数:");
scanf("%d", &w);
printf("无符号整数低n-1位的数为:%d\n", fun(w));
}
示例结果:
$ gcc ex007.c -o demo
$ ./demo
请一个大于10的无符号整数:12345
无符号整数低n-1位的数为:2345
$ ./demo
请一个大于10的无符号整数:765432
无符号整数低n-1位的数为:65432