用C语言写一个函数,任给一个n为整数,返回去掉m位后的最大的数,函数结构为 int fun(long long int n,int m)
时间: 2024-11-27 21:08:19 浏览: 15
C语言--写一个函数,判断一个整数是否为回文数,是返回1,不是返回0(如果一个整数,从左右来读都一样,就称它为回文数
在C语言中,你可以创建一个名为`fun`的函数,该函数接收两个`long long int`类型的参数,一个是要操作的数`n`,另一个是要移除的位数`m`。由于C语言对大整数处理并不像现代一些语言那样直接支持,我们可以使用循环和位运算来实现这个功能。这里是一个简单的示例:
```c
#include <stdio.h>
// 定义函数fun
long long int fun(long long int n, int m) {
// 如果m大于数字的位数,返回原数,因为无法再移除更多位
if (m >= sizeof(long long int) * CHAR_BIT)
return n;
long long int result = 0; // 初始化结果
bool carry = false; // 是否有进位标志
// 从最高位开始,对于每一位,如果当前位不是移除位,将其添加到结果,并考虑进位
for (int i = sizeof(long long int) * CHAR_BIT - 1; i >= 0; i--) {
if ((n >> i) & 1 && !carry) { // 如果是有效位并且没有进位
result |= (1LL << i); // 将1左移i位并添加到结果
carry = true; // 设置进位标志
}
// 移除m位,如果是当前位,跳过它
if (i == m) continue;
}
return result;
}
// 测试函数
int main() {
long long int num = 1234567890123456LL;
int removeBits = 5;
long long int result = fun(num, removeBits);
printf("After removing %d bits, the largest number is: %lld\n", removeBits, result);
return 0;
}
```
当你运行这个程序时,它会计算给定的`n`移除`m`位后的最大值。
阅读全文