C语言中,从键盘输入10个数,从小到大排列输出,怎么写啊,最好注明语句的意思?

如题所述

#include<stdio.h>
void swap(int *a,int *b)
{                           
    int tmp;
    tmp = *a;
    *a = *b;
    *b = tmp;
}
void bubblesort(int k[],int n)
{                    /*冒泡排序*/
    int i,j,temp;
    int  cont = 0;
    for(i=0;i<n-1;i++)   //控制每趟往前推一个,即少比较一次
    {            
        //flag = 0; //加上flag
        for(j=0;j<n-i-1;j++) //从第一个开始,不断与相邻的值比较,并交换最值,一直推到最后,形如冒泡
        {  
            cont++;
            if(k[j]>k[j+1])
            {
                temp = k[j];
                k[j] = k[j+1];
                k[j+1] = temp;
              
            }
        }
    }
          
}
int main()
{
    int i,a[10] = {0};  
    printf("请输入10个数字\n");
    for(i = 0; i<10; i++)
    {
        scanf("%d",&a[i]);
    }
         
    printf("The data array is\n") ;
    for(i=0;i<10;i++)                            /*显示原序列之中的元素*/
        printf("%d ",a[i]);
         
    bubblesort(a,10);                            /*执行冒泡排序*/
    printf("\nThe result of bubble sorting for the array is\n");
    for(i=0;i<10;i++)
        printf("%d ",a[i]);                            /*输出排序后的结果*/
    printf("\n");
         
    return 0;
}

亲测

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-14
#include <stdio.h>
#define N 10
main()
{
int i,j;/*i,j为循环变量*/
long a[N],temp,min; /*a[min]为比较时较小的数*/
printf("请依次输入%d个数。\n",N);
/*进行循环输入这十个数*/
for(i=0;i<N;i )
scanf("%ld",&a[i]);
printf("你输入的%d个数是\n",N);
/*进行循环输出这十个数*/
for(i=0;i<N;i )
printf("%ld ",a[i]);
printf("\n");
/*利用选择法,即从后9个比较过程中,选择一个最小的与第一个

元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。*/
for(i=0;i<N-1;i )
{
min=i;
for(j=i 1;j<N;j )
if(a[j]>a[min])
{
temp=a[j];
a[j]=a[min];
a[min]=temp;
}
}
printf("这%d个数从大到小排列为\n",N);
/*打印出这十个经排列后的数*/
for(i=0;i<N;i )
printf("%d ",a[i]);
printf("\n");
}

排序的方法还有标记和冒泡法,具体的你自己去搜吧。
第2个回答  2013-05-14
#include<stdio.h>
void main()
{
int a[10],i,m;
for(i=0;i<10;i++)
printf("%d",&a[i]);
m=a[0];
if(m>a[i]);
a[i]=m;
for( i=0;i<10;i++)
printf("%d",&a[i]);
}