用C语言定义一个函数 int dtake ( int n, int m),求整数 n 从右开始数的第 m 个数字
时间: 2024-11-07 22:13:47 浏览: 32
在C语言中,你可以通过以下步骤定义一个名为`dtake`的函数,它接受两个整数参数`n`和`m`,然后返回从整数`n`的右边起算的第`m`个数字:
```c
#include <stdio.h>
// 定义函数dtake,参数为int类型的n和m
int dtake(int n, int m) {
// 检查输入是否合法(例如,m不能大于n的位数)
if (m > 0 && m <= sizeof(n) * CHAR_BIT) {
// 将n转换为无符号二进制字符串
char binary[32] = {0}; // 足够容纳32位整数
sprintf(binary, "%u", n);
// 循环遍历二进制字符串,从右向左,直到找到第m个字符
for (int i = strlen(binary) - 1; i >= 0 && m > 0; i--) {
m--;
if (binary[i] == '1') {
// 返回找到的数字,如果m已消耗完则返回该位置的数值
return n >> (i * 4); // 因为每个二进制位占4位
}
}
}
// 如果m超出范围,返回0或者抛出错误
return 0;
}
int main() {
int n, m;
printf("请输入一个整数n和一个数字m:");
scanf("%d %d", &n, &m);
int result = dtake(n, m);
if (result != 0) {
printf("从n的右边开始的第%d个数字是:%d\n", m, result);
} else {
printf("无效的m值或无法获取第%d个数字。\n", m);
}
return 0;
}
阅读全文