C语言排序程序写法
#include stdio.h
void main()
{
int i,j,num=0;
float a[200],t;
while (scanf(“%f”,a[num]) != EOF)
{
num++;
}
for(j=0;jnum;j++)
for(i=0;inum-1-j;i++)
if(a[i]a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
for(i=0;inum;i++)
printf(“%g “,a[i]);
}
如何用c语言编写冒泡排序的程序?
对拥有 n 个元素的数组 R[n] 进行 n-1 轮比较。
第一轮,逐个比较 (R[1], R[2]), (R[2], R[3]), (R[3], R[4]), ……. (R[N-1], R[N]),最大的元素被移动到 R[n] 上。
第二轮,逐个比较 (R[1], R[2]), (R[2], R[3]), (R[3], R[4]), ……. (R[N-2], R[N-1]),次大的元素被移动到 R[n-1] 上。
。。。。。。
以此类推,直到整个数组从小到大排序。
具体的代码实现如下所示:
#include stdio.h
int main(){
int nums[10] = {4, 5, 2, 10, 7, 1, 8, 3, 6, 9};
int i, j, temp;
//冒泡排序算法:进行 n-1 轮比较
for(i=0; i10-1; i++){
//每一轮比较前 n-1-i 个,也就是说,已经排序好的最后 i 个不用比较
for(j=0; j10-1-i; j++){
if(nums[j] nums[j+1]){
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
//输出排序后的数组
for(i=0; i10; i++)
{
printf(“%d “, nums[i]);
}
printf(“\n”);
return 0;
}
编写C语言程序,把一个数组按从小到大的次序排列起来
源程序以及算法注释如下:
#define _CRT_SECURE_NO_WARNINGS//VS编译环境需要进行宏定义,VC6.0可忽略
#includestdio.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:\n”);//文字提示
for (m = 0; m = 9; m++)//依次从小到大输出
printf(“%d “, number[m]);//输出元素
printf(“\n”);
printf(“max–min:\n”);//文字提示
for (m = 0; m = 9; m++)//依次从大到小输出
printf(“%d “, New_number[m]);//输出元素
printf(“\n”);
return 0;
}
程序运行结果如下:
扩展资料:
其他简单实现程序:
#includestdio.h
int main()
{
int a[10]={0};
int i,j,temp;
for(i = 0;i10;i++)
{
scanf(“%d”,a[i]);
}
for(i = 0;i10;i++)
{
for(j = 0;j10-i-1;j++)
{
if(a[j]a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(i = 0;i10;i++)
printf(“%d “,a[i]);
return 0;
}
如何用C语言编写一个排序程序
楼上的用的是C++
若单纯的用C那就是这样
#includestdio.h
#define
“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;i10;i++)
scanf(“%d%d%d%d”,stu[i].num,stu[i].mat,stu[i].ENG,stu[i].com);
for(i=0;i10;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;j9;j++)//冒泡排序
为理解简单
就没用别的排序方法
哈哈
{
for(i=0;i9-j;i++)
{
if(stu1[i].averstu1[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;i10;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语言编写一个程序,实现按从大到小的顺序排序输出10个数
用选择排序法编写c语言,实现从键盘上输入10个数,按从大到小的顺序排序输出。代码如下:
#includestdio.h
int main()
{
int i,j,a[10],t;
printf(“输入数”);
for (i = 0; i 10; i++)
scanf(“%d”,a[i]);
for (i = 0; i 10; i++)
{
for (j = i + 1; j 10;j++)
if (a[i] a[j]){
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
printf(“从大到小”);
for (i = 0; i 10; i++)
printf(“%2d”, a[i]);
return 0;
}
扩展资料:
代码还可以设计,如下:
#includestdio.h
int main()
{
int a[10],i,j,t;//定义数组;
for(i=0;i10;i++){
scanf(“%d”,a[i]);//给数组赋值;
}
for(i=0;i9;i++)//10个数,进行9轮比较;
for(j=0;j10-i;j++){//第一个数比较9次,依次递减;
if(a[j]a[j+1]) {//交换值;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i=0;i10;i++){
printf(“%d\n”,a[i]);//输出数组的值;
}
return 0;
}
}
printf(“the sorted numbers:\n”);
for(i=0;i10;i++)
printf(” %d”,a[i]);
printf(“\n”);
}
参考资料:百度百科-printf