C语言实现三个整数的排序
2018-03-15 09:24
267 查看
/* * 文件名:三个数排序.c * 功能描述: * 任意输入三个整数,对其进行排序 */ #include <stdio.h> #include <stdlib.h> int main(void) { int a, b, c; fprintf(stdout, "请输入三个整数:"); /* 获取并检查用户输入 */ while (fscanf(stdin, "%d%d%d", &a, &b, &c) != 3) { fprintf(stderr, "输入错误!请重新输入:"); while (fgetc(stdin) != '\n'); /* 去掉多余的非法字符 */ } /* 确保法:从小到大排序 */ /* 确保 a < b < c */ fprintf(stdout, "使用\033[33m确保法\e[0m从小到大排序为:"); if (a > b) { /* 使用临时变量进行交换 */ int temp = a; a = b; b = temp; } if (a > c) { /* 使用互补的方法进行交换 */ /* 该方法存在溢出风险,只适用于较小的整数 */ a = a + c; c = a - c; a = a - c; } if (b > c) { /* 使用按位异或进行交换 */ /* 该方法只能用于整数 */ b = b ^ c; c = b ^ c; b = b ^ c; } fprintf(stdout, "%d %d %d\n", a, b, c); /* 假定法:从大到小进行排序 */ fprintf(stdout, "使用\033[33m假定法\e[0m从大到排小序为:"); /* 假定 a 最大 */ if (a > b && a > c) { if (b > c) { fprintf(stdout, "%d %d %d\n", a, b, c); } else { fprintf(stdout, "%d %d %d\n", a, c, b); } } /* 假定 b 最大 */ else if (b > a && b > c) { a > c ? fprintf(stdout, "%d %d %d\n", b, a, c) : \ fprintf(stdout, "%d %d %d\n", b, c, a); } /* 假定 c 最大 */ else { a > b ? fprintf(stdout, "%d %d %d\n", c, a, b) : \ fprintf(stdout, "%d %d %d\n", c, b, a); } return 0; }
相关文章推荐
- C语言实验——求三个整数的最大值(Java实现)
- 用C语言编写函数实现一个整数计算机,程序接受三个参数,第一个参数为操作项,后两个参数为操作数。
- 【C语言】【面试题】使用main函数的参数,实现一个整数计算机,程序可以接受三个参数
- 【C语言】【面试题】使用main函数的参数,实现一个整数计算机,程序可以接受三个参数
- C语言:实现N个整数排序,并插入一个整数!
- C语言 指针方法实现三个数排序
- C语言实现冒泡排序-整数排序
- 用C语言编写函数实现一个整数计算机,程序接受三个参数,第一个参数为操作项,后两个参数为操作数。
- 初学C语言:使用指针变量的方式进行三个整数的排序
- EKAlgorithms-常用数据结构Objective-C语言实现一数组排序
- 快速排序的实现(c语言)
- (数据结构排序的实验四)快速,冒泡,简单选择,直接插入排序的c语言实现!!
- C语言实现合并排序
- 黑马程序员_iOS_C语言实现排序、查找和插入
- 快速排序---C语言实现
- 【源码】将一个整数的每位数分解并按逆序放入一个数组中(用递归算法)(C语言实现)
- 桶排序及C语言实现
- 合并排序的c语言实现
- 插入排序及C语言实现
- 【C++】实现整数排序