c语言 任意输入5个数从小到大排列 程序怎么写?

作者&投稿:邓莫 (若有异议请与网页底部的电邮联系)
用C语言编程:输入5个数,按从小到大顺序输出!?~

#include
void main()
{
int a[5];
int i,j,t;
printf("请输入5个数:");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
printf("
");
for(j=0;j<4;j++) //进行4次循环,实现4趟比较
for(i=0;i<4-j;i++) //在每一趟比较中进行4-1次比较
if(a[i]>a[i+1]) //相邻两个数比较
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("排序后的数据为:");
for(i=0;i<5;i++)
printf("%d ",a[i]);
printf("
");
}程序结果为:原理是:

#include
#include
int main ()
{
char s[5][20],t[20];
int n=5,i,j,k;
for(i=0;i<5;i++)
gets(s[i]);
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp(s[j],s[k])<0)k=j;
strcpy(t,s[i]); strcpy(s[i],s[k]); strcpy(s[k],t);
}
printf("======
");
for(i=0;i<n;i++)
puts(s[i]);
return 0;
}

#include <stdio.h>
int main(int argc, char *argv[])
{
int a[5]; /*保存5个数的数组*/
int i = 0 , j = 0; /*计数器*/
int m = 0 ; /*用于标识最小的那个数*/
int n; /*用于两个数的交换,中间值*/

/*从键盘接收5个数*/
for( i = 0 ; i < 5 ; i ++)
{
printf("请输入第%d个数", i + 1);
scanf("%d",&a[i]);
}

/*排序算法:选择排序*/
for( i = 0 ; i < 5 ; i ++)
{
m = i ;
for( j = i +1 ; j < 5 ; j ++)
if( a[j] < a[m] )
m = j ;
n = a[i];
a[i] = a[m];
a[m] = n;
}

/*输出*/
printf("经过排序后,这些数是:\n");
for( i = 0 ; i < 5 ;i ++)
printf("%d ",a[i]);
printf("\n");
return 0;
}

#include<stdio.h>
void main()
{ int i=0,j,n,num[5],p;
for(;i<5;i++) //读入5个整数
scanf("%d",&num[i]);

for(i=0;i<5;i++)
{
n=num[i];
p=0; //p为有无比num[i]小的值的条件
for(j=i+1;j<5;j++) //在剩余的数值中寻找最小值n及它所在下标p
if(n>num[j])
{ p=j;
n=num[j];
}

if(p!=0) //如果有比num[i]小的值则把最小值与num[i]交换
{ j=num[p]; //可以令外定义一个变量代替j
num[p]=num[i];
num[i]=j;
}
}

for(i=0;i<5;i++) //输出5个数
printf("%d ",num[i]);
}

我用的是合并排序:

#include"stdio.h"
#define N 10000
int a[N];
int b[N]={0};
int sign=0;

void Merge(int m,int mid,int n)
{
int i,j,k;
i=k=m;
j=mid+1;
while(i<=mid&&j<=n)
{
if(a[i]<a[j])
{
b[k]=a[i];
k++;
i++;
}
else
{
b[k]=a[j];
k++;
j++;
}
}
if(i<=mid)
{
while(i<=mid)
{
b[k]=a[i];
k++;
i++;
}
}
else
{
while(j<=n)
{
b[k]=a[j];
k++;
j++;
}
}
for(i=m;i<=n;i++)
{
a[i]=b[i];
}
}

int Msort(int m,int n)
{
int mid;
if(n!=m)
{
mid=(n+m)/2;
Msort(m,mid);
Msort(mid+1,n);
Merge(m,mid,n);
}
return(1);
}

void Print(int num)
{
int i;
for(i=0;i<num;i++)
{
printf("%d\n",a[i]);
}
}

int main()
{
int sign;
int i;
int num;
scanf("%d",&num);
for(i=0;i<num;i++)
{
scanf("%d",&a[i]);
}
sign=Msort(0,num-1);
Print(num);
}

#include "stdio.h"
void main()
{
int i=0,j,n,num[6];
while(i<5)
{
scanf("%d",&num[i]);
i++;
}

for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(num[i]>num[j])
{
n=num[i];
num[i]=num[j];
num[j]=n;
}
for(i=0;i<5;i++)
printf("%d ",num[i]);
}

#include"stdio.h"
//直接插入排序 最简单的
void InsertSort(int *l,int n)
{
int i,j,t;
for(i=1;i<n;i++)
{
t=l[i];
for(j=i-1;j>=0&&l[j]>t;j--)
l[j+1]=l[j];
l[j+1]=t;
}
}

void main()
{
int l[100];
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&l[i]);
InsertSort(l,n);
for(i=0;i<n;i++)
printf("%d ",l[i]);
}

我来个希尔排序

//sell sort
void shellinsert(int *l,int dk,int n)
{
int i,j,key;
for(i=dk;i<n;i++)
if(l[i]<l[i-dk])
{
key=l[i];
for(j=i-dk;j>=0&&l[j]>key;j-=dk)
l[j+dk]=l[j];
l[j+dk]=key;
}
}
void shellsort(int *l,int n)
{
int k;
for(k=n/2;k>0;k=k/2)
shellinsert(l,k,n);
}


东丽区18283744758: c语言 任意输入5个数从小到大排列 程序怎么写? -
慈例加味: #include <stdio.h> int main(int argc, char *argv[]) {int a[5]; /*保存5个数的数组*/int i = 0 , j = 0; /*计数器*/int m = 0 ; /*用于标识最小的那个数*/int n; /*用于两个数的交换,中间值*/ /*从键盘接收5个数*/for( i = 0 ; i < 5 ; i ++){printf("请...

东丽区18283744758: 求输入5个数,按从小到大输出的代码,C语言的 -
慈例加味: #include<stdio.h> void main() { int a,b,c,d,e,t; printf("please input a,b,c,d,e:"); scanf("%d,%d,%d,%d,%d",&a,&b,&c,&d,&e); if(a<=b){t=a; a=b; b=t;} if(a<=c){t=a; a=c; c=t;} if(a<=d){t=a; a=d; d=t;} if(a<=e){t=a; a=e; e=t;} printf("%d\n",a); if(b<=c)...

东丽区18283744758: 要求用户输入5个数,把这5个数从小到大输出. -
慈例加味: #include void main() { int i,j,t,a[5]; printf("输入5个整数\n"); for(i=0;i<5;i++) scanf("%d",&a[i]); for(i=0;i<4;i++) for(j=i+1;j<5;j++) if(a[i] { t=a[i]; a[i]=a[j]; a[j]=t; } for(i=0;i<5;i++) printf("%6d",a[i]); }

东丽区18283744758: 用C语言 .输入5个数到数组中,然后将它们进行排序,从小到大将最小的放在数组的第一位,然后将其余小的依次放入其它位子. (冒泡排序) -
慈例加味: #include"stdio.h" main() {int i; int a[5]; for(int k=0;k

东丽区18283744758: C语言,在界面文本中任意输入5个数字,请将数字从大到小排序输出,每个数字之间可用分号隔开 -
慈例加味: int Arr[5],n,i,j;//5位数要五个整数来分开存 scanf("%5d",n); for(i=0;ifor(i=0;i//for(n=0,i=0;i

东丽区18283744758: c语言输入五个数字,再从屏幕上从小到大输出 -
慈例加味: #include int main() { int i,j,a[5]; for (i=0;i scanf("%d", &a[i]); for (i=0;i for(j=i+1;j if (a[i] > a[j]) { int k=a[i]; a[i]=a[j]; a[j]=k; } for (i=0;i printf("%d ", a[i]); return 0; }

东丽区18283744758: 用C语言对输入的5个整数按从大到小的顺序排序并输出 怎么做啊??? -
慈例加味: #include<stdio.h> #include<stdlib.h> int cmp(const void *a ,const void *b) { return *(int*)b-*(int*)a; } int main() { int a[5],i; for(i=0; i<5; i++) scanf("%d",&a[i]); qsort(a,5,sizeof(a[0]),cmp); printf("%d",a[0]); for(i=1; i<5; i++) printf(" %d",a[i]); return 0; } 我用了C语言库函数qsort,可以进行快速排序,效率比冒泡快,学习一下吧.

东丽区18283744758: 选择法对5个数从小到大排序,c语言编程怎么写 -
慈例加味: #include<cstdio> #include<iostream> using namespace std; int a[7]; int main() {for(int i=1;i<=5;i++)scanf("%d",&a[i]);for(int i=1;i<=4;++i)for(int j=i+1;j<=5;++j)if(a[i]>a[j]){int t=a[i];a[i]=a[j];a[j]=t;}for(int i=1;i<=5;++i)printf("%d",a[i]);return 0; }

东丽区18283744758: 用c语言编写程序,把5当空格,从小到大排序
慈例加味: #include &lt;stdio.h&gt; #include &lt;string.h&gt; int main() { char str[1000]; //定义一个字符数组,用于接收输入的数字 int a[1000], space, i, j,num[1000], k, frag1, frag2, sum, temp, len; //while(gets(str)) //{ printf("input:\n"); gets(str); len = strlen(str);...

东丽区18283744758: c语言:用一维数组 输入五个数 使他从小到大排序 ,然后再输入一个数 使他和前面输入的数从小到大排序 -
慈例加味: #include <stdio.h>int main(){int a[10]; int temp; printf("输入5个数:\n"); for(int i=0;i<5;i++) { printf("第%d个数",i+1); scanf("%d",&a[i]); } for( i = 0;i<5;i++)for(int j = i+1;j<5;j++)if(a[i]>a[j])//降序只要改变这里的大于号就行了{temp = a[i];</p...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网