本文目錄一覽:
- 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;
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/303556.html