1. 程式人生 > >作業:位演算法訓練3

作業:位演算法訓練3

題目:輸入一個整數a,再輸入兩個整數p1,p2(p1,p2<32),將該整數的二進位制表示方法中從右端開始的p1到p2位取反後輸出

#include <stdio.h>

void PrintBin(int a, int p1, int p2) { int Arr[32] = {0}; int i = 9;

for (i = 0; i < 32; i++) { Arr[i] = a % 2; a >>= 1; }

for (i = p1 - 1; i <= p2 - 1; i++) { printf ("%d", Arr[i] == 0 ? 1 : 0); //取反 0->1 1->0 } printf ("\n"); }

int main() { int a = 0; int p1, p2;

loop: printf (“please input a integer:”); scanf ("%d", &a); printf (“input p1(p1 < 32):”); scanf ("%d", &p1); printf (“input p2(p2 < 32):”); scanf ("%d", &p2);

if (p1 <= 0 || p2 <= 0|| p1 > 32 || p2 > 32 || p1 > p2) { printf (“input error!\n”); goto loop; }

PrintBin(a, p1, p2);

return 0; }