编写一个程序,对给定的一维整型数组a,数组元素个数为20个,现要求把数组中的最大元素和a[0]进行交换,其

编写一个程序,对给定的一维整型数组a,数组元素个数为20个,现要求把数组中的最大元素和a[0]进行交换,其他位置的元素都不动

#include<stdio.h>

void main()

{

int a[20];

printf("输入数组元素:\n");

for(int i=0;i<20;i++)

{

printf("a[%d]:",i);

scanf("%d",&a[i]);

}

int *max=&a[0];//必须使用指针,在内存中进行交换

for(i=1;i<20;i++)//遍历元素找到最大值

{

if(a[i]>*max)

max=&a[i];

}

if(*max!=a[0])//最大值不是a[0]则与a[0]交换

{

int temp=a[0];

a[0]=*max;

*max=temp;

}

printf("交换后数组:\n");

for(i=0;i<20;i++)

{

printf("a[%d]:%d\n",i,a[i]);

}

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-08
#include <stdio.h>
#include <algorithm>
using namespace std;
void main()
{
int a[20]= {2,3,4,5,7,3,6};
int max;
max = 0;
for(int i = 1;i<20;i++)
{
if(a[i]>a[max])
{
max = i;
}
}
swap(a[0],a[max]);
//put out
for(i = 0;i<20;i++)
{
printf("%d",a[i]);
}

}
//y[?] ;//y[3 7 11 15 2 6 10 14 1 5 9 13 0 4 8 12]
//输出3 7 11 15 2 6 10 14 1 5 9 13 0 4 8 12
第2个回答  推荐于2018-05-12
已通过测试,望采纳
#include <stdio.h>
main()
{ int a[20];
int i,max,index=0;
printf("Input the number of array:");
for(i=0;i<20;i++)
scanf("%d",&a[i]);
for(i=0;i<20;i++)
printf("%4d",a[i]);
max=a[0];
for(i=0;i<20;i++)
if(max<a[i])
{ max=a[i];
index=i;
}
if(index!=0)
{ a[index]=a[0];
a[0]=max;
}
for(i=0;i<20;i++)
printf("%4d",a[i]);
}本回答被网友采纳