A. 用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 。此語句目的:a<b
if(a>c)s=a,a=c,c=s;//進一步比較a,c大小,通過賦值得出最小值,並賦給a; 此語句目的:a<c
if(b>c)s=b,b=c,c=s;//最後比較出b,c中的較大值。
printf("從大到小的順序依次是:%d%d%d",c,b,a);
return 0;
}
B. 在C語言中 編寫一個程序實現從小到大排序
#include<stdio.h>
#include<stdlib.h>
intcmp(constvoid*a,constvoid*b)
{
return*(int*)a-*(int*)b;
}
intmain(intargc,char**argv)
{
inta[]={1,-2,53,49,144,65,267,98,112};
inti;
qsort(a,sizeof(a)/sizeof(int),sizeof(int),cmp);
for(i=0;i<sizeof(a)/sizeof(int);++i)
printf("%d",a[i]);
printf(" ");
return0;
}
如果要自己實現排序函數的話
#include<stdio.h>
voidqsort(int*a,intleft,intright)
{
intp=(left+right)/2;//以中間數作為主元
intk=a[p];
inti=left,j=right;
while(i<j)
{
//從左邊開始將大於主元的數放在主元右邊
while((i<=p)&&(a[i]<=k))
++i;
if(i<p)
{
a[p]=a[i];
p=i;
}
//從右邊開始將小於主元的數放在左邊
while((j>=p)&&(a[j]>=k))
--j;
if(j>p)
{
a[p]=a[j];
p=j;
}
}
a[p]=k;
//如果左邊的數大於1個則遞歸左邊
if(p-left>1)
qsort(a,left,p-1);
//如果右邊的數大於1個則遞歸右邊
if(right-p>1)
qsort(a,p+1,right);
}
intmain(intargc,char**argv)
{
inta[]={1,-2,53,49,144,65,267,98,112};
inti;
qsort(a,0,sizeof(a)/sizeof(int)-1);
for(i=0;i<sizeof(a)/sizeof(int);++i)
printf("%d",a[i]);
printf(" ");
return0;
}
C. C語言~十個數字從小到大怎麼排列~從大到小呢~
//要求任意輸入10個數,然後按從小到大順序輸出
#include <stdio.h>
int main()
{
int a[10];
int i,j;
int temp;
printf("請輸入10個整數:");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
printf("排列後順序為:");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("
");
return 0;
}
D. C語言中怎麼把三個整數從小到大排列
原理就是運用冒泡演算法,把最大的數浮在最上面,而小的數就下沉,最後就輸出。
方法如下:
分析:我們想辦法把最小的數放到x上,先將x與y進行比較,如果x>y則將x與y的值進行交換,
然後再用x與z進行比較,如果x>z則將x與z的值進行交換,這樣能使x最小。
1.從控制台讀入三個數;
2.實現三個數從小到大排序:
(1)將第一個數作為最小數,依次和第二,三個數進行比較。兩次比較重如果有任意一個比第一個小,則將兩個數交換
;
(2)在(1)步後,得到第一個數為最小數。再將第二個數與第三個數比較大小後即可實現三個數從小到大排序。
拓展資料
兩種常用排序方法:
1.選擇排序法:從一列數中,選擇第一個作為最小數,依次和後面的數進行比較。如有比第一個數小的數,則交換兩個數。最後排到該列數都倒數第二個時,這列數就從小到大排好了順序。
2.冒泡排序法:思路與選擇排序法一致。不同的是,冒泡排序將第一個作為最大數,然後再和該數後的數進行比較。
E. 求C語言將數組元素大小排序!!
C語言將數組元素大小排序方法:
以下使用的是冒泡排序法實線數組從小到大排序。
思想:每次相鄰兩個數比較,若升序,則將大的數放到後面,一次循環過後,就會將最大的數放在最後。
10、2、3、4、5、6、9、8、7、1是輸入的待排序的數列,經過第一次排序,將最大的,10放在最後,第二次排序,將剩下的2、3、4、5、6、9、8、7、1進行冒泡,將當前最大的9放在倒數第二的位置,以此類推。
以下是具體代碼:
#include <stdio.h>
int main(){
int nums[10] = {10, 2, 3, 4, 5, 6, 9, 8, 7, 1};
int i, j, temp, isSorted;
//優化演算法:最多進行 n-1 輪比較
for(i=0; i<10-1; i++){
isSorted = 1; //假設剩下的元素已經排序好了
for(j=0; j<10-1-i; j++){
if(nums[j] > nums[j+1]){
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
isSorted = 0; //一旦需要交換數組元素,就說明剩下的元素沒有排序好
}
}
if(isSorted) break; //如果沒有發生交換,說明剩下的元素已經排序好了
}
for(i=0; i<10; i++){
printf("%d ", nums[i]);
}
printf(" ");
return 0;
}
(5)c語言比較大小從小到大排列擴展閱讀:
其他將數組從小到大排序的演算法
以下使用的是選擇排序法實現數組從小到大排序。
思想:從第一個數開始,每次和後面剩餘的數進行比較,若升序,則如果後邊的數比當前數字小,進行交換,和後面的所有的數比較、交換後,就會將當前的最小值放在當前的位置
輸入的序列為10、2、3、4、5、6、9、8、7、1進行一次排序後將最小的數放在了第一位(a[0]與它後面的所有數進行比較,若a[0]比後面的數大,進行交換),以此類推。
以下是具體代碼:
#include <stdio.h>
int main(void){
int a[1001];
int n,i,j,t;
scanf("%d",&n);//n為要排序的數的個數
//輸入需要排序的數
for(i=0;i<n;++i)
scanf("%d",a+i);
//接下來進行排序
for(i=0;i<n-1;++i)//因為每次需要和a[i]後面的數進行比較,所以到a[n-2](倒數第2個元素)就行
{
for(j=i+1;j<n;++j)//j從i後一個開始,a[i]與a[j]進行比較
{
if(a[i]>a[j])//a[i]為當前值,若是比後面的a[j]大,進行交換
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}//每排序一次,就會將a[i](包括a[i])之後的最小值放在a[i]的位置
for(j=0;j<n;++j)
printf("%-5d",a[j]);
printf(" ");
}
return 0;
}
F. 編寫C語言程序,把一個數組按從小到大的次序排列起來
源程序以及演算法注釋如下:
#define _CRT_SECURE_NO_WARNINGS//VS編譯環境需要進行宏定義,VC6.0可忽略
#include<stdio.h>//輸入輸出頭文件
int main()
{
int number[10], New_number[10];//定義數組的數據類型為整型
int i, j, m, n, k;//定義變數的數據類型為整型
printf("input 10 <int> number:");//文字提示
for (i = 0; i <= 9; i++)//用循環輸入數值給數組number並賦給數組New_number
{
scanf("%d", &number[i]);//輸入10個整形數字到數組中
New_number[i] = number[i];//數組number元素賦給數組New_number
}
for (n = 0; n <= 8; n++)//要進行(10-1)組比較
for (j = 0; j <= 8 - n; j++)//每組進行(10減第幾組)次比較
{
if (number[j] > number[j + 1])//比較大小並將小的賦給前面的數組
{
k = number[j];//將相對較大的元素賦值給中間元素
number[j] = number[j + 1];//將相對較小的元素送達前面一個位置
number[j + 1] = k;//將中間變數元素送給後面一個位置
}
if (New_number[j] < New_number[j + 1])//比較大小並將大的賦給前面的數組
{
k = New_number[j + 1];//將相對較小的元素賦值給中間元素
New_number[j + 1] = New_number[j];//將相對較大的元素送達前面一個位置
New_number[j] = k;//將中間變數元素送給後面一個位置
}
}
printf("min-->max:
");//文字提示
for (m = 0; m <= 9; m++)//依次從小到大輸出
printf("%d ", number[m]);//輸出元素
printf("
");
printf("max-->min:
");//文字提示
for (m = 0; m <= 9; m++)//依次從大到小輸出
printf("%d ", New_number[m]);//輸出元素
printf("
");
return 0;
}
程序運行結果如下:
(6)c語言比較大小從小到大排列擴展閱讀:
其他簡單實現程序:
#include<stdio.h>
int main()
{
int a[10]={0};
int i,j,temp;
for(i = 0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i = 0;i<10;i++)
{
for(j = 0;j<10-i-1;j++)
{
if(a[j]>a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(i = 0;i<10;i++)
printf("%d ",a[i]);
return 0;
}
G. 怎樣在c語言中比較一個數組中元素的大小
main() {int a[10],b[10],i,j=0,k=0,e=0; for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); for(i=0;i<10;i++) scanf("%d",&b[i]); printf("\n"); for(i=0;i<10;i++) {if(a[i]>b[i]) j++; else if(a[i]b %d times\na
#include
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("\n");
return 0;
}
(7)c語言比較大小從小到大排列擴展閱讀:
C語言中數組元素大小的相關排序規則:
一、首先需要對數組中的元素進行排列,默認是以字元串的規則進行從小到大排序;可接收一個參數:自定義的規則相關排序。參數的具體要求如下:
1、參數首先必須是一個函數;
2、函數必須有一個明確的返回值;
3、返回值必須是number類型,但不可以是NaN。
二、排序中的具體規則:
1、首先每次從數組中挑選出兩個元素傳入函數中,進行比較,直到所有進行排列的元素都被挑選完畢以後就不要再進行挑選;
2、如果返回值是一個正數,就交換這彼此的位置,實現大小的正確排列;
3、如果返回值是一個負數或0,此時說明大小位置的順序是正確的,此時就不需要交換彼此的位置。
4、默認同一字元的全形字元看做半形字元。不區分同一個字元(如日文的片假字)的半形與全形狀態。相同元素,維持原序,默認區分字母大小寫,同一個字元小寫在前,大寫在後。
注意:對數組的元素進行排序需要不斷比較兩個數字的大小,10個元素排序一共需要比較9次,直到所有的元素被都完完全全地被比較一次。
H. 在c語言編程中如何將1-10的數從小到大排列。
冒泡法!在我們寫程序的時候,通常都會對一組數據進行排序,常用的方法有冒泡法和選擇法,我主要寫下我對冒泡法的理解和心得。
冒泡法:顧名思義,就是把小的數據向前排,也就是向上浮起,並因此進行排序。
例:
#include "stdio.h" 包含頭文件
void main() 主函數
{
int a[10],t,i,j; 定義要用的數據和數祖
printf("input the ten number:\n"); 顯示輸出
for(i=0;i<10;i++)
scanf("%d",&a[i]); 利用循環接受數據
for(j=0;j<10;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1]; 這個就是冒泡的要義了,這個語句是進行冒泡的,下面會有解釋
a[i+1]=t;
}
for(i=0;i<10;i++)
printf("%d\t",a[i]); 循環輸出排序後的數據
}