整数移位1(超级繁琐版)

该代码实现了一个名为setbits的函数,它接受四个整数参数x、p、n和y,将x中的从位置p开始的n个二进制位设置为y的最右边n位的值,其他位保持不变。函数首先将输入的数字转换为数组并排序,然后进行位操作。最后,输出修改后的x的值。
摘要由CSDN通过智能技术生成

整数移位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]);
	}
	*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值