我正在尝试制作气泡排序算法。但是,当我输入一些浮点数(double
类型)时,小数点后的数字消失了。
#include#include void bubbleSort(double numbers[], int SIZE); int main(int argc, char** argv) { const int SIZE = 10; double numbers[SIZE]; // read in SIZE numbers printf("Please enter %d numbers: ", SIZE); for (int i = 0; i numbers[i + 1]) { swap = numbers[i]; numbers[i] = numbers[i + 1]; numbers[i + 1] = swap; isSorted = false; } } lastUnsorted--; } }
下面是一个例子。
Please enter 10 numbers: 5.4 4.1 0.0 -1.5 2.7 9.8 -2.2 3.3 4.1 8.1 -2.200000 -1.000000 0.000000 2.000000 3.300000 4.000000 4.100000 5.000000 8.100000 9.000000 -------------------------------- Process exited after 17.78 seconds with return value 0 Press any key to continue . . .
如您所见,一些数字显示为输入。但是其他人的看法有所不同。例如)我输入了,9.8
但被视为9.000000
。
你能告诉我我做错了什么吗?
该类型的的swap
变量(目前int
)需要符合您所交换的值的类型(目前double
)
因此,无论何时交换两个值,swap
当前分配给type的值都会向下转换为type int
。