所以,你可以先找出最小值的数值和位子,交换最小值到a[0],把a[0]换到那个位子上。
然后,找出最大值的数值和位子,交换最大值到a[n-1],把a[n-1]换到那个位子上。
程序如下:
#include <stdio.h>
void myswap(int a[],int n)
int main()
{
int i,N
int a[10],t,k
printf("input: 5\n8 2 5 1 4\n")
scanf("%d",&N)
for (i=0i<Ni++)scanf("%d",&a[i])
myswap(a,N)
for (i=0i<Ni++)printf("%d ",a[i])
return 0
}
void myswap(int a[],int n)
{
int min,max,i,j,k
min=a[0]j=0
for (i=0i<ni++) if (a[i]<min){min=a[i]j=i}
min=a[0]a[0]=a[j]a[j]=min
max=a[n-1]k=n-1
for (i=1i<n-1i++) if(a[i]>max){max=a[i]k=i}
a[k]=a[n-1]a[n-1]=max
}
#include <stdio.h>int main(void) {
int arr[3][4]
int max,min /*记录最大值与最小值*/
int mini=0,minj=0,maxi=0,maxj=0 /*记录最大值与最小值的坐标*/
int i,j,temp
printf ("请输入矩阵内容(3行4列):\n")
for (i=0i<3i++)
for (j=0j<4j++)
scanf ("%d",&arr[i][j])
max=arr[0][0]
min=arr[0][0]
for (i=0i<3i++) {
for (j=0j<4j++)
if(arr[i][j]>max) {
maxi = i
maxj = j
}
if(arr[i][j]<min) {
mini = i
minj = j
}
}
printf ("原矩阵最小值为arr[%d][%d]=%d;最大值为arr[%d][%d]=%d。\n",mini,minj,arr[mini][minj],maxi,maxj,arr[maxi][maxj])
temp = arr[mini][minj] /*交换最小值与最大值*/
arr[mini][minj] = arr[maxi][maxj]
arr[maxi][maxj] = temp
printf ("最小值与最大值交换后矩阵:\n")
for (i=0i<3i++) {
for (j=0j<4j++)
printf ("%d\t",arr[i][j])
printf ("\n")
}
return 0
}
运行结果
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)