C语言三个数排列大小的实现方法

这个题简单,也有很多的方法,在这里我想用数学的方法解决排序问题。ps:本人是个学渣,程序写的不好,欢迎各位大神指点帮助。

梳理思路:

以1 2 3为例 先考虑我们所有的可能输入类型(这里不一一列举):1 2 3;3 2 1 ;2 1 3;1 1 1;1 2 2;1 2 1;整体的思路为输入三个数后,我们从中取两个数,在这两个数中选出最大的后将最大的数与第三个数做差比较这里请参考代码理解;

代码:

#include<stdio.h>
int comp(int x,int y)
{
return x>y?x:y;
}
int main()
{
int i,j,k;
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
j=comp(a,b);//j为两个数里最大的值
k=c;//a+b-j求的是a,b里比较小的那个数;
if(j-k<0){printf("%d %d %d",k,j,a+b-j);return 0;} //说明K最大按顺序输出就可以了1 2 3;2 2 3
if(j-k>=a+b-j){printf("%d %d %d",j,a+b-j,k);return 0;}//3 2 1
if(j-k<a+b-j){printf("%d %d %d",j,k,a+b-j);return 0;}// 3 2 3
}

总结:

其实这个代码本质也和用if语句比较大小排序差不多,只不过这里不需要每次都调用三个if语句,直接一条if语句便可输出答案效率更高一点。

以上这篇C语言三个数排列大小的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • C语言三个数排列大小的实现方法

    这个题简单,也有很多的方法,在这里我想用数学的方法解决排序问题.ps:本人是个学渣,程序写的不好,欢迎各位大神指点帮助. 梳理思路: 以1 2 3为例 先考虑我们所有的可能输入类型(这里不一一列举):1 2 3:3 2 1 :2 1 3:1 1 1:1 2 2:1 2 1:整体的思路为输入三个数后,我们从中取两个数,在这两个数中选出最大的后将最大的数与第三个数做差比较这里请参考代码理解: 代码: #include<stdio.h> int comp(int x,int y) { return

  • vbscript 三个数比较大小的实现代码

    复制代码 代码如下: dim a,b,c a =inputbox ("请输入0-99的整数且不能重复更不要用汉字和字母") b =inputbox ("请输入0-99的整数且不能重复更不要用汉字和字母") c =inputbox ("请输入0-99的整数且不能重复更不要用汉字和字母") if not(IsNUmberic(a) and IsNUmberic(b) and IsNUmberic(c)) then msgbox "不乖哦&g

  • Python编程学习之如何判断3个数的大小

    前言 大部分初学编程的人来说刚开始都会练习判断两个数或者三个数的大小,来熟悉某种语言的特性和最基本的if,else循环,当我们学习了更高级的语法知识后,又会有不同的实现方式,比如这道练习题依次接收用户输入的3个数,排序后打印现在我们来看一下在Python中都有哪些方法来实现: 1, 采用分支结构,用最基本的if和else来实现: a = int(input('a>>>')) b = int(input('b>>>')) c = int(input('c>>&

  • C语言指针和数组深入探究使用方法

    目录 1.数组参数和指针参数 1.1 一维数组传参 1.2 一级指针传参 1.3 二维数组参数和二级指针参数 1.4 野指针的问题 2.函数指针 3.函数指针数组 4.指向函数数组的指针 5.回调函数 6.一道笔试题 1.数组参数和指针参数 1.1 一维数组传参 这里在前几期我们已经初略的见识过了,但是这里我们要提一个概念,数组给函数传参是会发生降维的,降维成什么呢?我们看代码: 这里通过打印形参的大小,发现是 4,其实也不奇怪,目前我们是 32 位操作环境,所以一个指针也就是 4 个字节,所以

  • Go语言实现的排列组合问题实例(n个数中取m个)

    本文实例讲述了Go语言实现的排列组合问题.分享给大家供大家参考,具体如下: (一)组合问题 组合是一个基本的数学问题,本程序的目标是输出从n个元素中取m个的所有组合. 例如从[1,2,3]中取出2个数,一共有3中组合:[1,2],[1,3],[2,3].(组合不考虑顺序,即[1,2]和[2,1]属同一个组合) 本程序的思路(来自网上其他大神): (1)创建有n个元素数组,数组元素的值为1表示选中,为0则没选中. (2)初始化,将数组前m个元素置1,表示第一个组合为前m个数. (3)从左到右扫描数

  • Java语言----三种循环语句的区别介绍

    第一种:for循环 循环结构for语句的格式: for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体;   } eg: class Dome_For2{ public static void main(String[] args) { //System.out.println("Hello World!"); //求1-10的偶数的和 int sum = 0; for (int i = 1;i<=10 ; i++ ) { if (i%2 ==0) { //判断语句

  • C语言实现打印杨辉三角的方法详细(三种方法)

    目录 题目描述 问题分析 1. 使用数组法(打印直角三角) 2. 使用数组法(打印等腰三角) 3. 使用公式法(打印等腰三角) 网上参考 题目描述 打印杨辉三角(前N行) 问题分析 杨辉三角是中国古代数学的杰出研究成果之一,它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合. 杨辉三角的部分规律: 每个数等于它上方两数之和. 每行数字左右对称,由1开始逐渐变大. 第n行的数字有n项. 第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同

  • C语言三分钟精通时间复杂度与空间复杂度

    目录 一.时间复杂度 1)O(n)的含义 2)复杂表达式的简化 3)O(n)不一定优于O(n^2) ​4)递归的时间复杂度 二.空间复杂度 1)O(1)空间复杂度​ 2)​​​​​​​O(n)空间复杂度​ 3)​​​​​​​O(mn)空间 复杂度​ 4)递归算法空间算法复杂度分析​ 一.时间复杂度 1)O(n)的含义 程序消耗的时间用算法的操作单元数来表示 假设数据的规模为n,则用f(n)表示操作单元数的大小,而f(n)常被简化 O表示的是一般的情况,而不是上界或下界.并且它是在数据量级非常大的

  • C语言三种方法解决轮转数组问题

    目录 题目 1.题目描述 2.要求 3.原题链接 二.相关知识点 三.解决思路 旋转法 直接法 空间换取时间 题目 1.题目描述 给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数. 示例 1: 输入: nums = [1,2,3,4,5,6,7], k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: [5,6,7,1,2,3,4] 2.要求 进阶

  • C语言实现猜数字大小的游戏

    本文实例为大家分享了C语言实现猜数字大小的具体代码,供大家参考,具体内容如下 void menu() void menu() { printf("******** 猜数字游戏 ********\n"); printf("*********** 1.开始 *************\n"); printf("*********** 0.退出 *************\n"); } 简单的一个菜单用于显示. void game() void gam

随机推荐