输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
写三个函数,1) 输入10个数,2)进行处理,3)输出10个数
//C程序设计第五版(谭浩强)
//章节:第八章 善于利用指针
// 所有练习均要求用指针方法处理
//练习8.3 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
// 写三个函数,1) 输入10个数,2)进行处理,3)输出10个数
#include
int main()
{
void input(int *num, int n);
void exchange(int *num, int n);
void print(int *num, int n);
int num[100],n;
printf("您打算输入多少个整数:");
scanf("%d", &n);
input(num, n);
exchange(num, n);
print(num, n);
}
void input(int *num, int n)
{
int *p;
printf("请依次输入%d个整数,空格隔开:\n", n);
for(p=num;p<num+n;){
scanf("%d", p++);
}
}
void exchange(int *num, int n)
{
int *min=num,*max=num,*p=num,temp;
printf("将其中最小的数与第一个数对换,把最大的数与最后一个数对换.");
for(;p<num+n;p++){
if(*min>*p){
min=p;
}
if(*max<*p){
max=p;
}
}
temp = *first;
*first = *min;
*min = temp;
temp = *last;
*last = *max;
*max = temp;
// 也可以写成如下形式,地址本身是没有变的,变化了也不会影响主函数,变化的是地址所指向的值
// temp = *num;
// *num = *min;
// *min = temp;
// temp = *(num+n-1);
// *(num+n-1) = *max;
// *max = temp;
}
void print(int *num, int n)
{
int *p;
printf("最终输出的结果为:\n");
for(p=num;p<num+n;){
printf("%3d\t", *p++);
}
}