69,373
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
void swap(int *a, int *b)
{
int c;
c = *a;
*a = *b;
*b = c;
}
int main()
{
int a[10];
int max, maxno;
int i, j;
printf("\n请输入10个正整数:");
for (i = 0; i < 10; i++)
scanf_s("%d", &a[i]);
for (i = 0; i < 10; i++) //遍历数组的10个值
{
//max = a[i]; //把最大值 放在 max中
maxno = i; //把最大值的下标放在 序号中
for (j = i + 1; j < 10; j++)
{
//if (max < a[j]) //如果数组的其它值大于最大值
if (a[maxno] < a[j]) //如果数组的其它值大于最大值
{
//max = a[j]; //记住最大值
maxno = j; //记住最大值下樯
}
}
if (i != maxno) //如果 最大值 下标不等于当前下标
swap(&a[i], &a[maxno]); //交换最大值 与当前值
printf("%d\t", a[i]);
}
printf("\n");
}
int a[10];
int max, maxno;
int i, j;
printf("\n请输入10个正整数:");
for (i = 0; i < 10; i++)
scanf("%d", &a[i]);
for (i = 0; i < 10; i++) //遍历数组的10个值
{
max = a[i]; //把最大值 放在 max中
maxno = i; //把最大值的下标放在 序号中
for (j = i + 1; j < 10; j++)
{
if (max < a[j]) //如果数组的其它值大于最大值
{
max = a[j]; //记住最大值
maxno = j; //记住最大值下樯
}
}
if (i != maxno) //如果 最大值 下标不等于当前下标
swap(&a[i], &a[maxno]); //交换最大值 与当前值
printf("%d\t", a[i]);
}
printf("\n");
for (i = 0; i < 10; i++) //遍历数组的10个值
{
max = a[i]; //把最大值 放在 max中
maxno = i; //把最大值的下标放在 序号中
for (j = i + 1; j < 10; j++)
{
if (max < a[j]) //如果数组的其它值大于最大值
{
max = a[j]; //记住最大值
maxno = j; //记住最大值下樯
if (i != maxno) //如果 最大值 下标不等于当前下标 是因为上面有交换,这里才能交换。。。没有交换,则不能交换,不能
//放到比较条件外, 调试工具真是好用。比较容易找到问题
swap(&a[i], &a[maxno]); //交换最大值 与当前值
}
}
printf("%d\t", a[i]);
}
void swap(int *a, int *b)
{
int c;
c = *a;
*a = *b;
*b = c;
}
main()
{
int a[10];
int max, maxno;
int i, j;
printf("\n请输入10个正整数:");
for (i = 0; i < 10; i++)
scanf_s("%d", &a[i]);
for (i = 0; i < 10; i++) //遍历数组的10个值
{
max = a[i]; //把最大值 放在 max中
maxno = i; //把最大值的下标放在 序号中
for (j = i + 1; j < 10; j++)
{
if (max < a[j]) //如果数组的其它值大于最大值
{
max = a[j]; //记住最大值
maxno = j; //记住最大值下樯
}
if (i != maxno) //如果 最大值 下标不等于当前下标
swap(&a[i], &a[maxno]); //交换最大值 与当前值
}
printf("%d\t", a[i]);
}
printf("\n");
}