一、选择排序
下面是第一种的代码和运行结果,可以自己把手动输入改为直接赋值
#include<stdio.h>
#pragma warning(disable:4996)//我使用的是Microsoft Visual Studio,没有这句话会报错
void sort(int x[], int n);
int main()
{
int i, a[10];
for (i = 0; i < 10; i++)
{
printf("请输入任意十个数,还需要输入:%d个数\n",10-i);
scanf("%d", &a[i]);
}
sort(a, 10);
printf("从大到小顺序:\n");
for ( i = 0; i < 10; i++)
{
printf("%d\n", a[i]);
}
printf("\n");
return 0;
}
void sort(int x[], int n)
{
int i, j, k = 0, t;
for (i = 0; i < n - 1; i++)
{
for (j = i+1;j < n; j++)
if (x[j] > x[k])
k = j;
if (k != i)
{
t = x[i];
x[i] = x[k];
x[k] = t;
}
}
}
二、正反顺序的颠倒
#include<stdio.h>
#pragma warning(disable:4996)//我使用的是Microsoft Visual Studio,没有这句话会报错
void inv(int x[], int n);
int main()
{
int i, a[10];
for (i = 0; i < 10; i++)
{
printf("请输入任意十个数,还需要输入:%d个数\n", 10 - i);
scanf("%d", &a[i]);
}
inv(a, 10);
printf("反序输出:\n");
for (i = 0; i < 10; i++)
{
printf("%d\n", a[i]);
}
printf("\n");
return 0;
}
void inv(int x[], int n)//方法一
{
int temp, *i, *j;
i = x, j = x + n - 1;
for (;i<j;i++,j--)
{
temp = *i;
*i = *j;
*j = temp;
}
}
//void inv(int x[], int n)//方法二
//{
// int temp,i,j,m=(n-1)/2;
// for (i = 0; i <=m; i++)
// {
// j = n - 1 - i;
// temp= x[i];
// x[i] = x[j];
// x[j] = temp;
// }
//
//}