永发信息网

利用指针编写程序,将一个一维数组a[10]中的最大元素和首位元素换位,最小元素和末位元素换位。

答案:3  悬赏:20  手机版
解决时间 2021-01-18 07:01
  • 提问者网友:暗中人
  • 2021-01-17 11:53
利用指针编写程序,将一个一维数组a[10]中的最大元素和首位元素换位,最小元素和末位元素换位。
最佳答案
  • 五星知识达人网友:青灯有味
  • 2021-01-17 12:19

#include
int main()
{
int a[10],min,max,*p,i,m;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
max=*a;
m=0;
for(p=a,i=0;pif(*p>max)
{max=*p;m=i;
}
*(a+m)=*a;
*a=max; 
min=*(a+9);
m=9;
for(p=a+9,i=9;p-a>=0;p--,i--)
if(*p{min=*p;m=i;
}
p=a+m; 
*p=*(a+9);
*(a+9)=min;
for(p=a;p-a<10;p++)
printf("%d ",*p);
return 0;
}
全部回答
  • 1楼网友:神也偏爱
  • 2021-01-17 14:54
#include
int main()
{
int a[10],min,max,*p,i,m;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
max=*a;
m=0;//这儿m初始化为0,就是防止max==a[0]时,m没有值
for(p=a,i=0;pif(*p>max)
{
max=*p;
m=i;
}
*(a+m)=*a;
*a=max; 
min=*(a+9);
m=9;//这儿m=9,也是为了防止a[9]==min时,m为数组中最大值的下标(前程序执行的结果)
for(p=a+9,i=9;p-a>=0;p--,i--)
if(*p
min=*p;
m=i;
}
p=a+m;
*p=*(a+9);
*(a+9)=min;
for(p=a;p-a<10;p++)
printf("%d ",*p);
return 0;
}
  • 2楼网友:猎心人
  • 2021-01-17 13:57
#include
void main()
{ int a[10],*pmax,*pmin,i,*p;
for ( i=0;i<10;i++ ) scanf("%d",&a[i]); //输入数组
pmax=a; for ( i=0;i<10;i++ ) if ( a[i]>(*pmax) ) pmax=a+i; //找到最大值
i=a[0]; a[0]=(*pmax); *pmax=i; //与首位交换数据
pmin=a; for ( i=0;i<10;i++ ) if ( a[i]>(*pmin) ) pmin=a+i; //找到最小值
i=a[9]; a[9]=(*pmax); *pmax=i; //与末尾交换数据
for ( i=0,p=a;i<10;i++,p++ ) printf("%d ",*p); printf("\n"); //输出数组
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯