❶ 如何用C語言編寫一個排序程序
樓上的用的是C++
若單純的用C那就是這樣
#include<stdio.h>
#define
print
"NO.%d
%d
%d
%d
%d
%3.2f
%3.2f\n",1+i,stu[i].num,stu[i].mat,stu[i].ENG,stu[i].com,stu[i].aver,stu[i].total//宏定義節約時間
struct
student
{
int
num;
int
mat;
int
ENG;
int
com;
float
aver;
float
total;
}stu[10];//定義結構體變數
void
main()
{
int
i;
void
take_turn_print(struct
student
stu1[10])
;
float
sum(int
x,int
y,int
z);//聲明求和函數
for(i=0;i<10;i++)
scanf("%d%d%d%d",&stu[i].num,&stu[i].mat,&stu[i].ENG,&stu[i].com);
for(i=0;i<10;i++)
{
stu[i].total=sum(stu[i].mat,stu[i].ENG,stu[i].com);//調用求和函數
stu[i].aver=stu[i].total/3;
}
take_turn_print(stu);//調用排序
列印函數
}
void
take_turn_print(struct
student
stu1[10])
{
void
change(int
*x,int
*y);//聲明換位函數
void
change1(float
*x,float
*y);//聲明換位函數
int
i,j;
for(j=0;j<9;j++)//冒泡排序
為理解簡單
就沒用別的排序方法
哈哈
{
for(i=0;i<9-j;i++)
{
if(stu1[i].aver<stu1[i+1].aver)
{
change(&stu1[i].num,&stu1[i+1].num);//
值交換
change(&stu1[i].mat,&stu1[i+1].mat);//
值交換
change(&stu1[i].ENG,&stu1[i+1].ENG);//
值交換
change(&stu1[i].com,&stu1[i+1].com);//
值交換
change1(&stu1[i].aver,&stu1[i+1].aver);//
值交換
change1(&stu1[i].total,&stu1[i+1].total);//
值交換
}
}
}
for(i=0;i<10;i++)
printf(print);//列印
}
void
change(int
*x,int
*y)
{
int
i;
i=*x;
*x=*y;
*y=i;//利用指針做變數替換
}
void
change1(float
*x,float
*y)
{
float
i;
i=*x;
*x=*y;
*y=i;//利用指針做變數替換
}
float
sum(int
x,int
y,int
z)
{
float
i;
i=(float)(x+y+z);
return(i);
}
前幾天也是幫同學做這樣的題
一模一樣
看來你也是WH大學的
❷ 如何用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語言程序設計