将三个数按从大到小输出。
多个条件判断语句实现,思路要清晰。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
int a, b, c,d;
printf("请输入三个数字用回车隔开:");
scanf("%d %d %d", &a, &b, &c);
if (b < a)
{
d = a; a = b; b = d;
}
if (c < b) {
d = b; b = c; c = d;
}
if (b < a)
{
d = a; a = b; b = d;
}
printf("%d %d %d",c,b,a );
system("pause");
return 0;
}
求两个数的最大公约数。
一. 辗转相除法
使用while循环实现辗转反侧
首先取xy的绝对值ab,如果a不能被b整除,则将b赋值给a,余数z赋值给b,重复执行直到a能被b整除。则返回y的值即为最大公约数。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main() {
int x, y, a, b;
int z = 0;
printf("请输入两个数:");
scanf("%d %d", &x, &y);
a = abs(x);
b = abs(y);
while (z = a % b) {
a = b;
b = z;
}
printf("最大公约数为:%d\n", b);
system("pause");
return 0;
}
首先写一个判断数字大小的函数,然后再求绝对值的基础上,找出最小数并减一赋值给z。给两个数分别求模。当a,b模z都为0时,z为最大公约数,否则z–,继续取模。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int min(int x, int y) {
return x > y ? y : x;
}
int main() {
int x, y, a, b;
int z = 0;
printf("请输入两个数:");
scanf("%d %d", &x, &y);
a = abs(x);
b = abs(y);
for (z = min(a, b); z > 0; z--) //z为ab中的最小的一个
{
if ((a%z == 0) && (b%z == 0)) //a,b模z都为0时,z为最大公约数,否则z--,继续取模
{
break;
}
}
printf("最大公约数为:%d\n", z);
system("pause");
return 0;
}