我定义了三个浮点数,并进行排序,但得不到结果
#include <stdio.h>
void main()
{
int i,j,temp;
float a,b,c;
float num[3]={a,b,c,};
scanf("%f %f %f",&a,&b,&c);
for(i = 0;i < 3;i++)
{
for(j = 0;j<3;j++)
{
if(num[j]>num[j+1])
{
temp = num[j];
num[j] = num[j+1];
num[j+1] = temp;
}
}
}
printf("%.2f %.2f %,2f\n",num[0],num[1],num[2]);
}
错误一:用abc初始化num数组时abc需要先初始化。
错误二:printf三个%.2f最后一个写成了%,2f
错误三:冒泡排序不是这样写的
c++的3个浮点数的冒泡排序如下:
#include <iostream>
#include <iomanip>
using namespace std;
void BubbleSort(double a[], int len)
{
int i, j;
double temp;
for (j = 0; j < len - 1; j++) //对于len个数的数组只需要len-1趟遍历交换
{
for (i = 0; i < len - 1 - j; i++){
if (a[i] > a[i + 1])
{
temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
}
}
}
}
int main()
{
double data[3]; //定义双精度数组
for (int i=0;i<3;++i){
cin>>data[i];//输入数据
}
BubbleSort(data,3);
for(int i=0;i<3;++i){
cout << setiosflags(ios::fixed);
cout << setprecision(2);
cout << data[i] << " ";
}
cout<<endl;
return 0;
}