1. 程式人生 > >Linuxc基礎 八

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語言基礎就會慢慢的積累邏輯思維也會變的更好。