C语言刷题(一)

1、依次将10个数输入,要求输出其中最大的数

思路:
1、使用循环,将10个数存在数组里
2、定义变量max,并将a[0]的值赋给它
3、数组从1开始循环到9,依次与max进行比较,若大于max,将它的值给max
4、最终max的值就是数组中最大的值

2、有3个数a,b,c,要求按从大到小的顺序将他们输出。(或者由小到大的顺序)

思路1:
把三个数存在数组里,对他们进行排序后输出
思路2:
1、将a与b进行比较,若a小于b,将a与b的值进行交换
2、将a与c进行比较,若a小于c,将a与c的值进行交换
两次交换后,a现在是三个数中的最大值,b和c不是最大,但二者顺序还不确定
3、将b与c进行比较,若b小于c,将b与c的值进行交换
顺序输出a、b、c,此时就是从大到小的顺序
想要从小到大的顺序,可以在比较的地方反过来,也可以反过来打印c、b、a

3、将100-200之间的素数输出

素数的概念:只能被1和本身整除
那么我们判断一个数x是否为素数,可以从2到x-1去判断能否整除,2-x-1中有数可以整除,那么就不是素数,若没有,那么就是素数
而我们要输出100-200直接的素数,那么我们就可以写一个100到200的循环,之后对每次循环的i进行是否素数的判断,若是素数,就对其进行输出

示例代码:

for(int i=100;i<=200)//进行100到200的循环
{
	int flag=1;//使用flag标记是否是素数,若能整除,那么就把他标记为0,所以这里先初始化为与其相反的是素数,也就是1
	for(int j=2;j<=i-1;j++)//进行2到x-1的循环,里边判断是否可以整除
	{
		if(i%j==0)//判断是是否可以整除
		{
			//若能整除,说明不是素数,将flag赋值为0,本次循环到这里就可以结束了
			flag=0;
			break;
		}
	}
	//循环结束之后,查看flag的值,若flag=1,说明整个循环期间,没有可以整除的,flag没有被改变,也就是这次大循环中的i是素数,那么就输出它
	if(flag==1)
	{
		printf(%d”,i);
	}
}

4、求两个数m和n的最大公约数和最小公倍数

首先,最大公约数,也就是最大公因数,即最大的、可以同时整除m和n的数
那么,首先,一个数的因数有1和它本身
所以两个数的最大公因数,肯定是小于等于两个数中较小的那个数的
等于较小的那个数的时候,说明m和n是倍数关系
而最小公倍数,有一个计算公式,
最小公倍数=(m*n)/最大公约数

那么我们先求最大公约数
由于最大公约数肯定小于等于m和n较小的那个数,所以先把较小的数得到
之后,与求素数类似的
我们从这个数开始,看这个数能否同时对m和n整除,若可以,那么它就是最大公约数,若不能,对其减一,在下一次循环中再次判断是否可以整除m和n

示例代码:

#include<stdio.h>
int main()
{
	int m = 0;
	int n = 0;
	scanf("%d %d", &m, &n);//输入两个数
	int i = 0;//使用i来存储较小的那个数,并在后续用作循环
	if (m > n)//将两个数中较小的那个赋值给i,此处可以使用三目运算符代替
	{
		i = n;
	}
	else
	{
		i = m;
	}

	for (; i > 1; i--)//此处i已经在上边的if中有一个初值了,所以在这里的循环中可以不进行初始化,所以空着
	{
		if (m % i == 0 && n % i == 0)//判断本次循环中的i能否整除m和n
		{
			//若能整除,结束循环,此时的i就是最大公约数
			break;
		}
	}
	//循环结束的时候,i是最大数公约数
	printf("最大公约数是: %d\n", i);
	//使用公式,计算最小公倍数并输出
	printf("最小公倍数是: %d", (m * n) / i);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值