Guido 发表于 2020-10-18 19:51:36

逆向学习第8天_位运算习题

本帖最后由 Guido 于 2020-10-18 20:52 编辑

1.从键盘输入一个表示年份的数(1000~4000),判断该年是否闰年,并输出结果。(四年一润,百年不润,四百年在润)#include<stdio.h>
int main()
{
      int n;
      printf("请输入一个年份数(1000~4000)");
      scanf_s("%d", &n);
      if (n % 4 ==0 && n % 100 != 0 || n % 400 == 0)
                printf("%d年是闰年", n);
      else
                printf("%d年不是闰年", n);
      return 0;
}
2.使用位运算和循环,(不使用除法)在键盘输入一个数字,使用循环语句打印一个32位二进制排列。#include<stdio.h>
int main()
{
      unsigned int n;
      int i=32;
      int k;
      printf("请输入一个42亿以内的数值\n");
      scanf_s("%u", &n);
                while(i>0)
                {
                        k = (n >> i )% 2;
                              printf("%u", k);
                        i--;
                }
      return 0;
}
3.求1到15的阶乘的和。(unsigned int或者double)#include<stdio.h>
//求1到15的阶乘的和。
int main()
{
      int n=1;
      int i=1;
      unsigned __int64 fac=1;    //声明64位的,即8个字节
      for (n; n < 16; n++)
      {
                while (i < n + 1)
                {
                        fac *= i;
                        i++;
                }
                printf("%I64u\n",fac);//打印的时候要记住是%I64u   u表示无符号   %I64d或者%I64u   I一定是大写的
      }
      return 0;
}
4.有整型变量a、b、c,分别用if语句和?:操作符的方式求出其中的最大值。(变量值自己设定)#include<stdio.h>
//int main()
//{
//        int a, b, c,max;
//        printf("请输入三个数值\n");
//        scanf_s("%d%d%d", &a, &b, &c);
//        if (a > b)
//                max = a;
//        else
//                max = b;
//        if (max < c)
//                max = c;
//        printf("最大值为%d", max);
//        return 0;
//}


int main()
        {
        int a, b, c, max;
        printf("请输入三个数值\n");
        scanf_s("%d%d%d", &a, &b, &c);
        (a > b)? max = a: max = b;
        (max < c) ? max = c : max = max;
        printf("最大值为%d", max);
        return 0;
}



页: [1]
查看完整版本: 逆向学习第8天_位运算习题