题目描述
输入一个正整数n(1<n<100)再输入n个整数,将最小的数与第一个数交换(如果最小的数在第一位,不需要交换),并输出交换后的数。
输入要求
输入一个数n,再输入n个整数。
输出要求
输出交换后的n个数
输入样例
5
3 5 2 8 1
输出样例
1 5 2 8 3
#include<stdio.h>
int main(){
int a[100];//定义一个数组
int n,i,p,t;
scanf("%d", &n);//输入n,确定要输入的个数
for(i=0;i<n;i++)
scanf("%d", &a[i]);//输入n个数
p = 0;
for(i=1;i<n;i++)
if(a[p]>a[i])//如果i所在的位置的值小于p所在的位置上的值,则将i的值赋值给p;
p = i;
if(p!=0){
t = a[p];
a[p] = a[0];
a[0] = t;//将最小的值赋值在第一个位置储存。
}
for(i=0;i<n;i++)
printf("%d ", a[i]);
printf("\n");
return 0;
}
解题思路
由题意得
这是一道要运用数组的题目,题目要求将最小的数放在第一个,因此需要利用循环将每个位置上的值进行比较,因此需要将第一个值假设成最小,与其他位置上的的值进行比较,最后将最小的数放在第一个位置上,最后输出即可。