(C语言篇)分支循环的一些基础练习

本文是为编程新手准备的一系列练习题,包括将三个整数按从大到小排序、打印1-100之间的3的倍数、求两个数的最大公约数、找出1000-2000之间的闰年以及打印100-200之间的素数。解题思路详细,适合初学者自我练习和巩固基础知识。
摘要由CSDN通过智能技术生成

前言:这次写的练习题主要针对与刚接触编程的小白大佬可以跳过了(就像博主),在把题目记录下来方便自己复习用的同时也能帮助小白,当然解这些题目的方法也不会是最简的,最好的,大佬们也可以看看有哪里写错了和不足的地方,可以指出。

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

例如:
输入:2 3 1
输出:3 2 1

#include <stdio.h>

int main()
{
	int a, b, c;
	scanf("%d %d %d", &a, &b, &c);
	if (a <= b)
	{
		int tmp = a;
		a = b;
		b = tmp;
	}
	if (a <= c)//a与b、c比较大小,最后得出a最大。
	{
		int tmp = a;
		a = c;
		c = tmp;
	}
	if (b <= c)//b与c比较大小,最后得出第二大
	{
		int tmp = b;
		b = c;
		c = tmp;
	}
	printf("%d %d %d", a, b, c);
	return 0;
}

解题思路:
注:这里的tmep之所以能重复利用是因为其生命周期的原因,博主之前的文章有说过,这里就不再多讲了。
1、首先需要拿出一个变量当做最大值,可以是a b c的其中一个,当然拿a是最好的,因为它是按照顺序来的。
2、确认好最大值为变量a后,即a分别与b、c进行比较,如果a <= b则b的值赋给a,a的值赋给b,如果是a <= c后则c的值赋给a,a的值赋给c。如果两个条件不成则证明a的值大于b、c。这样就可以选出最大值a了。
3、最后再对b、c进行比较选出第二大的值。

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

#include <stdio.h>

int main()
{
	int i = 0;
	for (i = 1; i <= 100; i++)//这里是循环1~100的数
	{
		if (i % 3 == 0)//判断能不能被3整除,即是不是3的倍数,是3的倍数就把这个数打印出来。
		{
			printf("%d ", i);
		}
	}
	printf("\n");
	return 0;
}

这题比较简单,思路都在图上。
在这里插入图片描述

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

例如:
输入:20 40
输出:20

#include <stdio.h>
//这题可以用辗转相除法
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	scanf("%d %d", &a ,&b);
	while (c)
	{
		c = a % b;
		a = b;
		b = c;
	}
	printf("%d\n",b);
	return 0;
}

在这里插入图片描述

解题思路:
1、这里先对 a % b 求余数,如果 a 小于 b 循环一次后也会把值给 a 如a = 20 b = 40 , 20 % 40 =10,再赋给 c ,经过a = b, b = c,这两条语句后a和b的值自然交换了,即a = 40 b = 20,这样无论如何 a 都大于 b 了。
2、我们这里用a = 10, b =14来举例,经过一次循环后a = 14, b = 10,
再次循环时c = a % b = 4,继续执行之后语句后得到a = 10 ,b = 4,以此类推最后当,a = 4, b = 2时, 再次循环c = a % b = 0,这时 b 就是a 和 b的最大公约数了。(这里忘记什么是辗转相除法的可以去百度搜搜,博主一开始也是不知道这个,后来去学了之后才看明白)

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

#include <stdio.h>

int main()
{
	int year = 0;
	for (year = 1000; year <= 2000; year++)//循环1000~2000
	{
		if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)//是闰年的条件和上面打印3的倍数是一个道理
		{
			printf("%d ", i);
		}
	}
	return 0;
}

在这里插入图片描述

注:&&的意思与,即其左右两边都要成立才为真,||表示或其两边一边成立就为真。

5.写一个代码:打印100~200之间的素数

#include <stdio.h>

int main()
{
	int i = 0;
	int j = 0;
	for (i = 100; i <= 200; i++)//外层循环100~200的数
	{
		for (j = 2; j < i; j++)//判断外层循环的数是不是素数
		{
			if (i % j == 0)//判断不是素数则停止内层循环
			{
				break;
			}
		}
		if (j == i)
		{
			printf("%d ", i);
		}

	}
	printf("\n");
	return 0;
}

在这里插入图片描述

解题思路:
1、这里我们先循环100~200,即外层循环。
2、素数的判断条件为自能被1和自身整除的数。这也是要写内层循环的原因,如:想要判断101是不是素数,就需要用2~100的数来除101,如果有一个数能整除101就不为素数(即i % j == 0),这时就需要结束内层循环了 ,如果内层循环结束了,当j ==101(i)时就证明 i 没有被 2 ~ 100的数整除,
就打印这个 i(即素数) 。(解释一下 j = 101,当循环到100时,不能整除101,所以继续 j++ 再判断条件不成立。)

好了,这一期练习就到这里了,我们下期再见。

  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没完没了的麦当

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值