用C语言编一个程序,把一个一维数组中最大的数和第一个数调换,最小的和最后一个数调换。谢谢好心人

不用指针的形式

#include <stdio.h>

#define N 10

int main() {
int i, arr[N] = {21, 3, 100, 14, 33, 2, 99, 100, -5, 70}; //i为循环变量
int max = arr[0], min = arr[0], k, tmp;
/*max存储最大数字,min存储最小数字,k存储最大数字或者最小数字下标,
tmp做临时变量*/
for( i = 0; i < N; i ++ )
printf("%d ", arr[i]);
for ( i = 0; i < N; i ++ )
if ( arr[i] > max ){
max = arr[i];
k = i;
}
//循环一遍后,arr[k]即为最大值得那个数,k为其下标
tmp = arr[0];
arr[0] = arr[k];
arr[k] = tmp; //最大值和第一个数交换了

for ( i = 0; i < N; i ++ )
if ( arr[i] < min ){
min = arr[i];
k = i;
}
//循环一遍后,arr[k]即为最小值得那个数,k为其下标
tmp = arr[N-1];
arr[N-1] = arr[k];
arr[k] = tmp; //最大值和第一个数交换了

printf("交换后,各个数字为:\n");
for( i = 0; i < N; i ++ )
printf("%d ", arr[i]);
system("pause");
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-10
#include <stdio.h>
void main()
{
int a[50], i, n, max, min, maxpos, minpos, temp;
printf("数组大小:");
scanf("%d", &n);
for (i = 0; i != n; ++i)
{
scanf("%d", &a[i]);
if (i == 0)
{
max = min = a[i];
maxpos = 0;
minpos = 0;
}
if (max < a[i])
{
max = a[i];
maxpos = i;
}
if (min > a[i])
{
min = a[i];
minpos = i;
}
}
if (maxpos == n - 1 && minpos == 0)
{
temp = a[maxpos];
a[maxpos] = a[minpos];
a[minpos] = temp;
}
else
{
temp = a[maxpos];
a[maxpos] = a[0];
a[0] = temp;
temp = a[minpos];
a[minpos] = a[n - 1];
a[n - 1] = temp;
}
for (i = 0; i != n; ++i)
{
printf("%d ", a[i]);
}
}
第2个回答  2011-12-10
#include "stdio.h"
#include "stdlib.h"

int main()
{
int MaxIndex=0,MinIndex=0;

int Array[10];
// srand(193428);
for (int i=0;i<10;i++)
{
Array[i]=rand();
printf("%d\t",Array[i]);
}
printf("\r\n");

for (i=1;i<10;i++)
{
if (Array[MaxIndex]<Array[i]) MaxIndex=i;
else if (Array[MinIndex]>Array[i]) MinIndex=i;
}
printf("MaxIndex=%d,MinIndex=%d\r\n",MaxIndex,MinIndex);
int tmp=Array[0];
Array[0]=Array[MaxIndex];
Array[MaxIndex]=tmp;
if (MinIndex==0) MinIndex=MaxIndex;
tmp=Array[9];
Array[9]=Array[MinIndex];
Array[MinIndex]=tmp;

for (i=0;i<10;i++)
{
printf("%d\t",Array[i]);
}
printf("\r\n");

return 0;
}