1.源代码
#include <stdio.h>
int main()
{
double a[20];
int n,i;
int k=0;
double max;
double tmp;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%lf",&a[i]);
}
max=a[0];
for(i=0;i<n;i++){
if(max<a[i]){
max=a[i];
}
}
for(i=0;i<n;i++){
if(max==a[i]){
k=i;
break;
}
}
tmp=a[0];
a[0]=max;
a[k]=tmp;
for(i=0;i<n;i++){
printf("%.6f",a[i]);
printf(" ");
}
return 0;
}
2.代码思路
- 定义一个主函数
main
,它首先声明一个长度为20的浮点数数组a
,一个整数变量n
,一个循环控制变量i
,一个记录最大值位置的变量k
,一个最大值变量max
,和一个临时变量tmp
。然后,使用scanf
函数从标准输入读取一个整数n
,表示数组的实际长度,以及n
个浮点数,作为数组a
的元素。 - 接下来,将数组
a
的第一个元素赋值给max
,表示初始的最大值,然后使用一个for
循环,遍历数组a
的所有元素,对于每个元素,做以下操作:- 如果当前元素大于
max
,说明找到了一个更大的值,就将当前元素赋值给max
,并将当前元素的下标赋值给k
,表示最大值的位置。
- 如果当前元素大于
- 然后,将数组
a
的第一个元素赋值给tmp
,表示临时存储,然后将最大值max
赋值给数组a
的第一个元素,将tmp
赋值给数组a
的第k
个元素,即最大值原来的位置,这样就实现了最大值与第一个元素的交换。 - 最后,使用一个
for
循环,遍历数组a
的所有元素,并使用printf
函数将它们以6位小数的精度输出到标准输出,每个元素后面输出两个空格。
这段代码的效果是,对于给定的浮点数数组a
,它会将数组中的最大值与第一个元素交换,并输出交换后的数组。例如,如果输入的数组a
是[1.23, 4.56, 7.89, 3.45, 6.78]
,那么输出的数组是[7.890000, 4.560000, 1.230000, 3.450000, 6.780000]
。