帮忙用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分
要求比如:
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数字