#includestdio.h
專注于為中小企業(yè)提供成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)館陶免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
void px(int a[])
{
int i,temp,j;
for(i=0;i10;i++)
{
for(j=i;j10;j++)
{
if(a[i]=a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}
void main()
{
int i,a[10];
for(i=0;i10;i++)
{
printf("成績(jī):");
scanf("%d",a[i]);
}
px(a);
for(i=0;i10;i++)
{
printf("%d",a[i]);
printf("\n");
}
}
你的錯(cuò)誤有點(diǎn)多,px(10)該改成px(a),還有for語(yǔ)句少打了括號(hào),還有for語(yǔ)句里面的i和p的初值都應(yīng)該為0,而你的是1,編程序的時(shí)候要注意代碼的格式 排版 不然很難找錯(cuò)的 就像你的for語(yǔ)句少打了括號(hào)一樣 自己寫完了都不容易看出來(lái)
還有你那px函數(shù)里面的變量聲明了太多,沒(méi)必要 代碼看起來(lái)要簡(jiǎn)單 可讀性才強(qiáng)
我?guī)湍惆褯](méi)必要的刪了 看起來(lái)更舒服
#include stdio.h
#include stdlib.h
#include time.h
#define MAXlen 100
void select_sort(int *x, int n) { //選擇排序
int i, j, min;
int t;
for (i = 0; i n - 1; i++) { // 要選擇的次數(shù):0~n-2共n-1次
min = i; // 假設(shè)當(dāng)前下標(biāo)為i的數(shù)最小,比較后再調(diào)整
for (j = i + 1; j n; j++) { //循環(huán)找出最小的數(shù)的下標(biāo)是哪個(gè)
if (*(x + j) *(x + min)) {
min = j; // 如果后面的數(shù)比前面的小,則記下它的下標(biāo)
}
}
if (min != i) { // 如果min在循環(huán)中改變了,就需要交換數(shù)據(jù)
t = *(x + i);
*(x + i) = *(x + min);
*(x + min) = t;
}
}
}
int main() {
int i;
int iArr[MAXlen];
srand((unsigned int)time(NULL));
printf("\n排序前:\n");
for(i = 0 ; i MAXlen ; i++) {
iArr[i] = (unsigned int)rand() % 1000;
if(i % 10 == 0) printf("%\n");
printf("%5d",iArr[i]);
}
printf("\n");
select_sort(iArr,MAXlen);
printf("\n排序后:\n");
for(i = 0 ; i MAXlen ; i++) {
if(i % 10 == 0) printf("%\n");
printf("%5d",iArr[i]);
}
printf("\n\n");
return 0;
}
#include?stdio.h
void?mysort(int?*p,int?n){
int?i,j,k;
for(i=0;in;i++){
for(k=i,j=k+1;jn;j++)
if(p[k]p[j])
k=j;
if(k-i)
j=p[k],p[k]=p[i],p[i]=j;
}
}
int?main(int?argc,char?*argv[]){
int?a[10]={100,90,80,70,60,50,40,30,20,10,},i;
mysort(a,10);
for(i=0;i10;printf("%d?",a[i++]));
printf("\n");
return?0;
}
#includestdio.h
void?sort(float?*a,?int?n)
{
int?i,j,tmp;
for(i=0;?in-1;?i++)
for(j=0;?jn-i-1;?j++)
if(a[j]a[j+1])
{
tmp?=?a[j];
a[j]?=?a[j+1];
a[j+1]?=?tmp;
}
}
void?main()
{
float?a[5];
int?i;
printf("請(qǐng)輸入五個(gè)數(shù)(逗號(hào)隔開(kāi)):");
scanf("%f,%f,%f,%f,%f",a[0],a[1],a[2],a[3],a[4]);
sort(a,5);
printf("排序后為:");
for(i=0;?i5;?i++)
printf("%.2f?",a[i]);
printf("\n");
}
或者三個(gè)數(shù)的。
void sort(int *a, int *b, int *c)
{
int tmp;
if(*a*b){
tmp = *b;
*b = *a;
*a = tmp;
}
if(*a*c){
tmp = *c;
*c = *a;
*a = tmp;
}
if(*b*c){
tmp = *c;
*c = *b;
*b = tmp;
}
return;
}
擴(kuò)展資料:
C語(yǔ)言中沒(méi)有預(yù)置的sort函數(shù)。如果在C語(yǔ)言中,遇到有調(diào)用sort函數(shù),就是自定義的一個(gè)函數(shù),功能一般用于排序。
一、可以編寫自己的sort函數(shù)。
如下函數(shù)為將整型數(shù)組從小到大排序。void sort(int *a, int l)//a為數(shù)組地址,l為數(shù)組長(zhǎng)度。
{ ?
int i, j; ?
int v; ? ?//排序主體
for(i = 0; i l - 1; i ++) ? ? ?
for(j = i+1; j l; j ++)
?
{ ? ? ? ? ?
if(a[i] a[j])//如前面的比后面的大,則交換。
? ? ?
{
? ? ? ? ?
v = a[i];
? ? ? ? ?
a[i] = a[j];
? ? ? ? ?
a[j] = v;
? ? ?
}
?
}
}
對(duì)于這樣的自定義sort函數(shù),可以按照定義的規(guī)范來(lái)調(diào)用。
二、C語(yǔ)言有自有的qsort函數(shù)。
功 能: 使用快速排序例程進(jìn)行排序。頭文件:stdlib.h
原型:
void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));
參數(shù):
1、待排序數(shù)組首地址。
2、數(shù)組中待排序元素?cái)?shù)量。
3、各元素的占用空間大小4 指向函數(shù)的指針,用于確定排序的順序,這個(gè)函數(shù)必須要自己寫比較函數(shù),即使要排序的元素是int,float一類的C語(yǔ)言基礎(chǔ)類型。
void Swap(int *a, int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
void Selectsort(int *arr, int sz)
{for (int end=sz-1; end=0; end--)
{
int max = end;
int i;
for ( i = 0; i = end; i++)//選出最大下標(biāo)
{
if (arr[i] arr[max])
{
max = i;
}
}
Swap(arr, arr[max]);
}
}
int main()
{
int arr[5] = { 1, 3, 2, 5, 4 };
int sz = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i = sz - 1; i++)
{
scanf("%d", arr[i]);
}
Selectsort(arr, sz);
for (int i = 0; i = sz - 1; i++)
{
printf("%d ", arr[i]);
}
system("pause");
return 0;
}
擴(kuò)展資料:
printf函數(shù)使用注意事項(xiàng)
1、域?qū)?/p>
%d:按整型數(shù)據(jù)的實(shí)際長(zhǎng)度輸出。
如果想輸出指定寬度可以指定域?qū)挘?md--gt;m域?qū)?打印出來(lái)以后,在控制臺(tái)上,顯示m位;
如果要打印的數(shù)的位數(shù)如果超過(guò)我們?cè)O(shè)定m則原樣輸出;
如果要打印的數(shù)的位數(shù)如果小于設(shè)定的位數(shù),則補(bǔ)空白,具體如下:
如果m為正數(shù),則左對(duì)齊(左側(cè)補(bǔ)空白);
如果m為負(fù)數(shù),則右對(duì)齊(右側(cè)補(bǔ)空白)。
2、轉(zhuǎn)義字符
如果想輸出字符"%",則應(yīng)該在“格式控制”字符串中用連續(xù)兩個(gè)%表示。
如:printf("%f%%",1.0/3);輸出結(jié)果:0.333333%。
#include?stdio.h
#include?stdlib.h
#include?time.h
int?main(void)
{
int?a[10],i,j,tmp,b;
srand(time(NULL));
for(i=0;i10;i++)
a[i]=rand()%100;
for(i=0;i10;i++)
printf("%3d",a[i]);
printf("\n");
for(i=0;i9;i++)
{
tmp=i;
for(j=i+1;j10;j++)
?{
if(a[tmp]a[j])
tmp=j;
?}
if(i!=tmp)
{
b=a[tmp];
a[tmp]=a[i];
a[i]=b;
}
}
for(i=0;i10;i++)
printf("%3d",a[i]);
printf("\n");
return?0;
}
隨機(jī)產(chǎn)生數(shù)組中的元素, 更合理一些。 百科中有各種版本。