整数移位1
题目问题描述:
编写一个函数setbits(x, p, n, y),该函数返回对x执行下列操作后的结果值:将x中从第p位开始的n个(二进制)位设置为
y中最右边n位的值,x的其余各位保持不变。
结果截图:
实现代码:
// 整数移位1
#include<stdio.h>
void psort(int a[],int len);
int main(){
int a[4]={0};
int b[4]={0};
int lena = 0,lenb = 0;
int num1,num2,p,n;
int k = 0;
scanf("%d%d%d%d",&num1,&p,&n,&num2);
while(num1 > 10){ // 取数1
a[lena++] = num1%10;
num1 /= 10;
}
a[lena] = num1;
while(num2 > 10){ //取数2
b[lenb++] = num2%10;
num2 /= 10;
}
b[lenb] = num2;
psort(a,lena);
for(int j = p-1;j < p+n-1;j++){
if(k < n){
a[j] = b[k++];
}
}
for(int i = lena;i >= 0;i--){
printf("%d",a[i]);
}
printf("\n");
}
void psort(int a[],int len){
int temp;
for(int i = 0;i < len;i++){
for(int j = 0;j < len-i-1;j++){
if(a[j] > a[j+1]){
temp = a[j+1];
a[j+1] = a[j];
a[j] = temp;
}
}
}
}
/*
for(int i = 0;i < lena+1;i++){
printf("%d ",a[i]);
}
printf("\n");
for(i = 0;i < lenb+1;i++){
printf("%d ",b[i]);
}
*/