C语言经典100例问题,取一个整数a从右端开始的4~7位,求助,高分!
但是我按下面的程序得到的结果好像是错的,求助,高分。程序分析:可以这样考虑:(1)先使a右移4位。(2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4)(3)将...
但是我按下面的程序得到的结果好像是错的,求助,高分。
程序分析:可以这样考虑:
(1)先使a右移4位。
(2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4)
(3)将上面二者进行&运算。
2.程序源代码:
main()
{
unsigned a,b,c,d;
scanf("%o",&a);
b=a>>4;
c=~(~0<<4);
d=b&c;
printf("%o\n%o\n",a,d);
} 展开
程序分析:可以这样考虑:
(1)先使a右移4位。
(2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4)
(3)将上面二者进行&运算。
2.程序源代码:
main()
{
unsigned a,b,c,d;
scanf("%o",&a);
b=a>>4;
c=~(~0<<4);
d=b&c;
printf("%o\n%o\n",a,d);
} 展开
展开全部
思路是完全正确的,但不知你的第4~7位是从0开始算还是从1开始算呢
如果最后一位算是右端第1位,那么b = a>>3.
其他都没问题
如果最后一位算是右端第1位,那么b = a>>3.
其他都没问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
%o是八进制输入啊
你用%d 或%x试试,更明显观察测试结果。
你用%d 或%x试试,更明显观察测试结果。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一个可行的方法,仅供参考:
#include <stdio.h>
int main(void)
{
long a;
int b[10],i,j;
scanf("%ld",&a);
for(i=0;a>0;i++)
{
b[i]=a%10;
a=a/10;
}
for(j=1;j<=4;j++)
printf("%d",b[i-j-3]);
getchar();getchar();
}
#include <stdio.h>
int main(void)
{
long a;
int b[10],i,j;
scanf("%ld",&a);
for(i=0;a>0;i++)
{
b[i]=a%10;
a=a/10;
}
for(j=1;j<=4;j++)
printf("%d",b[i-j-3]);
getchar();getchar();
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询