C语言实验——最值

C语言实验——最值

时间: 1ms        内存:64M

描述:

有一个长度为n的整数序列。请写一个程序,把序列中的最小值与第一个数交换,最大值与最后一个数交换。输出转换好的序列。

输入:

输入包括两行。
第一行为正整数n(1≤n≤10)。
第二行为n个正整数组成的序列。

输出:

输出转换好的序列。数据之间用空格隔开。

示例输入:

5
2 1 5 4 3


示例输出:

1 2 3 4 5

提示:

参考答案(内存最优[748]):

#include <stdio.h>
void main()
{
	int n,i,max,min;
	int s[11];
	scanf("%d",&n);
	while(n>10||n<1)
		scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		scanf("%d",&s[i]);
		while(s[i]<1)
			scanf("%d",&s[i]);
	}
	max = s[1];
	min = s[1];
	for(i=1;i<=n;i++)
	{
		
		if(max<s[i])
			max = s[i];
		if(min>s[i])
			min = s[i];
	}
	for(i=1;i<=n;i++)
	{
		if(max==s[i])
		{
			s[i] = s[n];
			s[n] = max;
		}
		if(min==s[i])
		{
			s[i] = s[1];
			s[1] = min;
		}
	}
	for(i=1;i<=n;i++)
	{
		printf("%d",s[i]);
		if(i<n)
			printf(" ");
		else
			printf("\n");
	}
}

参考答案(时间最优[0]):

#include <stdio.h>
void main()
{
	int n,i,max,min;
	int s[11];
	scanf("%d",&n);
	while(n>10||n<1)
		scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		scanf("%d",&s[i]);
		while(s[i]<1)
			scanf("%d",&s[i]);
	}
	max = s[1];
	min = s[1];
	for(i=1;i<=n;i++)
	{
		
		if(max<s[i])
			max = s[i];
		if(min>s[i])
			min = s[i];
	}
	for(i=1;i<=n;i++)
	{
		if(max==s[i])
		{
			s[i] = s[n];
			s[n] = max;
		}
		if(min==s[i])
		{
			s[i] = s[1];
			s[1] = min;
		}
	}
	for(i=1;i<=n;i++)
	{
		printf("%d",s[i]);
		if(i<n)
			printf(" ");
		else
			printf("\n");
	}
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注