操作符编程练习题
一. 选择题
#include <stdio.h>
int i;
int main()
{
i--;
if (i > sizeof(i))
{
printf(">\n");
}
else
{
printf("<\n");
}
return 0;
}
A.> B.< C.不输出 D.程序有问题
这一题的正确答案是A
这里有三个知识需要知道
1 全局变量未定义的默认值是0
2 局部变量未定义的默认值是随机值
3 sizof的结果是一个无符号数
当i与sizeof比较的时候 自然也就转化成一个无符号数
然后-1的无符号数是特别大的 所以这一题选择A >
二. 打印整数二进制的奇数位和偶数位
这道题目也没什么难度
需要注意的有两点
1 要按位与再位移之后才能得到一个二进制位
2 要注意从数据的高位往数据的低位打印
关于什么是数据的高位和低位
可以参考这篇文章 顺便复习下 大端法 小端法
代码如下
void Printbit(int num)
{
for(int i=31; i>=1; i-=2)
{
printf("%d ", (num>>i)&1);
}
printf("\n");
for(int i=30; i>=0; i-=2)
{
printf("%d ", (num>>i)&1);
}
printf("\n");
}
三. 最大公约数和最小公倍数的计算
我们不讲题
这里直接给出计算 最大公约数和最小公倍数的公式
最大公约数:
long long m =0;
long long n =0;
long long m1=m;
long long n1=n;
long long r=0;
while(r=n1%m1)
{
n1=m1;
m1=r;
}
printf("%lld",m*n/m1+m1);
这里的m1即为最大公约数
最小公倍数:(m*n) / m1
即 两个数相乘再减去最大公约数就可以得到最小公倍数