1

我正在使用以下代码进行选择排序,但它总是返回 0, 0, 0,....

#include<stdio.h>


main(){

  int i,j;
  int s=8;
float  temp;
float  a[8] = {99, 80.5, 66, 45, 02, 36, 45, 80};


  for(i=0;i<s;i++){
      for(j=i+1;j<s;j++){
           if(a[i]>a[j]){
               temp=a[i];
              a[i]=a[j];
              a[j]=temp;
           }
      }
  }

  printf("After sorting is: ");
  for(i=0;i<s;i++)
      printf(" %d",a[i]);

  return 0;
}

它适用于 int 变量,但不适用于 float。怎么了?

4

2 回答 2

9

排序(我猜它是某种冒泡排序算法)似乎很好。但是输出是错误的,您必须使用%f浮点值的说明符而不是%d(用于整数)。

 for(i=0;i<s;i++)
        printf(" %f",a[i]);
于 2012-12-27T11:01:21.470 回答
1

问题在于您在 printf() 中的格式说明符。

使用 %f 代替 %d 并解决您的问题。

于 2012-12-27T12:43:39.147 回答