6-4 用指针访问数组
用指针实现,输入6个整数,把最小数与第1个数交换,最大数与最后1个数交换,其它数据不动。输入保证最大值和最小值唯一。请编写3个函数:
(1)输入6个数;
(2)进行处理函数;
(3)输出6个数,每个数占3个宽度,左对齐。
函数接口定义:
void inputdata(int *p);
void swapdata(int *p);
void printdata(int *p);
p是传入的数组首地址。
裁判测试程序样例:
#include <stdio.h>
void inputdata(int *p);
void swapdata(int *p);
void printdata(int *p);
int main(){
int a[6];
inputdata(a);
swapdata(a);
printdata(a);
return 0;
}
输入样例1:
2 1 6 5 4 3
输出样例1:
1 2 3 5 4 6
void inputdata(int *p){
int i;
for(i=0;i<6;i++){
scanf("%d",&*(p+i));
}
}
void swapdata(int *p){
int i,temp;
int minindex=0;
int maxindex=0;
for (i=1;i<6;i++){
if (*(p+i)<*(p+minindex)){
minindex=i;
}
if(*(p+i)>*(p+maxindex)){
maxindex=i;
}
}
temp=*(p+minindex);
*(p+minindex)=*p;
*p=temp;
if(maxindex==0)
maxindex=minindex;
temp=*(p+maxindex);
*(p+maxindex)=*(p+5);
*(p+5)=temp;
}
void printdata(int *p){
int i;
for(i=0;i<6;i++){
printf("%-3d",*(p+i));
}
printf("\n");
}