输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。 写三个函数,1) 输入10个数,2)进行处理,3)输出10个数——C语言

1 概述

输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
写三个函数,1) 输入10个数,2)进行处理,3)输出10个数

2 解法

//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++);
	}
}

你可能感兴趣的:(C)