本文目录一览:
1、用C语言比较三个数的大小,并按照从大到小排序
2、如何用函数实现三个数的排序(用的是C语言)
3、c语言编写程序,任意三个数,由大小到排序,源代码如何写!
4、c语言三种排序
5、C语言中从键盘上输入三个数,将之排序后按由大到小的顺序输出
用C语言比较三个数的大小,并按照从大到小排序
#include stdio.h
#include math.h
int main(void)
{
int a,b,c;
printf("请输入任意三个整数a,b,c:");
scanf("%d%d%d",a,b,c);
int s;
if(a < b)s=a,a=b,b=s; // 比较a,b大小,通过赋值,使得a > b
if(a < c)s=a,a=c,c=s; // 进一步比较a,c大小,通过赋值得出最小值,并赋给a
if(b < c)s=b,b=c,c=s; // 最后比较出b,c中的较大值
printf("从大到小的顺序依次是:%d %d %d",c,b,a);
return 0;
}
如何用函数实现三个数的排序(用的是C语言)
一:全局变量
#include stdio.h
int a,b,c; // 定义三个全局变量
void sort() // 不需要参数
{
int t;
if(a < b)
{
t=a;a=b;b=t;
}
if(b < c)
{
t=b;b=c;c=t;
}
if(a < b)
{
t=a;a=b;b=t;
}
}
int main()
{
printf("输入:");
scanf("%d%d%d",a,b,c);
sort();
printf("排序:%d %d %d\n",a,b,c);
return 0;
}
二:指针
#include stdio.h
void sort(int *a, int *b, int *c) // 参数传递方式:地址传递
{
int t;
if(*a < *b)
{
t=*a;*a=*b;*b=t;
}
if(*b < *c)
{
t=*b;*b=*c;*c=t;
}
if(*a < *b)
{
t=*a;*a=*b;*b=t;
}
}
int main()
{
int a,b,c;
printf("输入:");
scanf("%d%d%d",a,b,c);
sort(&a, &b, &c); // 把地址作为参数
printf("排序:%d %d %d\n",a,b,c);
return 0;
}
c语言编写程序,任意三个数,由大小到排序,源代码如何写!
思路:任意三个数按从大到小顺序输出,可以先求出三个数中的最大值和最小值,三个数的和减去最大值和最小值的差就是中间数,接着依次输出。 参考代码:
#include "stdio.h"
int main()
{
int a,b,c,max,min;
scanf("%d%d%d",&a,&b,&c);
max = (a > b) ? a : b;
min = (a < b) ? a : b;
if(c > max) max = c;
if(min > c) min = c;
printf("从大到小排序:%d %d %d\n",max,a+b+c-max-min,min);
}
运行结果:
2 1 3
从大到小排序:3 2 1
c语言三种排序
常用的C语言排序算法主要有三种即冒泡法排序、选择法排序、插入法排序。
一、冒泡排序
是从第一个数开始,依次往后比较,在满足判断条件下进行交换。代码实现(以降序排序为例)
#include stdio.h
int main()
{
int array[10] = { 6,9,7,8,5,3,4,0,1,2 };
int temp;
for (int i = 0; i < 10; i++)
{
// 循环次数
for (int j = 0; j < 10 - i - 1; j++)
{
if (array[j] < array[j+1])
{
// 前面一个数比后面的数大时发生交换
temp = array[j];
array[j] = array[j+1];
array[j + 1] = temp;
}
}
}
// 打印数组
for (int i = 0; i < 10; i++)
printf("%2d", array[i]);
return 0;
}
二、选择排序(以升序为例)
就是在指定下标的数组元素往后(指定下标的元素往往是从第一个元素开始,然后依次往后),找出除指定下标元素外的值与指定元素进行对比,满足条件就进行交换。与冒泡排序的区别可以理解为冒泡排序是相邻的两个值对比,而选择排序是遍历数组,找出数组元素与指定的数组元素进行对比。
#include stdio.h
int main()
{
int array[10] = { 6,9,7,8,5,3,4,0,1,2 };
int temp, index;
for (int i = 0; i < 9; i++)
{
index = i;
for (int j = i; j < 10; j++)
{
if (array[j] < array[index])
index = j;
}
if(i != index)
{
temp = array[i];
array[i] = array[index];
array[index] = temp;
}
}
for(int i=0; i<10; i++)
printf("%2d", array[i]);
return 0;
}
三、快速排序
是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
void QuickSort(int* arr, int size)
{
int temp, i, j;
for(i = 1; i < size; i++)
for(j = i; j > 0; j--)
{
if(arr[j] < arr[j-1])
{
temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}
}
}
C语言中从键盘上输入三个数,将之排序后按由大到小的顺序输出
具体操作方法如下:
#include stdio.h
int main(void)
{
int a,b,c,t;
printf("请输入三个数");
scanf("%d%d%d",a,b,c);
if(a < b)
{
t=a;a=b;b=t;
}
if(b < c)
{
t=b;b=c;c=t;
}
if(a < b)
{
t=a;a=b;b=t;
}
printf("从大到小:%d %d %d",a,b,c);
system("pause");
return 0;
}
注意:中间的 t=a;a=b;b=t
,就是交换a和b的位置,总是把大的换到前面来。
扩展资料:
C语言任意输入5个数,并按从大到小顺序输出的方法如下:
#include stdio.h
#include stdlib.h
int main()
{
int a[5];
int i,j,k;
for(i=0; i <= 4; i++)
{
scanf("%d",&a[i]);
}
for(i=0; i <= 4; i++)
{
for(j=0; j <= 4; j++)
{
if(a[i] < a[j])
{
k=a[i]; a[i]=a[j]; a[j]=k;
}
}
}
printf("排序结果是:\n");
for(i=0; i <= 4; i++)
{
printf("%d\t",a[i]);
}
return 0;
}