题目描述
用指针实现:由键盘输入10个整数,将他们按由小到大的顺序排列。
输入
由键盘输入10个整数。
输出
将他们按由小到大的顺序排列。
样例输入
1 5 4 3 2 9 23 11 5 7
样例输出
1 2 3 4 5 5 7 9 11 23
题目分析:
这是一个排序问题,我们可以创建一个数组,然后利用函数(可以是自己编写,也可以是系统自带的)来进行排序。
方法一:利用stdlib库中的qsort函数进行排序(大家最好记下来这个代码)
#include<stdio.h>
#include<stdlib.h>
#define n 10
int cmp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int main()
{
int a[n]={0};
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
qsort(a,n,sizeof(a[0]),cmp);
for(int i=0;i<n;i++)
{
printf("%d ",a[i]);
}
return 0;
}
方法二:利用冒泡排序法进行排序,比较的东西是指针指向的内容
代码实现:
#include<stdio.h>
#define n 10
int main()
{
int a[n]={0};
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-1-i;j++)
{
if(*(a+j)>*(a+j+1))
{
int temp=0;
temp=*(a+j);
*(a+j)=*(a+j+1);
*(a+j+1)=temp;
}
}
}
for(int i=0;i<n;i++)
{
printf("%d ",a[i]);
}
return 0;
}
运行结果:
欢迎批评指正!