作業:位演算法訓練3
阿新 • • 發佈:2018-12-17
題目:輸入一個整數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; }