鸦领主 发表于 2020-11-29 18:31:14

C语言学习第七天 位运算练习

本帖最后由 鸦领主 于 2020-11-29 18:31 编辑

1.输入一个年份判断是否是闰年(闰年判定方法:能被400整除。或者能被4整除但不能被100整除。)
#include<stdio.h>
#include<Windows.h>
int main()
{
    int i;
    while (1)
    {
      system("cls");
      printf("请输入一个年份:");
      scanf_s("%d", &i);
      if (i %4==0 && i %100!=0 || i % 400==0)// i余4余0能被整除而且i余100有余数不能被整除或
            printf("%d是闰年\n", i);            //i余400有余数能被整除俩个条件符合一个就可以
      else
            printf("%d不是闰年\n", i);
      system("pause");
    }
    return 0;


}


2. 使用位运算和循环,做出一个32位十进制转换二进制
#include<stdio.h>
#include<Windows.h>
int main()
{
    while (1)
    {
      system("cls");
      unsigned int i;
      printf("请输入一个42亿以内的数字:");
      scanf_s("%d", &i);
      printf("转换为二进制的结果为:");
      int n = 32;
       while (n>0)
       {
         n--; // 循环32次的n为31-0
         int t;
         t = (i >> n) % 2; //循环32次i>>n=i/2的31次方%2,i>>n=i/2的30次方%2.......
         printf("%d", t);
         
       }
       printf("\n");
       system("\npause");
    }
    return 0;
   
}

3.分别用if和?:对比出a bc三个变量哪个大(变量值自己设定)
if:
#include<stdio.h>
int main()
{
    int a=40, b=30, c=50;
    int n = 0;
    if (a > b)
      n = a;
    else
      n = b;
    if (n < c)
      n = c;
    printf("%d", n);
}
"?:" :
#include<stdio.h>
int main()
{
    int a=40, b=30, c=50;
    int t = a > b ? a : b;
    t=t > c ? t: c;
    printf("%d", t);
    return 0;
}




4.求1到15的阶乘(1*2*3*4*5*6...*15)
#include<stdio.h>
int main()
{
    unsigned __int64 i = 1; //unsigned int 为42亿, unsigned __int64 为42亿*42亿
    int n = 2;
    while (n<16)//循环14次
    {
      i = i * n; //第一次i(1)*n(2)=2, 第二次i(2)*n(3)=6, 第三次i(6)*n(4)=24..........
      printf("*%d的结果为:%I64u\n",n ,i);
      n++;
    }
    return 0;
   
}



页: [1]
查看完整版本: C语言学习第七天 位运算练习