西北工业大学C程序设计基础NOJ T039

description

编写函数实现 value 左右循环移位(即移出的位在另一端填入)。函数原型为 int move(int value,int n);其中 value 为要循环移位的数,n 为移位的位数,n 的绝对值不大于 16,整型为 16 位。如果 n<0 表示左移,n>0 表示右移,n=0 表示不移位。在主函数中输入数据并调用该函数输出结果。

input

输入 value 和 n,均为整型,用空格隔开

output

移位后的结果

sample_input

134744064 -8 

sample_output

134742024 

solution

本题对数字串进行处理,可以使用移位操作符。方法参考下文。

源代码

// NOJ T039.c
#include <stdio.h>
int move(int value, int n)
{
    if (n == 0)
        return value;
    else if (n < 0)
    {
        n = -n;
        value = (value << n) | (value >> (32 - n));
    }
    else
        value = (value >> n) | (value << (32 - n));
    return value;
}

int main()
{
    int value, n;
    scanf("%d %d", &value, &n);
    value = move(value, n);
    printf("%d", value);
    return 0;
}

=EOF=

Last modification:November 25, 2022
如果觉得我的文章对你有用,请随意赞赏~