簡體   English   中英

C中的冒泡排序浮點數

[英]Bubble sort floating point numbers in C

我使用冒泡排序為1.00 20.00 3.30 4.50 5.20 6.10 7.80 8.10 9.14 0.67

0.00 1.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00 20.00

這是我的代碼

main()
{
int i,n = 10,j,value=0;
float median=0;
float a[10] = {1,20,3.3,4.5,5.2,6.1,7.8,8.1,9.14,0.67};
for(i= 0; i< 10; i++) {
    printf("%.2f  ", a[i]);
}
printf("\n\n");
for(i=0;i<n-1;i++)
{
    for(j=0;j<n-i-1;j++)
    {
        if(a[j]>a[j+1])
        {
            value=a[j+1];
            a[j+1]=a[j];
            a[j]=value;
        }
    }
}
for(i= 0; i< 10; i++) {
    printf("%.2f  ", a[i]);
}
}

誰能告訴我我做錯了什么,為什么我在完成排序后會丟失小數點后的所有數字。

PS我正在使用在線編譯器http://www.compileonline.com/compile_c_online.php

value是一個不floatint

int i,n = 10,j,value=0;

您將在循環中獲得截斷的值:

 value=a[j+1];
 a[j+1]=a[j];
 a[j]=value;

使它的float value=0.0f;

問題在這里:

int value=0;

改成:

float value=0.0f;

您已將value聲明為int

誰能告訴我我做錯了什么,為什么我在完成排序后會丟失小數點后的所有數字。

您將value聲明為int value=a[j+1]; 語句會將a[j+1] (是float型)的值截斷為int value聲明為float

float value = 0.0f;  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM