1. 题目:输入一个整数a,再输入两个整数p(p<32),v(0|1),将该整数a的p位设置为v,输出修改后的该整数的二进制表示.
#include <stdio.h>
void replacebit(int n,int p,int v,int num[])
{
int i;
int mask;
int temp;
int len = 0;
temp = n & (1 << (p - 1));
if(v == 1)
{
n = n | (1 << (p - 1));
}
else
{
n = n & (~(1 << (p - 1)));
}
for(i = 0; i < 32; i++)
{
num[i] = ((n >> i) & 1);
}
for(i = 31; i >= 0; i--)
{
printf("%d",num[i]);
}
}
int main()
{
int n;
int p;
int v;
int num[32];
printf("input a integer:\n");
scanf("%d",&n);
printf("input p < 32 and v(0|1):");
scanf("%d%d",&p,&v);
replacebit(n,p,v,num);
return 0;
}
#include <stdio.h>
void replacebit(int n,int p,int v,int num[])
{
int i;
int mask;
int temp;
int len = 0;
temp = n & (1 << (p - 1));
if(v == 1)
{
n = n | (1 << (p - 1));
}
else
{
n = n & (~(1 << (p - 1)));
}
for(i = 0; i < 32; i++)
{
num[i] = ((n >> i) & 1);
}
for(i = 31; i >= 0; i--)
{
printf("%d",num[i]);
}
}
int main()
{
int n;
int p;
int v;
int num[32];
printf("input a integer:\n");
scanf("%d",&n);
printf("input p < 32 and v(0|1):");
scanf("%d%d",&p,&v);
replacebit(n,p,v,num);
return 0;
}