用c++实现两个整数和三个浮点数的排序,按照从小到大的顺序将排序结果输出

高手来,不要抄的……

#include <stdio.h>

#include <stdlib.h>  // 包含rand()和srand()函数

#include <time.h>    // 包含time()

#define MAXlen 100

void bubble_sort(double *x,int *a,unsigned int n) { // 冒泡排序函数

int j, k, h,tmp;

double t;

for(h = n - 1; h > 0; h--) {          // 循环到没有比较范围 

for(j = 0, k = 0; j < h; j++) {   // 每次预置k = 0,循环扫描后更新k 

if(*(x + j) > *(x + j + 1)) { // 大的放在后面,小的放到前面 

t = *(x + j);

*(x + j) = *(x + j + 1);

*(x + j + 1) = t;         // 完成交换 */

k = j;                    // 保存最后下沉的位置。这样k后面的都是排序排好了的。

tmp = a[j];

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

a[j + 1] = tmp;

}

}

}

}

int main() {

int ia[] = {1,1,0,0,0};  // 1表示数组da的对应位置是整数,0表示浮点数

double da[] = {69.0,78.0,56.6,72.5,96.3}; // 前两个是整数,后三个是浮点数

unsigned n = sizeof(ia)/sizeof(ia[0]);

printf("排序前:\n");

for(unsigned i = 0;i < n;i++) {

if(ia[i] == 1) printf("%4d ",(int)da[i]);

else printf("%.2lf ",da[i]);

}

printf("\n");

bubble_sort(da,ia,n);

printf("排序后:\n");

for(i = 0;i < n;i++) {

if(ia[i] == 1) printf("%d ",(int)da[i]);

else printf("%.2lf ",da[i]);

}

printf("\n");

return 0;

}

追问

要求把两个整数排一起,三个浮点数排一起

追答

排序后,其顺序是惟一的,两个整数可能在一起,也可能不在一起,既然要求排在一起,那还排序干嘛?

追问

老师就是那么要求的

追答

那只能改变两个整数的大小,迫使排序后,两个整数排在一起。比如
两个整数分别为: 36,45,则排序结果为: 36,45,56.60,72.50,96.30
当然可选数值很多,你可以自己试试!

温馨提示:内容为网友见解,仅供参考
无其他回答

C++中三个浮点数比较大小
int i,j;double f[3]; \/\/待比较浮点数 double temp;\/\/由大到小进行排序 for ((i = 0; i < 3; i++)for ((j = 0; j < 3; j++)if(-1 == FloatCompare(f[i], f[j])) \/\/小于,则互换 { temp = f[i];f[i] = f[j];f[j] = temp }\/\/输出 for (i = 0; i...

c++ 输入两个实数,按代数值由小到大的顺序输出这两个数
t=a;a=b;b=t;} 重点在这个语句里面,如果你输入的数a,b,如果前者大 就不进行这个语句,直接输出,如果前者小于后者则进行这个语句,进行互换值,意思就是原来的a的值变为现在的b的值,原来的b的值给了a 。不知这样解释您是否能够理解?

用C语言输入3个整数,要求按从小到大的顺序输出。谢谢大家
include<stdio.h>void main(){int a,b,c,t;printf("请输入三个整数:a b c\\n");scanf("%d%d%d",&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}printf("排序后的三个整数为:%d,%d,%d\\n",a,b,c);} 语言标准 起初,C...

C++一个整数加一个浮点数结果是什么
整数与浮点数一起运算, 结果将会是浮点数

C++ 设计一个函数,将两个浮点数传入,然后通过引用把其和、差、积传出...
你可以使用下面的方法实现 void Math(float a,float b,float &sum,float &sub, float &pro){ &sum = a + b;&sub = a - b;&pro = a * b;} 参考资料:http:\/\/www.biye5u.com\/article\/prog\/C\/list26-1.html

C++求助!!任意输入n个浮点数,输出它们本身及平均值、和
double a[n];cout<<"Please input the numbers:\\n";for(m=0;m<n;m++){ cin>>a[m];} for(m=0;m<n;m++){ sum+=a[m];} average=sum\/n;cout<<"sum="<<sum<<endl;cout<<"average="<<average<<endl;return 0;} 主要就是数组定义时的n,还有for循环那里,三个表达式的顺序 ...

【C++】用三个重载 求整数,单浮点数,双浮点数绝对值
cout<<"请输入一个整数:"<<'\\n';cin>>x;if(x>=0) cout<<"绝对值是:"<<x<<'\\n';else cout<<"绝对值是:"<<(-1)*x<<'\\n';return 0;} float jueduib(float b){ float y;cout<<"请输入一个单浮点数:"<<'\\n';cin>>y;if(y>=0.0) cout<<"绝对值是:"<<y<<...

c++编写一个程序,要求输入两个数a和b,计算出a和b的和,差,积,并输出...
一旦获取到两个有效的整数,程序将进行如下计算:-输出a和b的和,即a+b。-计算a和b的差,即a-b。-计算a和b的积,即a*b。-计算a除以b的商(注意除法可能产生小数,因此使用浮点数表示),即a\/(b*1.0)。-计算a除以b的余数,即a%b。最后,使用system函数暂停程序执行,等待用户按任意键继续...

3.设计一个完整的C++程序定义一个类模板,利用它实现10个整数、浮点数...
\/\/ 浮点数排序 std::vector<float> floatData = { 7.2f, 2.5f, 9.8f, 1.3f, 5.6f, 4.1f, 8.7f, 3.9f, 6.4f, 10.0f };Sorter<float> floatSorter(floatData);floatSorter.Sort();std::cout << "Sorted Floats: ";floatSorter.PrintSorted();\/\/ 字符排序 std::vector<char...

编写程序,接受两个双精度浮点数,输出他们的和.
楼上的同志sum没赋初值 d是输入十进制,double的话要改为%lf include<stdio.h> void main(){ double a,b,sum=0;printf("please input two number : ");scanf("%lf,%lf",&a,&b);sum=a+b;printf("a+b=%lf",sum);}

相似回答