帮忙用C 写一个BIT数字左右移动旋转的程序

来源:百度知道 编辑:UC知道 时间:2024/07/03 01:06:48
大家帮帮忙用DEV C 写个BIT数字左右移动旋转的程序。
要求比如:

BIT 数字: 01000000 向左移动3位就是0000010
注意一又转回右边的第2位了,而不是消失了。
向右移8位,就跟现在一样,因为1又旋转回去了原来的位置。
要求输入:printf("请输入要旋转的BIT数字: \n");
printf("请输入要旋转的次数: \n");
正数是向左转比如 3 向左转3下,
负数是象右转,比如 -3 向右转3下。

请大家用DVE C 写出来,在捻在回答帖上,而不要只说要怎么做。 谢谢
不一定要BIT 数字。只要是一组数字就可以。 比如 123456

5点半前做出的追加30分

 
 
 
把旋转 n 位看作是 n 次左旋一位的话,代码会很简短。
另外,旋转 -n 位(即右旋 n 位)的结果其实跟旋转 len - n 位的结果一样(len 是数字串的长度)。 比如,123456 旋转 -4 位既是旋转 6 - 4 位,即 2 位。

#include<stdio.h>
#include<string.h>

void rotate( char *array, int distance ) {
    long len = strlen( array );
    distance %= len ? len : 1;
    distance = distance < 0 ? distance + len : distance;
    while( distance-- ) {
        char temp = array[ 0 ];
        memmove( array, array + 1, len - 1 );
        array[ len - 1 ] = temp;
    }
}

int main( ) {
    char array[ 999 ];
    int  distance;
    puts( "请输入要旋转的BIT数字