C 取一个char a从右端开始的2-5位

该博客介绍了一段C语言代码,用于从一个char类型的变量中提取从右端开始的第2到第5位。通过右移操作和位与运算实现了这一功能,适用于位操作的学习和理解。
#include <stdio.h>
//取一个char a从右端开始的2-5位 
//1.先使a右移2位:a>>2
//目的:要取出的那几位移到最右端

//2.设置一个低四位全为1,其余全为0的数
//  ~(~0<<4)

//3.将上面的 1 2进行&运算
//  (a>>4)&~(~0<<4)
 
void main()
{
	char a,b,c,d;
	
	printf("请输入待检验的数字:\n");
	scanf("%d",&a);
	b=a>>2;
	c=~(~0<<4);
	d=b&c;
	
	printf("%d\n",d);
}
题目描述 公司正在开发一种能极高速处理复制与粘贴操作的文本编辑器.作为 JOI 公司的优秀程序员,你被委以核心复制与粘贴处理模块的测试任务. 你必须编写一个精确且高速的程序. 具体任务如下:初始时,文件内容为字符串S. 随后,将执行 N次复制与粘贴操作.第i次操作的含义是: 从位置 A_i到位置B_i的子串被复制,并将复制得到的子串插入到原字符串的位置 C_i处. 这里,“位置x”指从字符串开头起第x个字符之后的位置位置 0 表示字符串开头). 例如,对于字符串 `copypaste`, 位置 6 表示字符 ‘a’ 与 ‘s’ 之间;位置 9 表示字符 ‘e’ 之后,即字符串末尾. 但需注意,若操作后字符串长度超过M,则从字符串右开始依次删除字符,直至长度恰好为M. 给定整数K、字符串长度上限M、初始字符串S、操作次数N,以及N次复制与粘贴操作的指令,编写程序,求出操作后字符串的前K个字符. 输入 - 第 1 行:包含两个整数K、M,以空格分隔.其中K表示需输出的字符数,M表示字符串长度的上限. -2 行:包含字符串S,表示初始字符串. - 第 3 行:包含整数N,表示操作次数. - 接下来的N行中,第i行(1 <= i <=N)包含三个整数A_i、B_i、C_i,以空格分隔.表示第i次操作是将从位置A_i到位置B_i的子串复制,并插入到位置C_i处. 输出 输出执行 N 次操作后所得字符串的前 K 个字符,占一行。 样例输入 Copy 2 18 copypaste 4 3 6 8 1 5 2 4 12 1 17 18 0 样例输出 Copy ac 提示 在这个例子中,N=4 次复制与粘贴操作按如下方式进行: 初始字符串为 copypaste。 第 1 次操作中,从位置 3 到位置 6 的子串 ypa 被复制,并在位置 8 插入粘贴,得到字符串 copypastypae。 第 2 次操作中,从位置 1 到位置 5 的子串 opyp 被复制,并在位置 2 插入粘贴,得到字符串 coopyppypastypae。 第 3 次操作中,从位置 4 到位置 12 的子串 yppypast 被复制,并在位置 1 插入粘贴,得到字符串 cyppypastooypyppypastypae,但由于长度超过 M=18,因此从右开始删除字符,最终得到字符串 cyppypastooypyppypa。 第 4 次操作中,从位置 17 到位置 18 的子串 a 被复制,并在位置 0 插入粘贴,得到字符串 acypypastooypyppypa,但由于长度超过 M=18,因此从右开始删除字符,最终得到字符串 acypypastooypyppyp。 因此,操作后字符串 acypypastooypyppyp 的前 K=2字符为 ac,输出该结果 用c语言实现这个算法
最新发布
11-27
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值