c語言排大小
❶ c語言排列大小
#include"stdio.h"
#include"stdlib.h"//使用malloc函數必須的頭文件
intmain()
{
inti=0,j=0,k=0;
intn,m;
int*a,*b;//動態數組應該定義為指針
scanf("%d",&n);//輸入格式中去掉
a=(int*)malloc(n*sizeof(int));//然後由malloc函數根據輸入的n分配空間
b=(int*)malloc(n*sizeof(int));
m=n-1;
for(k=0;k<=m;k++)
{
scanf("%d",&a[k]);//輸入格式中去掉
}
for(k=0;k<=m;k++)//范圍是到k<=m,原來少一個元素所以最後有個0
b[k]=0;
for(k=0;k<=m;k++)//范圍是到k<=m,原來少一個元素所以最後有個0
{
i=0;
j=0;
do
{
if(b[j]<=a[k])
{
for(i=m;i>j;i--)
{
b[i]=b[i-1];
}
b[j]=a[k];
break;
}
else
j=j+1;
}
while(j<=m);
}
for(k=0;k<=m;k++)
printf("%d ",b[k]);
return0;
}
可以拷貝試驗,已驗證結果正確
❷ C語言比較大小排序問題
#define N 10//宏定義,用N代替10
#include "stdio.h"//標准輸入輸出庫,你在控制台輸入數據和顯示數據用的
main()//主函數
{
int a[N],i,j,temp;//聲明需要排序的數組a和排序用的的一些「小工具」,i、j、temp
printf("請輸入%d個整數:\n",N);
for(i=0;i<N;i++)//這個循環是和用戶交互,手動輸入10個數理組成數組
scanf("%d",&a[i]);
for(i=0;i<N-1-i;i++)//i從前往後數
for(j=0;j<N-1-i;j++)//在每一個i(比如0,比如1)下從前往後數j
if(a[j]>a[j+1])//如果j比他後邊的大,交換
{temp=a[j];a[j]=a[j+1];a[j+1]=temp;}//兩數前後互換
//上邊這個循環就是從前往後數a的元素,比如到a[0],那麼最大的數移到最後一位;在比如a[1],倒數第二大的數移到倒數第二位(因為最大的在後邊,你移步過去了?)
//為什麼要走這么多次。每次j的循環都好比一個波浪,一次只能保證一個最大數到了最後一位,其他的可能還是亂序,所以要一浪接一浪。
//這個演算法的巧妙之處在於,i只走一半,也就是i從0到4,而j每次也不用到最後一位(j<N-1-i),因為最後那i+1位已經排好了
//比較次數,i=0時9次,i=1時8次,i=2時7次,i=3時6次,i=4時5次,一共35次
printf("排序之後的數據序列:\n");
for(i=0;i<N;i++)//把排序後的數列顯示出來,%5d代表每一個數佔5位,就是排列的整齊點。
printf("%5d",a[i]);
printf("\n");
}
#include"stdio.h"
#define N 10
main()
{
int a[N],i,j,r,temp;
printf("請輸入%d個整數:\n",N);
for(i=0;i<N;i++)
scanf ("%d",&a[i]);
for(i=0;i<N-1;i++)//用i遍歷數組a。
{r=i;//局部的r值,i從0到8每次不同,r也不同。
for(j=i+1;j<N;j++)//j是從i當前的值一直到最後(前一種排序時每次j的結尾位置不同,到9,到8.到7。)
if(a[j]<a[r])r=j;//用r標記最小的一個值,
if(r!=i)//如果這個最小的值不是a[i],對換,讓i所在值變成最小,意思是a[0]最小,a[1]第二小,以此類推
{temp=a[r];a[r]=a[i];a[i]=temp;}
}
printf("排序之後的數據序列:\n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
printf("\n");
//i=0,j循環9次;i=1,j循環8次。。。。一共45次
}
我把函數改了,這樣可以測試,你去跑一下就明白過程了
#include"stdio.h"
#define N 10
main()
{
int count = 0;
int a[N],i,j,r,temp;
printf("請輸入%d個整數:\n",N);
for(i=0;i<N;i++)
scanf ("%d",&a[i]);
for(i=0;i<N-1;i++)
{r=i;
for(j=i+1;j<N;j++){
if(a[j]<a[r])r=j;
count++;
printf("i:%d\tj:%d\tcount:%d\n",i,j,count);
}
if(r!=i)
{temp=a[r];a[r]=a[i];a[i]=temp;}
}
printf("排序之後的數據序列:\n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
printf("\n%d\n",count);
}
❸ C語言排大小問題
第一個if之後,得到的是 a<b
第二個if之後,得到的是 a<c
第三個if之後,得到的是 b<c
所以是 a<b<c 你的是從小到大了
解釋第一個if
如果a>b,則a b互換,所以最後得到a<b
其它同理
❹ C語言中要把三個數從大到小排列出來應該怎麼編
初學簡單版本代碼如下:
#include<stdio.h>
int main( )
{
int a, b, c;//定義三個數的變數
int t ;//定義作為交換的變數
scanf ( "%d%d%d" , &a, &b, &c ) ; //取值
if ( a < b )
{t = a; a = b; b = t ;};//如果a,b,進行交換,反之不動
if ( a < c )
{t = a; a = c; c = t ;};//同上
if ( b < c )
{t = b; b = c; c = t ;};
printf( "%-5d%-5d%-5d " , a, b, c);//輸出
}
(4)c語言排大小擴展閱讀:
C語言中其他多個數排序的方法:
1、冒泡排序法
#include <stdio.h>
#define SIZE 8
void bubble_sort(int a[], int n);
void bubble_sort(int a[], int n)
{
int i, j, temp;
for (j = 0; j < n - 1; j++)
for (i = 0; i < n - 1 - j; i++)
{
if(a[i] > a[i + 1])
{
temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
} } }
int main()
{
int number[SIZE] = {95, 45, 15, 78, 84, 51, 24, 12};
int i;
bubble_sort(number, SIZE);
for (i = 0; i < SIZE; i++)
{
printf("%d ", number[i]);
}
}
2、選擇排序
#include<stdio.h>
void main()//主函數
{
int a[10];
int i,j,w;
printf("請輸入10個數字: ");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{
for(j=i+1;j<10;j++)
if(a[i]<a[j])//進行比較
//比較後進行交換
{
w=a[i];
a[i]=a[j];
a[j]=w;
}
❺ 該如用C語言程序排列大小
排序數組可以使用冒泡演算法:如果前一個數據比後一個大,則交換。
#include<stdio.h>
//使用冒泡演算法升序數組src
voidsort(int*src,intlen)
{
inttem;
for(inti=0;i<len;i++)
{
for(intj=0;j<len-i-1;j++)//每循環一次,則少一次
if(src[j]>src[j+1])//如果前一個數據比後一個大,則交換
{
tem=src[j];
src[j]=src[j+1];
src[j+1]=tem;
}
}
}
intmain()
{
inta[10]={2,5,9,6,4,7,8,1,0,3};
sort(a,10);//排序
for(inti=0;i<10;i++)//輸出結果
printf("%d",a[i]);
return0;
}
❻ 如何用C語言設計程序排列6個數字的大小順序
排序數組可以使用冒泡演算法:如果前一個數據比後一個大,則交換。
{
int i,j,t,a[6];
printf("Please input 6 integers: ");
for(i=0;i<6;i++)
scanf("%d",&a[i]);
for(i=0;i<5;i++) /* 冒泡法排序 */
for(j=0;j<6-i-1;j++)
if(a[j]>a[j+1])
{t=a[j];/* 交換a[i]和a[j] */
a[j]=a[j+1];
a[j+1]=t;
}
優點:
簡潔緊湊、靈活方便:C語言一共只有32個關鍵字,9種控制語句,程序書寫形式自由,區分大小寫。把高級語言的基本結構和語句與低級語言的實用性結合起來。C 語言可以像匯編語言一樣對位、位元組和地址進行操作,而這三者是計算機最基本的工作單元。
以上內容參考:網路-c語言程序設計
❼ c語言中輸入20個數排列大小順序
代碼如下:
inta[20];
inti,j,t;
printf("請輸入20個數字,以回車間隔:");
for(i=0;i<20;i++)
scanf("%d",&a[i]);
printf(" ");
for(j=0;j<20;j++)
for(i=0;i<20-j;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("排序好的數組為: ");
for(i=0;i<20;i++)
printf("%d",a[i]);
printf(" ");
}
❽ 求C語言將數組元素大小排序!!
#include <stdio.h>
int main(){
int numbers[10] = { 10,2,3,4,5,6,9,8,7,1 };
int a,b, text, hello;
for(a=0; a<10-1; a=a+1) { //在這里進行比較的開始的代碼
hello = 1; //假如剩下的元素已經被排序好了,然後接著進行下面的比較
for(b=0; b<10-1-i; b=b+1){
if(numbers[b] > numbers[b+1]){
text= numbers[b];
numbers[b] = numbers[b+1];
numbers[b+1] = text;
hello= 0;
}
}
if(hello) break;
}
for(a=0; a<10; a=a+1){
printf("%d ", numbers[a]);
}
printf(" ");
return 0;
}
(8)c語言排大小擴展閱讀:
C語言中數組元素大小的相關排序規則:
一、首先需要對數組中的元素進行排列,默認是以字元串的規則進行從小到大排序;可接收一個參數:自定義的規則相關排序。參數的具體要求如下:
1、參數首先必須是一個函數;
2、函數必須有一個明確的返回值;
3、返回值必須是number類型,但不可以是NaN。
二、排序中的具體規則:
1、首先每次從數組中挑選出兩個元素傳入函數中,進行比較,直到所有進行排列的元素都被挑選完畢以後就不要再進行挑選;
2、如果返回值是一個正數,就交換這彼此的位置,實現大小的正確排列;
3、如果返回值是一個負數或0,此時說明大小位置的順序是正確的,此時就不需要交換彼此的位置。
4、默認同一字元的全形字元看做半形字元。不區分同一個字元(如日文的片假字)的半形與全形狀態。相同元素,維持原序,默認區分字母大小寫,同一個字元小寫在前,大寫在後。
注意:對數組的元素進行排序需要不斷比較兩個數字的大小,10個元素排序一共需要比較9次,直到所有的元素被都完完全全地被比較一次。