今天写了几个有趣的的程序,对于我来说这几个程序是真的难。
代码
- 程序的题目内容:输入一个整数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;
- 程序题目内容:输入一个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语言基础就会慢慢的积累逻辑思维也会变的更好。