當前位置:首頁 » 編程語言 » 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);