三极管


私信TA

用户名:weiwangdong

访问量:2849

签 名:

等  级
排  名 514
经  验 4399
参赛次数 3
文章发表 11
年  龄 0
在职情况 教师
学  校 绍兴职业技术学院
专  业

  自我简介:

解题思路:

本题重点在数据处理上.

因为题意只要求:

(1)最小值与第一个数交换( min

(2)最大值与最后一个数交换( max

因而最好是先判断完哪个最大,哪个最小,然后再进行交换(判断完,再交换),如果边判断边交换就容易出错。

注意事项:
本题难点在当最大值刚好是第一个数,即n[0],普通的写法就容易出错。

比如:16 9 8 7 5 1 4 12 10 13

第一次交换(n[0]

第二次交换(n[9]

明显错了!

所以要考虑最大值是第一个数的特殊情况,即当max=0时,交换改成:(n[9]


如此,即可得到正确答案:1,9,8,7,5,13,4,12,10,16

参考代码:

#include int n[10];

void get_data()
{
	int i;
	for( i=0; i<10; i++ )
		scanf("%d", &n[i]);	
}
void process_data(int x[])
{
	int i, j, min, max, tmp;
	min = max = 0;
	for( j=1; j n[j] )
			min = j;
		if( n[max] < n[j])
			max = j;
		}
	tmp = n[min];
	n[min] = n[0];
	n[0] = tmp;	
	if( max == 0 ) max = min;		
	tmp = n[max];
	n[max] = n[9];
	n[9] = tmp;		
}

void put_data()
{
	for( int i=0; i<10; i++ )
		printf( "%d ", n[i]);
	printf("\n");	
}
int main()
{
	get_data();
	process_data(n);
	put_data();
		
	return 0;
}


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区