输入一批数,最多 100 个,当输入 0 时,结束输入,将这批整数按从小到大的顺序排列后输出。

 

代码如下:

#include <stdio.h>
#define N 100
void inputarr(int *p,int *n);
void bubblesort(int *arr,int length);
void outputarr(int *arr,int n);
void swap(int *a,int *b);
int main()
{
	int a[N];
	int i,n;
	inputarr(a,&n);
	bubblesort(a,n);
	outputarr(a,n);
	return 0;
}
void inputarr(int *p,int *n)
{
	*n = 0;
	do 
	{
		scanf("%d",&p[*n]);
		(*n)++;
	} while (p[*n-1] != 0);
	*n = *n -1;
}
void bubblesort(int *arr,int length)
{
	int i,j;
	for(i = 0; i < length -1; i++)
	{
		for (j = 0; j < length -1-i;j++)
		{
			if(arr[j] > arr[j+1])
				swap(&arr[j],&arr[j+1]);
		}
	}
}
void outputarr(int *arr,int n)
{
	int i = 0;
	for (; i < n;i++)
	{
		if(i < n-1)
			printf("%d ",arr[i]);
		else
			printf("%d",arr[i]);
	}
	printf("\n");
}
void swap(int *a,int *b)
{
	int tmp;
	tmp = *a;
	*a = *b;
	*b = tmp;
}

 

#include <stdio.h>
 
#define ARR_LEN 255 /*数组长度上限*/
#define elemType int /*元素类型*/
 
/* 冒泡排序 */
/* 1. 从当前元素起,向后依次比较每一对相邻元素,若逆序则交换 */
/* 2. 对所有元素均重复以上步骤,直至最后一个元素 */
/* elemType arr[]: 排序目标数组; int len: 元素个数 */
void bubbleSort (elemType arr[], int len) {
    elemType temp;
    int i, j;
    for (i=0; i<len-1; i++) /* 外循环为排序趟数,len个数进行len-1趟 */
        for (j=0; j<len-1-i; j++) { /* 内循环为每趟比较的次数,第i趟比较len-i次 */
            if (arr[j] > arr[j+1]) { /* 相邻元素比较,若逆序则交换(升序为左大于右,降序反之) */
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
}
 
int main (void) {
    elemType arr[ARR_LEN] = {3,5,1,-7,4,9,-6,8,10,4};
    int len = 10;
    int i;
     
    bubbleSort (arr, len);
    for (i=0; i<len; i++)
        printf ("%d\t", arr[i]);
    putchar ('\n');
     
    return 0;
}

用sort函数就可以