Linuxc基础 八

今天写了几个有趣的的程序,对于我来说这几个程序是真的难。
代码

  1. 程序的题目内容:输入一个整数a,再输入两个整数p1,p2(p1,p2<32),输出该整数的二进制表示方法中从右端开始的p1到p2位.
int jizh(int a,int p1,int p2)
{
	int temp,i;
	if(p1>p2)
	{
		temp=p2;
		p2=p1;
		p1=temp;
	}
	for(i=p2;i>=p1;i--)
	{
		if(a>>(i-1)&1==1)
		{
			printf("1");
		
		}
		else 
		{
			printf("0");
		
		}
	
	}
}
int main3()
{
	int p1,p2;
	int a;
	
	scanf("%d%d%d",&a,&p1,&p2);
	jizh(a,p1,p2);
	return 0;
  1. 程序题目内容:输入一个32位的整数a,使用按位异或^运算,生成一个新的32位整数b,使得该整数b的每一位等于原整数a中该位左右两边两个bit位的异或结果
int jizh4(int a,int b)
{
	int i;
	for(i=0;i<32;i++)
	{
		if(0==i||31==i)
		{
			b+=(((a>>i)&1)^0)<<i;
		
		}
		else 
		{
			b+=(((a>>(i+1))&1)^((a>>(i-1))&1))<<i;	
		}
	}	
	return b;
}

int main()
{
	int a;
	int b=0;
	scanf("%d",&a);
	
	printf("%d\n",jizh4(a,b));
	
	return 0;

}

总结
今天我写的这两个程序不找其他人程序参照的话我是真的写不出来,一开始对题目意思不理解,之后理解了不知道怎么写程序。从这两个程序也能反映出我的C语言的基础以及逻辑思维不太好,但我相信熟能生巧以后多打程序我的C语言基础就会慢慢的积累逻辑思维也会变的更好。

猜你喜欢

转载自blog.csdn.net/qq_41936758/article/details/84329283