问题1:输入一个正整数n(1 < n < 100),再输入n个整数,将最小数与第一个数交换(若最小数就 在第一位,则不需要交换),输出交换后的n个数。
利用数组,找到其逻辑关系,再使用循环语句,我们可以解决该问题,如下:
#include<stdio.h>
int main(){
int x[100];
int n,i,p,t;
scanf("%d", &n);
for(i=0;i<n;i++)
scanf("%d", &x[i]);
p = 0;
for(i=1;i<n;i++)
if(x[p]>x[i])
p = i;
if(p!=0){
t = x[p];
x[p] = x[0];
x[0] = t;
}
for(i=0;i<n;i++)
printf("%d ", x[i]);
printf("\n");
return 0;
}
//重点在于循环体中各数组数据与引入变量之间的符合逻辑的相互赋值覆盖
问题2:输入一个正整数n( 1 < n < 100),再输入n个整数,将最后一个数与数列最大数交换位置 (若最大数在数列最后,就不用交换),输出交换后的n个数。
与问题1属同类题型,用同样的思路,我们可以编写出:
#include<stdio.h>
int main(){
int y[100];
int n,i,p,t;
scanf("%d", &n);
for(i=0;i<n;i++)
scanf("%d", &y[i]);
p = 0;
for(i=1;i<n;i++)
if(y[p]<y[i])
p = i;
if(p!=n-1){
t = y[p];
y[p] = y[n-1];
y[n-1] = t;
}
for(i=0;i<n;i++)
printf("%d ", y[i]);
printf("\n");
return 0;
}