输入11个整数,如果第1个数为1,则将其中的第2至11个数升序排列;如果第1个数为0,则降序排列
先输入一个整数表示排序方式,然后定义一个数组接收10个整数
#include <stdio.h>
void sorts(int *p,int n,int order)
{
int i,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if((order == 1 && a[j] > a[j+1]) || (order == 0 && a[j] < a[j+1]))
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
int main()
{
int a[10],order;
scanf("%d",&order);
for(int i=0;i<10;i++)
scanf("%d",&a[i]);
sorts(a,10,order);
for(int i=0;i<10;i++)
printf("%d ",a[i]);
}
该回答引用GPT:
这是一道简单的排序问题。主要思路是根据输入的第一个数来确定升降序排列,进而使用相应的排序算法进行操作。在这个问题中,我们使用选择排序算法,通过逐个选择最小(大)的数依次放置在前面或后面,来达到排序的目的。
举个例子:输入为1 5 2 4 3 9 8 7 6 11 10,因为第一个数为1,所以需要升序排列。首先选择5与2比较,选出2,再从余下数中选择最小的4,以此类推,经过10次选择操作后,最后一定会将最小的数11选择出来,此时排序操作就完成了。
下面是代码实现:
#include <stdio.h>
int main()
{
int a[11], i, j, temp, first;
printf("请输入11个整数:\n");
for (i = 0; i < 11; i++)
{
scanf("%d", &a[i]);
}
first = a[0]; // 将第一项赋值给first
for (i = 1; i < 11; i++) // 选择排序
{
for (j = i + 1; j < 11; j++)
{
if ((first == 1 && a[i] > a[j]) || (first == 0 && a[i] < a[j])) // 根据first决定升降序
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
if (first == 1) // 输出结果
{
printf("升序排序后结果为:");
for (i = 1; i < 11; i++)
{
printf("%d ", a[i]);
}
}
else
{
printf("降序排序后结果为:");
for (i = 11 - 1; i >= 1; i--)
{
printf("%d ", a[i]);
}
}
return 0;
}
如还有疑问,可留言帮助解决。