操作符编程练习题

发布于:2022-12-22 ⋅ 阅读:(575) ⋅ 点赞:(0)

一. 选择题

#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

即 两个数相乘再减去最大公约数就可以得到最小公倍数


网站公告

今日签到

点亮在社区的每一天
去签到