刚开始非常害怕,为什么4个变量就可以完成要求,后来去凑答案可以运行,最后又去寻求大佬们的帮助,终于想明白了这个问题。
#include <stdio.h>
int main() {
int a[10] = { 0 }, max_p = 0, min_p = 0;
printf("请输入10个数字");
for (int i = 0; i < 10; i++) { // 输入元素
scanf("%d", &a[i]);
}
int max = a[0];
int min = a[0];
for (int i = 0; i < 10; i++) { // 找出最大值及其位置
if (a[i] >= max) {
max = a[i];
max_p = i;
}
}
if (max_p != 0) {
int tmp = a[0];
a[0] = max;
a[max_p] = tmp;
}
for (int i = 0; i < 10; i++) { // 找出最小值及其位置
if (a[i] <= min) {
min = a[i];
min_p = i;
}
}
if (min_p != 0) {
int tmp = a[9];
a[9] = min;
a[min_p] = tmp;
}
for (int i = 0; i < 10; i++) {
printf("%d", a[i]);
printf("\t");//有更简洁的表达,但是其实空格也可以
}
printf("\n");
return 0;
}
更优解:
#include <stdio.h>
int main()
{
int d1, d2, x1, x2, temp1, temp2;
int a[10] = {0};
for (int i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
d1 = a[0];
x1 = a[0];
d2 = 0;
x2 = 0;
for (int i = 0; i < 10; i++)
{
if (a[i] > d1)
{
d1 = a[i];
d2 = i;
}
if (a[i] < x1)
{
x1 = a[i];
x2 = i;
}
}
temp1 = a[0];
temp2 = a[9];
a[0] = d1;
a[d2] = temp1;
a[9] = x1;
a[x2] = temp2;
for (int i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
大佬的解法:
#include <stdio.h>
int main()
{
int d1, d2, x1, x2, temp1, temp2;
int a[10] = {0};
for (int i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
d1 = a[0];
x1 = a[0];
d2 = 0;
x2 = 0;
for (int i = 0; i < 10; i++)
{
if (a[i] > d1)
{
d1 = a[i];
d2 = i;
}
if (a[i] < x1)
{
x1 = a[i];
x2 = i;
}
}
temp1 = a[0];
temp2 = a[9];
a[0] = d1;
a[d2] = temp1;
a[9] = x1;
a[x2] = temp2;
for (int i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
printf("\n");
return 0;
}