㈠ 任意輸入4個整數,從大到小排列輸出。c語言程序怎麼寫
個整數的排序,有使用單個變數和使用數組二種方法實現。
使用單個變數的方法:
#include<stdio.h>
int main()
{int a,b,c,d,t;
scanf("%d%d%d%d",&a,&b,&c,&d);
if(a>b){t=a;a=b;b=t;}
if(a>c){t=a;a=c;c=t;}
if(a>d){t=a;a=d;d=t;}
if(b>c){t=b;b=c;c=t;}
if(b>d){t=b;b=d;d=t;}
if(c>d){t=c;c=d;d=t;}
printf("%d %d %d %d\n",a,b,c,d);
return 0;
}
使用數組和循環的方法:
#include<stdio.h>
int main()
{int a[4],i,j,t;
for(i=0;i<4;i++) //讀入4個數據
scanf("%d",&a[i]);
for(i=0;i<3;i++) //冒泡排序
for(j=0;j<3-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
for(i=0;i<4;i++) //輸出4個數據
printf("%d ",a[i]);
printf("\n");
return 0;
}
㈡ c語言4個數排序怎麼弄
不用數組就比較麻煩了
代碼簡不了
main()
{
int
a,b,c,d,t;
/*
四個數
和一個中間變數
*/
/*
這里任意賦值
*/
a=222;
b=10;
c=102;
d=99;
/*
從小到大排
*/
if(
a
>
b
)
{
t
=
a;
a
=
b;
b
=
t;
}
/*
判斷a和b
*/
if(
b
>
c
)
{
t
=
b;
b
=
c;
c
=
t;
}
/*
判斷b和c
*/
if(
c
>
d
)
{
t
=
c;
c
=
d;
d
=
t;
}
/*
判斷c和d
*/
/*
現在d是最大的,已經排到最後了 接下來只用排a
b
c */
if(
a
>
b
)
{
t
=
a;
a
=
b;
b
=
t;
}
/*
判斷a和b
*/
if(
b
>
c
)
{
t
=
b;
b
=
c;
c
=
t;
}
/*
判斷b和c
*/
/*
現在c也是a
b
c
中最大的
再比較a
b就行*/
if(
a
>
b
)
{
t
=
a;
a
=
b;
b
=
t;
}
/*
判斷a和b
*/
/*
排完,輸出
*/
printf("%d
%d
%d
%d\n",
a,
b,
c,
d);
}
/*
本例採用的是冒泡法排序思路
*/
㈢ C語言 四個數排序
建議換個演算法,如冒泡排序,你的演算法可讀性比較差,代碼如下。
#include<stdio.h>
void main()
{
int a[4];
int i,j,temp;
printf("please input data:\n");
for(i=0 ;i<4; i++)
{
scanf("%d",&a[i]);
}
for(i=0; i<4; i++)
{
for(j=0; j<4-i; j++)
{
if(a[j] > a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
printf("result:\n");
for(i=0 ;i<4; i++)
{
printf("%d\n",a[i]);
}
}
㈣ 4個數比較大小,結果從小到大排列,用C語言怎麼編
1、首先雙擊打開桌面上的C-Free5編程軟體。
㈤ C語言需要四個數從小到大排序怎麼編程
#
include
<stdio.h>void
main
(){
int
t,a,b,c,d; printf("請輸入4個數;");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
if(a>b)
{t=a;a=b;b=t;} if(a>b)
{t=a;a=b;b=t;}}
if(a>c)
{t=a;a=c;c=t;}
if(a>d)
{t=a;a=d;d=t;}
if(b>c)
{t=b;b=c;c=t;}
if(b>d)
{t=b;b=d;d=t;}
if(c>d)
{t=c;c=d;d=t;}
printf("排序結果如下:\n");
printf("%d
%d
%d
%d
\n",a,b,c,d);
C語言即中文版的C語言,是一種面向過程的計算機程序設計語言。
㈥ C語言怎麼實現輸入四個數abcd按從大到小輸出
個整數的排序,有使用單個變數和使用數組二種方法實現。
使用單個變數的方法:
#include<stdio.h>
int main()
{int a,b,c,d,t;
scanf("%d%d%d%d",&a,&b,&c,&d);
if(a>b){t=a;a=b;b=t;}
if(a>c){t=a;a=c;c=t;}
if(a>d){t=a;a=d;d=t;}
if(b>c){t=b;b=c;c=t;}
if(b>d){t=b;b=d;d=t;}
if(c>d){t=c;c=d;d=t;}
printf("%d %d %d %d\n",a,b,c,d);
return 0;
}
使用數組和循環的方法:
#include<stdio.h>
int main()
{int a[4],i,j,t;
for(i=0;i<4;i++) //讀入4個數據
scanf("%d",&a[i]);
for(i=0;i<3;i++) //冒泡排序
for(j=0;j<3-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
for(i=0;i<4;i++) //輸出4個數據
printf("%d ",a[i]);
printf("\n");
return 0;
}
㈦ 使用c語言為4個數字abcd進行排序
#include<stdio.h>
intmain()
{
chara[4]={1,2,3,4};
charb[4];
inti,j,m,n;
for(i=0;i<4;i++)
{
b[0]=a[i];
for(j=0;j<4;j++)
{
if(j!=i)
{
b[1]=a[j];
for(m=0;m<4;m++)
{
if(m!=j&&m!=i)
{
b[2]=a[m];
for(n=0;n<4;n++)
if(n!=j&&n!=i&&n!=m)
{
b[3]=a[n];
printf("%d%d%d%d ",b[0],b[1],b[2],b[3]);
}
}
}
}
}
}
return0;
}
數據自己輸入數組當中這個沒寫,這個是最古老的方式但是也是最容易理解的
㈧ 初學c語言,四個數排序,用if。中間的幾個if語句看不懂,能給我講講嗎
第一個if,作用是:如果a>b,就借用tem變數,把a 和b的值交換一下。確保交換之後a不大於b。
第二個if,執行後,把a與c中較小的數放在a中,即a不大於c。
第三個if,確保了a不大於d。
通過運行前三個if語句,把abcd四個數中最小的數字放在了變數a中。
同樣,第四和第五個if語句,把bcd三個數中最小的數字放在了b變數中。
最後一個if,把小數放在c中,而把最大的數放到d中。
從而實現了排序的目的。
有什麼問題請留言。
㈨ 輸入4個整數,要求從大到小排列(用C語言的IF語句)
就是冒泡演算法咯:
把序列底部的數字跟上面的數字依次比較,如果比上面的大就把他們交換位置,直到比上面的小為止,這樣把每個數字都這樣弄一次數列就按順序排好了。
void main()
{
int a[3];
int i,temp;
for(i=0;i<4;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<4;i++)
{
int j;
for(j=0;j<=4-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(i=0;i<4;i++)
{
printf("%d",a[i]);
}
}
㈩ 四個數字排序的C語言程序
汗,。。。。。任意一本家才上都有 什麼冒泡 選擇 插入排序都是啊
、排序演算法
(1)分析
因為每一趟排序都使有序區增加了一個氣泡,在經過n-1趟排序之後,有序區中就有n-1個氣泡,而無序區中氣泡的重量總是大於等於有序區中氣泡的重量,所以整個冒泡排序過程至多需要進行n-1趟排序。
若在某一趟排序中未發現氣泡位置的交換,則說明待排序的無序區中所有氣泡均滿足輕者在上,重者在下的原則,因此,冒泡排序過程可在此趟排序後終止。為此,在下面給出的演算法中,引入一個布爾量exchange,在每趟排序開始前,先將其置為FALSE。若排序過程中發生了交換,則將其置為TRUE。各趟排序結束時檢查exchange,若未曾發生過交換則終止演算法,不再進行下一趟排序。
(2)具體演算法
void BubbleSort(SeqList R)
{ //R(l..n)是待排序的文件,採用自下向上掃描,對R做冒泡排序
int i,j;
Boolean exchange; //交換標志
for(i=1;i<n;i++){ //最多做n-1趟排序
exchange=FALSE; //本趟排序開始前,交換標志應為假
for(j=n-1;j>=i;j--) //對當前無序區R[i..n]自下向上掃描
if(R[j+1].key<R[j].key){//交換記錄
R[0]=R[j+1]; //R[0]不是哨兵,僅做暫存單元
R[j+1]=R[j];
R[j]=R[0];
exchange=TRUE; //發生了交換,故將交換標志置為真
}
if(!exchange) //本趟排序未發生交換,提前終止演算法
return;
} //endfor(外循環)
} //BubbleSort
4、演算法分析
(1)演算法的最好時間復雜度
若文件的初始狀態是正序的,一趟掃描即可完成排序。所需的關鍵字比較次數C和記錄移動次數M均達到最小值:
Cmin=n-1
Mmin=0。
冒泡排序最好的時間復雜度為O(n)。
(2)演算法的最壞時間復雜度
若初始文件是反序的,需要進行n-1趟排序。每趟排序要進行n-i次關鍵字的比較(1≤i≤n-1),且每次比較都必須移動記錄三次來達到交換記錄位置。在這種情況下,比較和移動次數均達到最大值:
Cmax=n(n-1)/2=O(n2)
Mmax=3n(n-1)/2=O(n2)
冒泡排序的最壞時間復雜度為O(n2)。
(3)演算法的平均時間復雜度為O(n2)
雖然冒泡排序不一定要進行n-1趟,但由於它的記錄移動次數較多,故平均時間性能比直接插入排序要差得多。
(4)演算法穩定性
冒泡排序是就地排序,且它是穩定的。