输入一个正整数n(1< n ≤10),再输入n个整数,将最小值与第一个数交换,最大值与最后一个数交换

坐等 我不知道哪里错了
运行最小值调换的时候可以 运行最大值就不行了
求指教 求速度
#include<stdio.h>
int main(void)
{
int n,i,index,temp,bian,cun;
int a[10];
printf("enter n:");
scanf("%d",&n);
printf("input %d intergers:",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);

index=0;
for(i=1;i<n;i++) {
if(a[i]<a[index])
index=i; }
temp=a[0];
a[0]=a[index];
a[index]=temp;

bian=n;
for(i=0;i<n-1;i++) {
if(a[i]>a[bian])
bian=i; }
cun=a[n];
a[n]=a[bian];
a[bian]=cun;

for(i=0;i<n;i++)
printf("%d",a[i]);
return 0;
}
最大值与最后一个交换,需要使用到max 和a[i],以及一个郑州链临时变量喊孙,代码中使用的是max a[0] a[i],这里貌似有点问题。最小值与第一个交换,貌似你也是用的这3个变量。
如果觉得使用的变量过多,可以不使用临时变量,用嵌入式程序员的思路,节约空间复杂度,只使用max 和 a[i]两个变量就地进行值的交换
在两个 if 语句内改成
max = max + a[i];
a[i] = max - a[i];
max = max - a[i];
如果担心两数和超出范围可以用^异或操作
改成
max = max ^ a[i];
a[i] = a[i] ^ max;
max = max ^ a[i];
这样就不用担心两整数的和超出表示范围了。

下面的min的操作也与以上迹吵内容类似。
改成
min = min ^ a[0];
a[0] = a[0] ^ min
min = min ^ [a0]
index=0;
for(i=1;i<n;i++) {这里i=0
bian=n;
for(i=1;i<n;i++) { i=1略过第一位最小的
if(a[i]>a[bian])
bian=i; }
cun=a[n-1];
a[n-1]=a[bian];
a[bian]=cun;
数组搭知饥是知返从猛缺0开始的
cun=a[n];改成 cun=a[n-1];