|
看到群里的小伙伴还在问我 输入几个数,让其从大到小排列(或从小到大排列)
诸如此类的问题,作为一个宠粉的群主,当然是帮大家归纳总结一下啦!!(咳咳!所以还不进一下我的学习交流群吗 嘻嘻)
老规矩 废话不多说,直接上代码!!!(希望大家给我点赞收藏一下 靴靴!)
所有的代码都是用的VS2019!
【程序一】输入三个数,让其从大到小排列。
法一:
#include <stdio.h>
int main()
{
int a, b, c, t;
scanf_s(&#34;%d %d %d&#34;, &a, &b, &c);
if (a < b)
{
t = a;
a = b;
b = t;
}
if (a < c)
{
t = a;
a = c;
c = t;
}
if (b < c)
{
t = b;
b = c;
c = t;
}
printf(&#34;%d %d %d&#34;, a, b, c);
return 0;
}
(给小白们解释一下)可以看出代码一共出现了三次if,通过倒数第三行代码
printf(&#34;%d %d %d&#34;,a,b,c); 可以看出:a,b,c的输出顺序是固定不变的,经过算法排列好后的顺序应当是a值最大,b中间,c最小。
所以 第一个 if 的(a<b)目的就是通过比大小来对a,b进行赋值,由大到小排列,大的值赋给a,小的值赋给b。
第二个 if 的(a<c) ,我们知道C语言是从上到下顺序运行,在经过了第一个if后,无论是最初赋值(键盘输入值)的a大还是b大,此时的a代表的就是在第一个if经过比较得到的较大的那个值,第二个if的作用就是得到三个数中的最大值并将其赋予a,便得到了三个之中的最大值。
同理,第三个if的作用便是得到中间值和最小值并分别将其赋给b和c。
法二:输入三个数,让其从大到小排列
#include <stdio.h>
int main()
{
int a, b, c, max, min;
scanf_s(&#34;%d %d %d&#34;, &a, &b, &c);
if (a > b)
{
max = a;
min = b;
}
else
{
max = b;
min = a;
}
if (c < min)
{
min = c;
}
if (c > max)
{
max = c;
}
printf(&#34;%d %d %d\n&#34;, max, a + b + c - max - min, min);
}
法三:输入三个数,让其从大到小排列
#include<stdio.h>
#include<math.h>
int main()
{
//从键盘输入三个整数x, y和z,按从大到小的顺序输出它们的值。
int i;
int x, y, z;
scanf_s(&#34;%d%d%d&#34;, &x, &y, &z);
if (x > y && y > z)
{
printf(&#34;%d\t%d\t%d\n&#34;, x, y, z);
}
if (y < z && z < x)
{
printf(&#34;%d\t%d\t%d\n&#34;, x, z, y);
}
if (x < y && y < z)
{
printf(&#34;%d\t%d\t%d\n&#34;, z, y, x);
}
if (y < z && y < x)
{
printf(&#34;%d\t%d\t%d\n&#34;, z, x, y);
}
if (x < y && y > z && z < x)
{
printf(&#34;%d\t%d\t%d\n&#34;, y, x, z);
}
if (y > z && z > x)
{
printf(&#34;%d\t%d\t%d\n&#34;, y, z, x);
}
return 0;
}
【程序二】输入三个数,让其从小到大排列。
法一:
#include<stdio.h>
int main()
{
int a, b, c;
int temp;//临时变量
scanf_s(&#34;%d %d %d&#34;, &a, &b, &c);
if (a > b)
{
temp = a;
a = b;
b = temp;
}
if (a > c)
{
temp = a;
a = c;
c = temp;
}
if (b > c)
{
temp = b;
b = c;
c = temp;
}
printf(&#34;从小到大的顺序:%d\t%d\t%d\n&#34;, a, b, c);
return 0;
}
法二:(输入三个数,让其从小到大排列)
#include <stdio.h>
#include <stdlib.h>
void swap(int* x, int* y)
{
int temp;
if (*x > *y)
{
temp = *x;
*x = *y;
*y = temp;
}
}
void exchange(int* a, int* b, int* c);
int main()//输入3个整数,按从小到大在顺序输出
{
int a, b, c, * p1, * p2, * p3;
scanf_s(&#34;%d%d%d&#34;, &a, &b, &c);
p1 = &a;
p2 = &b;
p3 = &c;
exchange(p1, p2, p3);
printf(&#34;%d %d %d\n&#34;, a, b, c);
return 0;
}
void exchange(int* a, int* b, int* c)
{
swap(a, b);
swap(a, c);
swap(b, c);
}
法三:(输入三个数,让其从小到大排列)
#include<stdio.h> //输入三个数 从小到大排序输出
int main()
{
int a, b, c, t;
scanf_s(&#34;%d%d%d&#34;, &a, &b, &c);
if (a > b) //如果a>b a与b交换值 也就是把大的数放在后面
{
t = b;
b = a;
a = t;
}
if (a > c) //a再于c比较 保证a最小
{
t = c;
c = a;
a = t;
}
if (b > c) //两个较大的值再比较,再交换最大值
{
t = c;
c = b;
b = t;
}
printf(&#34;%d %d %d\n&#34;, a, b, c);
return 0;
}
今天就给大家带来三个从大到小排列和三个从小到大排列的代码!!!希望对你们有所帮助
有没有体会到编程的乐趣呢!只要掌握了相应的知识,就能够把一个题目玩出花样来!这真的是非常愉悦的体验哦~
恭喜你又学会了一个小知识!!(学会了就赶快行动起来把)
码字不易!都看到这啦 可以给我点赞收藏支持一下 万分感谢
今天就分享到这!!
如果有学习上的问题或者想要更多学习资料,项目源码,视频教学可以点击我的主页,进群,欢迎大家积极讨论!!!
群主是我自己啦! 欢迎大家进群交流!
|
|