7-5 交换最小值 (15分)
本题要求编写程序,找出给定的N个数中的最小值,并将其与第一个数交换,最后输出交换后的序列。题目保证最小值是唯一的。
输入格式:
输入在第一行中给出一个正整数N(1≤n≤10),第二行给出N个整数,数字间以空格分隔。
输出格式:
在一行中顺序输出交换后的序列,每个整数后跟一个空格。
输入样例:
5
8 2 5 1 4
输出样例:
1 2 5 8 4
找到最小值再进行交换就可以了。
这里采用和差交换就要注意一个小debug,就是交换两个位置要不同。
#include<stdio.h>
int main(){
int n,i,c;
scanf("%d",&n);
int a[n];
scanf("%d",&a[0]);
c=0;
for(i=1;i<n;i++){
scanf("%d",&a[i]);
if(a[c]>a[i]) c=i;
}
if(c!=0){a[0]=a[0]+a[c];a[c]=a[0]-a[c];a[0]=a[0]-a[c];}
for(i=0;i<n;i++)printf("%d ",a[i]);
return 0;
}