c語言十個數排序
① c語言:輸入10個數依次從大到小排序!
用數組來存放十個數字,使用「冒泡排序」來實現排序。10個數字需進行9輪掃描,每次掃描時比較相鄰的二個數,如它們不符合要求的大小關系,就交換它們的位置。第一輪掃描結束時,最大的數就「沉」到最後。於是第二的范圍就少了一個數。再進行第二兩棲型、第三輪,…——直到第9輪就完成了。最後輸出結果。
#include<stdio.h>
int main()
{
int a[10],i,j,t;
printf("請輸入10個整數:\n");
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])
{
t=a[j]; a[j]=a[j+1]; a[j+1]=t;
}
printf("排序以後的數:\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
system("pause");
return 0;
}
如果要從大到小排,只要把上面的交換條件
if(a[j]>a[j+1])換為
if(a[j]<a[j+1])就可以了。
② c語言,用選擇法對10個數排序,按正負數分開輸出
選擇排序:大循環i依次取元素和後面所有元素比較,找出其中最值,和當前i的元素交換。一次大循環交換一次。
程序思路:
一、排序函數:根據傳參,實現降序升序兩種功能。
二、數組輸出:根據傳參,實現正數和負數輸出兩種功能。
下面是代碼:
#include <stdio.h>
void px(int nums[],int len,int t);//排序
void showNums(int nums[],int len,int t);//輸出
int main()
{
int nums[10]={8,7,-1,2,-5,4,9,-3,-6,1};
printf("原數組:8,7,-1,2,-5,4,9,-3,-6,1 ");
printf("升序排列後: ");
px(nums,10,1);
printf("|---正數為:");
showNums(nums,10,1);
printf("|---負數為:");
showNums(nums,10,0);
//--------------------------------
printf("降序排列後: ");
px(nums,10,0);
printf("|---正數為:");
showNums(nums,10,1);
printf("|---負數為:");
showNums(nums,10,0);
}
void showNums(int nums[],int len,int t)//t=1輸出正數,t=0輸出負數
{
int i;
for(i=0;i<len;i++)
if((t && nums[i]>0)||(!t && nums[i]<0))
printf("%d ",nums[i]);
printf(" ");
}
void px(int nums[],int len,int t)//t=1升序,t=0降序
{
int i,j,k,m;
for(i=0;i<len-1;i++)
{
m=nums[i],k=i;
for(j=i+1;j<len;j++)
if((t && m>nums[j])||(!t && m<nums[j])) m=nums[j],k=j;
m=nums[i],nums[i]=nums[k],nums[k]=m;
}
}
③ C語言怎麼用選擇法對10個整數排序
代碼文本:
#include "stdio.h"
int main(int argc,char *argv[]){
int a[10]={7,9,1,5,3,4,2,8,0,6},b[10]={2,8,0,6,5,3,4,7,9,1},i,j,k;
for(i=0;i<10;i++){//選擇法對a由小到大排序
for(k=i,j=k+1;j<10;j++)
if(a[k]>a[j])
k=j;
if(k!=i)
j=a[k],a[k]=a[i],a[i]=j;
printf("%2d",a[i]);//輸出a
}
putchar(' ');
for(i=0;i<10;i++)//冒泡法對b由大到小排序
for(j=0;j<9;j++)
if(b[j]<b[j+1])
k=b[j],b[j]=b[j+1],b[j+1]=k;
for(i=0;i<10;printf("%2d",b[i++]));
putchar(' ');
return 0;
}
可以比較它們的異同……
④ C語言編程題:用選擇法對10個整數排序
#include<stdio.h>
int main()
{
int i,j,min,t,a[10]={2,4,8,3,6,9,7,222,64,88};
printf("排序前的序列為: ");
for(i=0;i<10;i++)//輸出排序前的序列
{
printf("%5d",a<i>);
}
printf(" ");
for(i=0;i<9;i++)
{
min=i;//把每次循環的第一個數作為最小值
for(j=i+1;j<10;j++)
{
if(a[min]>a[j])
min=j;//交換
}
if(min!=i)//說明第一個數不是最小數,所以將a[i+1]~a[10]中最小值與a<i>對換
{
t=a[min];
a[min]=a<i>;
a<i>=t;
}
}
printf("排序後的序列為: ");
for(i=0;i<10;i++)//輸出排序後的序列
printf("%5d",a<i>);
printf(" ");
return 0;
}
(4)c語言十個數排序擴展閱讀:
return表示把程序流程從被調函數轉向主調函數並把表達式的值帶回主調函數,實現函數值的返回,返回時可附帶一個返回值,由return後面的參數指定。
return通常是必要的,因為函數調用的時候計算結果通常是通過返回值帶出的。如果函數執行不需要返回計算結果,也經常需要返回一個狀態碼來表示函數執行的順利與否(-1和0就是最常用的狀態碼),主調函數可以通過返回值判斷被調函數的執行情況。
⑤ C語言:輸入10個數依次從大到小排序!
用數組來存放十個數字,使用「冒泡排序」來實現排序。10個數字需進行9輪掃描,每次掃描時比較相鄰的二個數,如它們不符合要求的大小關系,就交換它們的位置。第一輪掃描結束時,最大的數就「沉」到最後。於是第二的范圍就少了一個數。再進行第二兩棲型、第三輪,…——直到第9輪就完成了。最後輸出結果。
#include<stdio.h>
int
main()
{
int
a[10],i,j,t;
printf("請輸入10個整數:\n");
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])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
printf("排序以後的數:\n");
for(i=0;i<10;i++)
printf("%d
",a[i]);
printf("\n");
system("pause");
return
0;
}
如果要從大到小排,只要把上面的交換條件
if(a[j]>a[j+1])換為
if(a[j]<a[j+1])就可以了。
⑥ C語言程序 用選擇法對十個數排序
#include <stdio.h>
int main()
{int i,j,min,temp,a[11];
printf("enter data: ");
for (i=1;i<=10;i++)
{printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf(" ");
printf("The orginal numbers: ");
for (i=1;i<=10;i++)
printf("%5d",a[i]);
printf(" ");
for (i=1;i<=9;i++)
{min=i;
for (j=i+1;j<=10;j++)
if (a[min]>a[j]) min=j;
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
printf(" The sorted numbers: ");
for (i=1;i<=10;i++)
printf("%5d",a[i]);
printf(" ");
return 0;
}
空白字元
空白字元會使scanf()函數在讀操作中略去輸入中的一個或多個空白字元,空白符可以是space,tab,newline等等,直到第一個非空白符出現為止。
非空白字元
一個非空白字元會使scanf()函數在讀入時剔除掉與這個非空白字元相同的字元。
⑦ c語言中,用一維數組排序十個整數,怎麼做
需要准備的材料分別有:電腦、C語言編譯器。
1、首先,打開C語言編譯器,新建一個初始.cpp文件,例如:test.cpp。
⑧ c語言 輸入十個整數,從大到小排序,並輸出來。求解題思路
1、數組形式。
解題思路: 判斷比較的躺數,每趟相鄰的兩個數再進行比較,應用兩次 for 循環
具體代碼:
void PrintArr(int* arr, int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", *(arr + i));
}
return 0;
}
void BubbleSort(int arr[],int sz)
{
int i = 0;
for (i = 0; i < sz - 1; i++)
{
int j = 0;
for (j = 0; j < sz - i - 1; j++)//用for循環的元素個數控住多少趟
{
if (arr[j] > arr[j + 1])
{
int tmp = arr[j];
arr[j] = arr[j+1];
arr[j + 1] = tmp;
}
}
}
}
int main()
{
int arr[10] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
int sz = sizeof(arr) / sizeof(arr[0]);
BubbleSort(arr, sz);
PrintArr(arr, sz);
system("pause");
return 0;
}
2、指針形式。
創建兩個變數start、end,記住數組起始與結束位置元素的地址,應用兩次 while 循環交換地址
指針冒泡排序 :
void PrintArr(int* arr, int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", *(arr + i));
}
return 0;
}
void BubbleSort(int *arr, int sz)
{
int start = arr;
int end = arr + sz - 1;
//趟數
while (start < end)
{
int *cur = start;
while (cur < end)
{
if (*cur > *(cur+1))
{
int tmp = *cur;
*cur = *(cur + 1);
*(cur + 1) = tmp;
}
cur++;
}
end--;
}
}
int main()
{
int arr[10] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
int sz = sizeof(arr) / sizeof(arr[0]);
BubbleSort(arr, sz);
PrintArr(arr, sz);
system("pause");
return 0;
}
(8)c語言十個數排序擴展閱讀:
演算法原理
冒泡排序演算法的原理如下:
比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
針對所有的元素重復以上的步驟,除了最後一個。
持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
⑨ C語言如何用選擇法排序任意輸入十個數(從大到小、從小到大)
#include <stdio.h>
main(void)
{
int i,j,a[10],p=0,t=0,temp;
printf("請輸入原數組:\n");
for(j=0;j<10;j++)
scanf("%d",&a[j]);
temp=a[0];
for(j=0;j<9;j++)
{
t=j;
temp=a[j];
for(i=j+1;i<10;i++)
if(temp>a[i]) //這是由小到大排序 如果是大到小則改為 if(temp<a[i])
{temp=a[i];p=i;}
{temp=a[p];a[p]=a[t];a[t]=temp;}
}
printf("排序後的數組為:\n");
for(j=0;j<10;j++)
printf("%d ",a[j]);
}
⑩ C語言:對輸入的十個數進行從小到大排序
1、首先打開編輯軟體,新建一個c程序空文件,引入標准庫和主函數,定義一個QuickSort函數用來排序,下面首先編寫排序函數的: