当前位置:首页 » 编程语言 » c语言对多位浮点数排序
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言对多位浮点数排序

发布时间: 2023-03-08 14:56:02

c语言利用指针完成n(小于20个)个浮点数由小到大顺序输出

#include<stdio.h>

#define MAX_SIZE 6
void main()
{
double ArrayBuff[MAX_SIZE] = {2.2,1.5,7.8,3.6,4.2,6.5};
int CycleI = 0;
int CycleJ = 0;
double ChangeNum = 0;
double * pBuff = NULL;

//如果想手动输入的话:
printf("请输入%d个浮点数:",(int)MAX_SIZE);
for (CycleI = 0;CycleI < MAX_SIZE;CycleI++)
{
scanf("%lf",&ArrayBuff[CycleI]);
}

for(CycleJ = 0;CycleJ < (MAX_SIZE - 1);CycleJ++)
{
pBuff = ArrayBuff;
for(CycleI = 0;CycleI < (MAX_SIZE - 1 - CycleJ);CycleI++)
{
if((* pBuff) - (* (pBuff + 1)) > 0)
{
ChangeNum = * pBuff;
* pBuff = * (pBuff + 1);
* (pBuff + 1) = ChangeNum;
}
pBuff++;
}
}

for(CycleI = 0;CycleI < MAX_SIZE;CycleI++)
{
printf("%lf\t,",ArrayBuff[CycleI]);
}

}

② C语言-浮点数冒泡排序

为什么一个冒泡用那么复杂,直接用一个浮点数组排列不就行了吗?

③ c语言怎么比较多个浮点数大小并使其从大到小排列

这个,c语言里面的排序算法是通用的吧,先这些数据存放在一个数组里面,然后,用简单排序算法进行排序,可以选择从大到小排列,然后数组遍历循环以后就可以输出了。

④ C语言随机生成5个浮点数,按照小数点后的数字大小进行排序

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{ int nums[20],num[20];
int i;

srand(time(NULL));
for (i=1;i<=20;i++)
{
nums[20] = rand();
printf("%d\n",nums[20]);
}
旦鼎测刮爻钙诧水超惊getch();
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int nums[21],num[21]; /*你的角标从1开始,这里的20就不够了*/
int i,j;
int index,temp;

srand(time(NULL));
for (i=1;i<=20;i++)
{
nums[i] = rand(); /*这个应当是i*/
printf("%d\n",nums[i]);
num[i]=nums[i]; /*备份原始数据*/
}

/*选择法,从小到大排序*/
for (i=1;i<=20;i++)
{
index=i; /*从i到20这几个元素中最小值的序号*/
for (j=i+1;j<=20;j++)
if (nums[index]>nums[j])
index=j;

if (index!=i)/*交换i和index的元素的值*/
{
temp=nums[index];
旦鼎测刮爻钙诧水超惊 nums[index]=nums[i];
nums[i]=temp;
}
}
for (i=1;i<=20;i++)
printf("%d\t%d\n",num[i],nums[i]);

getch();
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int nums[21],num[21]; /*你的角标从1开始,这里的20就不够了*/
int i,j;
int index,temp;

srand(time(NULL));
for (i=1;i<=20;i++)
{
nums[i] = rand(); /*这个应当是i*/
printf("%d\n",nums[i]);
num[i]=nums[i]; /*备份原始数据*/
}

/*选择法,从小到大排序*/
for (i=1;i<=20;i++)
{
index=i; /*从i到20这几个元素中最小值的序号*/
for (j=i+1;j<=20;j++)
if (nums[index]>nums[j])
index=j;

if (index!=i)/*交换i和index的元素的值*/
{
temp=nums[index];
旦鼎测刮爻钙诧水超惊 nums[index]=nums[i];
nums[i]=temp;
}
}
for (i=1;i<=20;i++)
printf("%d\t%d\n",num[i],nums[i]);

getch();
return 0;
}
随机数真的生成了吗?为什么我记得语句不是这样的= =!你生成随机数然后。每随机一次只是一个数字所以你要循环20次存入数组。然后用数组排序来做它~我没看到你的排序语句……就在最后加个for(int j=0;j<20;j++)
{
旦鼎测刮爻钙诧水超惊 for(int k=1;k<20;k++)
{
if(a[j]<a[k])
{temp=a[j];a[k]=a[j];a[j]=a[k];}
}
}
这是排序的~然后输出就可以了~
题目要求你把得到的20个数和排序后的20个数分别显示出来。

看你的代码只完成了一部分,剩下的就是排序了,网上有很多排序的方法

如有不明白,可以call我。

才发现,你这个还有问题,只是把第二十个数组的内容显示出来了

应该把:nums[20] = rand();
printf("%d\n",nums[20]);
中的20都改成i,并且每个数字加上一个空格区分,然后可以按照楼上的方法排序
int sort(int *s,int *max) //最大数的请在main()中声明,函数返回最小数
{ int min;int i=1,j;min=*s;
while(i<40)
{ if(min<=*(s+j)) if(max<=*(s+j)) max=*(s+j),j++;
else min=*(s+j),j++;
}
return min;}
我英语也不好,猜着大概意思是要你弄20个随机数然后用选择排序法排序,然后再显示出来,但那个单词list不知道是不是什么数据结构,毕业3年了,基本没有编过程,所以也快忘光了。以下是我在vc2008里调试的,你参考一下,至于选择排序,你可以搜索一下,
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{ int nums[20];
int i;

srand(time(NULL));
for (i=0;i<20;i++)
{
nums[i] = rand()%20;//rand()%20意思是0到19之间的随机数,这个你自己定
printf("%d\n",nums[i]);//nums数组最后一个应该是num[19]才对,你要显示num[20]已经越界了
}
getchar();//getch(),我vc2008里有错,我就用这个了
return 0;
}
float b=rand()/(RAND_MAX+1.0);
printf("%f\n",b);