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");
}
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。