【初学者入门C语言】之习题篇(一)

【初学者入门C语言】之习题篇(一),第1张

个人主页:天寒雨落的博客_CSDN博客-C,CSDN竞赛,python领域博主

💬 刷题网站:一款立志于C语言的题库网站蓝桥杯ACM训练系统 - C语言网 (dotcpp.com) 

 特别标注:该博主将长期更新c语言内容,初学c语言的友友们,订阅我的《初学者入门C语言》专栏,关注博主不迷路!

目录

一、最大公约数与最小公倍数

1.题目

2.思路

3.代码

4.运行结果

5.易错点

二、求三个数字的最大值

1.题目

2.思路

3.方法一

代码

运行结果

 4.方法二

三目运算符?:

代码

执行结果


一、最大公约数与最小公倍数 1.题目

输入两个正整数m和n,求其最大公约数和最小公倍数。

2.思路

用辗转相除法(额,这东西能理解就理解不能理解就背住吧)
求最大公约数:先比较两个数的大小,把最大的给m,小的给n,再用m除以n,如果余数y为0,则就是最大公约数,否则,将n赋给m,将余数y赋给n,为什么要这样赋呢?因为上面运算的时候可以明显的知道余数y是小于n的不然它怎么是余数呢,然后就接着用m除以n,直到余数y为0,否则就重复前面的运算。

求最小公倍数:就是n和m的乘积除以最大公约数,即(n*m)/最大公约数

3.代码
#include "stdio.h"

int main() {
	int m, n, y, t, p, q;
	scanf("%d%d", &m, &n);
	p = m;
	q = n;

	if (n > m) {
		t = m;
		m = n;
		n = t;
	}

	while (m % n) {
		y = m % n;
		m = n;
		n = y;
	}

	printf("最大公约数为:%d,最小公倍数为:%d", n, (p * q) / n);
	return 0;
}
4.运行结果

5.易错点

在我们判断n大于m,想交换m和n的值的时候,不能直接写成m=n,要写成t=m;m=n;n=t;在这里要引入一个中间变量t

那么大家想一下然后不引用中间变量,然后只用两个变量就实现交换呢?

可以这样:

m=m+n;//此时的m为m与n的和

n=m-n;//此时n为以前的m

m=m-n;//此时m为以前的n

总结一下也就是说:

已知int n,m;

{m=m+n;n=m-n;m=m-n}等效于{int t;t = m;m = n;n = t;}

看到这里真的是不得不感叹一句数学知识博大精深啊!

二、求三个数字的最大值 1.题目

输入x,y,z三个数,比较其大小

2.思路

方法一:两两比较,比较两回就出来了

方法二:用三目运算符

3.方法一 代码
#include "stdio.h"

int main() {
	int x, y, z, max;
	scanf("%d%d%d", &x, &y, &z);
	max = x;

	if (y > max) {
		max = y;
	}

	if (z > max) {
		max = z;
	}

	printf("%d", max);
	return 0;
}
运行结果

 4.方法二 三目运算符?:

需要先补充一下三目运算符?:

<表达式1> ?<表达式2> :<表达式3>,意思是满足表达式1就执行表达式2,否则执行表达式3.

使用格式:x>y?x:y,判断x大于y吗,如果大于则该表达式的值为x,否则为y

代码
#include"stdio.h"

int main()
{
	int x, y, z, max;
	
	scanf("%d%d%d", &x, &y, &z);
	
	max = (x>y?x:y)>z?(x>y?x:y):z;
	
	printf("%d", max);
	
	return 0;
}
执行结果

 max = (x>y?x:y)>z?(x>y?x:y):z;相当于max = x>y ? x:y; max = z>max ? z:max;

各位C语言的初学者有问题随时都可以问我,随时为您解惑!!!

👍+✏️+⭐️是对博主最大的鼓励与支持!!!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/3001834.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-27
下一篇 2022-09-27

发表评论

登录后才能评论

评论列表(0条)

保存