输入20个实数到数组k中,按大到小的顺序输出
看一下,我哪里写错了呀
代码如下:
#include <stdio.h>
main()
{
float k[28];
int i,j;
for(i=0; i<28; i++)
scanf("%f",&k[i]);
for(i=0; i<28; i++)
for(j=i; j<28; j++)
if(k[i]>k[j])
k[i]=k[j];
for(i=0; i<28; i++)
printf("%f ",k[i]);
}
if(k[i]>k[j])
k[i]=k[j];
if中要交换k[i],k[j]的值,你把k[j]赋值给k[i]了,原来在k[i]中的数据丢失了。
if(k[i]<k[j])
{
float t=k[i];
k[i]=k[j];
k[j]=t;
}
楼上写反了
#include <stdio.h>
// num就是输入的数字数量,也可以先通过scanf赋值
int num = 5;
int main()
{
float k[num];
int i,j;
for(i=0; i<num; i++)
scanf("%f",&k[i]);
for(i=0; i<num; i++)
printf("%.2f ",k[i]);
printf("\n");
for(i=0; i<num; i++){
// 这里应该从i+1开始比较
for(j=i+1; j<num; j++){
if(k[i]<k[j]) {
float temp = k[i];
k[i]=k[j];
k[j]=temp;
}
}
}
for(i=0; i<num; i++)
printf("%.2f ",k[i]);
return 0;
}