C++的一道习题

来源:百度知道 编辑:UC知道 时间:2024/05/27 00:03:53
要求是:输入数组,最大的元素与第一个元素交换,最小的元素与最后一个元素交换,输出数组
下面的程序里,最大的是对了,但是最小的不对,请各位高手帮个忙

#include <stdio.h>
void main()
{
int a[10];
int i,j,k,max,min,temp;
printf ("输入10个数组元素:\n");
for (i=0;i<10;i++)
scanf ("%d",&a[i]);
j=k=0;
max=min=a[0];
for (i=1;i<10;i++)
{if (max<a[i])
{j=i;
max=a[j];
}
else if (min>a[i])
{k=i;
min=a[i];
}
//将最大值与第一个元素互换
temp=a[0];
a[0]=a[j];
a[j]=temp;
// 将最小值与最后个元素互换
temp=a[9];
a[9]=a[k];
a[k]=temp;

for (i=0;i<10;i++)
printf ("%d ",a[i]);
printf ("\n");
}

}
第二个回答以后判断大小是对了,但是交换位置不对

#include <stdio.h>
void main()
{
int a[10];
int i,j,k,max,min,temp;
printf ("输入10个数组元素:\n");
for (i=0;i<10;i++)
scanf ("%d",&a[i]);
j=k=0;
max=min=a[0];
for (i=1;i<10;i++)
{if (max<a[i])
{j=i;
max=a[j];
}
else if (min>a[i])
{k=i;
min=a[i];
}
} //for循环到这里就应该结束了
temp=a[0];
a[0]=a[j];
a[j]=temp;
temp=a[9];
a[9]=a[k];
a[k]=temp;
for (i=0;i<10;i++)
printf ("%d ",a[i]);
printf ("\n");
}

发现
for (i=0;i<10;i++)
printf ("%d ",a[i]);
printf ("\n");
} 后面缺了{

‘找最大和最小数’应该在一个循环中,‘将最大值与第一个元素互换’与‘将最小值与最后个元素互换’的语句应该放在循环外面。
改正如下:
将到数第二个大括号移至"//将最大值与第一个元素互换"之前
for (i=1;i<10;i++)
{ if (max<a[i])
{ j=i;
max=a[j];
}
else