这里我想到指针的灵活性,就用到了下标法。
min 和 max 大同小异,我就拿max来讲细节。
#include <stdio.h>
#define N 10
void input(int *p,int n) {
int i;
for(i=0; i<n; i++) {
scanf("%d",(p++));
}
}
void output(int *p,int n) {
int i;
for(i=0; i<n; i++) {
printf("%6d",*(p+i));
}
}
//这里想到了指针可以用下标法来表示数组。
void max_array(int *p, int n) {
int i,max,k; //用数组的第一个元素的值赋给max, k是用来替换的中间量。
int loc=0; //loc用来表示当某个元素大于max时,该元素的序号。
max=*p;
for(i=0; i<n; i++) {
if(max<*(p+i)) {
max=*(p+i);
loc=i;
}
}
//这里就用到了下标法,就不用担心指针p不知道指向哪个元素。
k=p[loc];
p[loc]=p[n-1];
p[n-1]=k;
}
void min_array(int *p, int n) {
int i,min,k;
int loc=0;
min=*p;
for(i=0; i<n; i++) {
if(min>*(p+i)) {
min=*(p+i);
loc=i;
}
}
k=p[loc];
p[loc]=p[0];
p[0]=k;
}
int main() {
void input(int *p, int n); //从键盘上输入n个整数到p所指向的数组
void max_array(int *p, int n); //找到p所指向数组中的最大数与最后一个数组元素互换
void min_array(int *p, int n); //找到p所指向数组中的最小数与第一个数组元素互换
void output(int *p,int n); //输出p所指向的数组中的n个数
int num[N];
input(num,N);
max_array(num,N);
min_array(num,N);
output(num,N);
return 0;
}
版权声明:本文为Lulu_qifei原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。