C语言初阶练习1.0

简介: 目录1.写代码将三个整数数按从大到小输出。​2.写一个代码打印1-100之间所有3的倍数的数字3.给定两个数,求这两个数的最大公约数4.打印1000年到2000年之间的闰年​5.打印100~200之间的素数

1.写代码将三个整数数按从大到小输出。

#include<stdio.h>
int main()
{
  int a = 0;
  int b = 0;
  int c = 0;
  int tmp = 0;
  //输入
  scanf("%d %d %d", &a, &b, &c);
  //计算
  //最大值放在a中,最小值放在c中
  //a和b的较大值放在a中
  if (a < b)
  {
    tmp = a;
    a = b;
    b = tmp;
  }
  //把a和c的较大值放在a中
    if (a < c)
  {
    tmp = a;;
    a = c;
    c = tmp;
  }
  //把b和c的较大值放在b中
  if (b < c)
  {
    tmp = b;;
    b = c;
    c = tmp;
  }
  //输出
  printf("%d %d %d", a, b, c);
  return 0;
}

image.png

2.写一个代码打印1-100之间所有3的倍数的数字

法一:

#include<stdio.h>
int main()
{
  int i = 0;
  for (i = 3; i <= 100; i += 3)
  {
    printf("%d ", i);
  }
  return 0;
}

法二:

#include<stdio.h>
int main()
{
  int i = 0;
  for (i = 1; i <= 100; i++)
  {
    if (i % 3 == 0)
      printf("%d ", i);
  }
  return 0;
}

image.png

3.给定两个数,求这两个数的最大公约数

法一:

#include<stdio.h>
int main()
{
  int m = 0;
  int n = 0;
  int ret = 0;
  scanf("%d %d", &m, &n);
  //求最大公约数
  //求m和n较小值,假设就是最大公约数
  if (m > n)
    ret = n;
  else
    ret = m;
  while (1)
  {
    if (m % ret == 0 && n % ret == 0)
    {
      break;
    }
    ret--;
  }
  //输出
  printf("%d\n", ret);
  return 0;
}

法二:辗转相除法

#include<stdio.h>
int main()
{
  int m = 0;
  int n = 0;
  int ret = 0;
  scanf("%d %d", &m, &n);
  while (ret = m % n)
  {
    m = n;
    n = ret;
  }
  printf("%d\n", n);
  return 0;
}

image.png拓展:求最小公倍数,两数相乘除以最大公约数

#include<stdio.h>
int main()
{
  int m = 0;
  int n = 0;
  int ret = 0;
  int s = 0;
  scanf("%d %d", &m, &n);
  s = m * n;
  while (ret = m % n)
  {
    m = n;
    n = ret;
  }
  printf("%d\n", s / n);
  return 0;
}

image.png

4.打印1000年到2000年之间的闰年

法一:

#include<stdio.h>
int main()
{
  int a = 0;
  int count = 0;
  for (a = 1000; a <= 2000; a++)
  {
    //判断y是不是闰年
    if (a % 4 == 0 && a % 100 != 0)
    {
      count++;
      printf("%d ", a);
    }
    if (a % 400 == 0)
    {
      count++;
      printf("%d ", a);
    }
  }
  //输出个数字
  printf("\ncount=%d\n", count);
  return 0;
}

法二:

#include<stdio.h>
int main()
{
  int a = 0;
  int count = 0;
  for (a = 1000; a <= 2000; a++)
  {
    if ((a % 4 == 0) && (a % 100 != 0) || (a % 400 == 0))
    {
      count++;
      printf("%d ", a);
    }
  }
  printf("\ncount=%d\n", count);
  return 0;
}

image.png

5.打印100~200之间的素数

素数也是质数,只能被1和他本身整除的数字就是素数。

法一:

#include<stdio.h>
int main()
{
  int y = 0;
  for (y = 100; y <= 200; y++)
  {
    //判断y是不是素数
    //拿2到y-1的数字去试除y就行
    int n = 0;
    int flag = 1;//假设y是素数
    for (n = 2; n < y; n++)
    {
      if (y % n == 0)
      {
        flag = 0;//y不是素数
        break;
      }
    }
    if (flag == 1)
    {
      printf("%d ", y);
    }
  }
  return 0;
}

法二优化:

#include<stdio.h>
#include<math.h>
int main()
{
  int y = 0;
  int count = 0;
  for (y = 100; y <= 200; y++)
  {
    //判断y是不是素数
    //拿2到y-1的数字去试除y就行
    int n = 0;
    int flag = 1;//假设y是素数
    for (n = 2; n <= sqrt(y); n++)//开平方y---->sqrt(y)
    {
      if (y % n == 0)
      {
        flag = 0;//y不是素数
        break;
      }
    }
    if (flag == 1)
    {
      printf("%d ", y);
      count++;
    }
  }
  printf("\ncount=%d\n", count);
  return 0;
}

image.png

相关文章
|
C语言
C语言初阶:如何判断是否为素数并且输出
C语言初阶:如何判断是否为素数并且输出
107 0
|
算法 C语言 容器
从C语言到C++_18(stack和queue的常用函数+相关练习)力扣(上)
从C语言到C++_18(stack和queue的常用函数+相关练习)力扣
99 0
|
编译器 C语言
【C语言初阶】指针篇—下
【C语言初阶】指针篇—下
|
存储 C语言
【C语言初阶】指针篇—上
【C语言初阶】指针篇—上
C语言练习代码第一篇
C语言练习代码第一篇
|
C语言
【初始C语言8】详细讲解初阶结构体的知识
【初始C语言8】详细讲解初阶结构体的知识
|
存储 前端开发 算法
从C语言到C++_18(stack和queue的常用函数+相关练习)力扣(下)
从C语言到C++_18(stack和queue的常用函数+相关练习)力扣
74 0
|
编译器 C语言