栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C语言】输入10个整数,将其中最大的数放在首位,最小的数放在末尾,然后输出之。

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C语言】输入10个整数,将其中最大的数放在首位,最小的数放在末尾,然后输出之。

 思路:写三个函数:输入函数、处理函数、输出函数。利用指针完成关键部分的操作。

编写程序:

#include

void input(int a[]){	
	int i;
	printf("请输入十个数:n");
	for(i=0;i<10;i++)
		scanf("%d",&a[i]);
} 

void fun0(int a[10]){
	int *p,*max,*min,t; 
	max=min=a;		//指针初始化 
	for(p=a+1;p*max)		//若当前元素的值比当max指向的元素值大 
			max=p;			//让max指向当前元素 
	//与尾元素交换 
	t=*max;
	*max=a[9];
	a[9]=t;
}

void output(int a[]){
	int *p;
	for(p=a;p

之所以使用两个循环来完成最大最小数位置的交换,是因为本次我们使用指针来记录了最大最小值,如果使用一个循环当然可以找出最大最小值的位置,然后把它们的值交换到指定位置上去,看上去没有什么问题,但如果有一个最大值就在第一的位置上,我们仍然使用交换,那么先将最小值放到第一个的位置上,此时我们刚才记录最大值的指针没有动,但它却指向了刚刚交换好的最小值了,这样就出现了bug。所以用两个循环依次找出最大最小值切找到后就交换到指定位置上去。

当然用一个循环一次找出最大最小值,只需要在交换值的时候添加一个判断语句(如果最大值在第一的位置上,那么交换后原来指向最大值的指针的值应该是现在指向最小值的指针的值)

即:

if(max==a)max=min;

程序测试截图: 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1010396.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号