本文目录一览:
- 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(ab)s=a,a=b,b=s;//比较a,b大小,通过赋值,使得ab 。此语句目的:ab
if(ac)s=a,a=c,c=s;//进一步比较a,c大小,通过赋值得出最小值,并赋给a; 此语句目的:ac
if(bc)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(ab)
{
t=a;a=b;b=t;
}
if(bc)
{
t=b;b=c;c=t;
}
if(ab)
{
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=ab?a:b;
min=ab?a:b;
if(cmax) max=c;
if(minc) min=c;
printf("从大到小排序:%d %d %d\n",max,a+b+c-max-min,min);
}
/*
运行结果:
2 1 3
从大到小排序:3 2 1
*/
c语言三种排序
常用的c语言排序算法主要有三种即冒泡法排序、选择法排序、插入法排序。
一、冒泡排序冒泡排序:
是从第一个数开始,依次往后比较,在满足判断条件下进行交换。代码实现(以降序排序为例)
#includestdio.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;}}
二、选择排序以升序排序为例:
就是在指定下标的数组元素往后(指定下标的元素往往是从第一个元素开始,然后依次往后),找出除指定下标元素外的值与指定元素进行对比,满足条件就进行交换。与冒泡排序的区别可以理解为冒泡排序是相邻的两个值对比,而选择排序是遍历数组,找出数组元素与指定的数组元素进行对比。(以升序为例)
#includestdio.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;i10: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; j0; j--)
{
if(arr[j] arr[j-1])
{
temp = arr[j];
arr[j]=arr[j-1];
arr[j-1]=temp;
}
}
}
C语言中从键盘上输入三个数,将之排序后按由大到小的顺序输出
具体操作方法如下:
#includestdio.h
int main(void)
{int a,b,c,t;
printf("请输入三个数");
scanf("%d%d%d",a,b,c);
if(ab)
{t=a;a=b;b=t;}
if(bc)
{t=b;b=c;c=t;}
if(ab)
{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;