怎么样用c语言实现 随机五个介于2.0-10.0之间的实数(包含小数,且每次随机的数字不一样),然后把这五个数字赋值给五个变量 并用冒泡排序法排序
//编写一个可以执行下列任务的C语言程序。
// 1.创建5个在2.0和10.0之间的随机实数。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
//冒泡排序
void sort(int arr[], int size)
{
int j,i,temp;
for (i = 0; i < size-1;i ++)
{
int count = 0;
for (j = 0; j < size-1 - i; j++)//size-1-i是因为每一趟就会少一个数比较
{
if (arr[j] > arr[j+1])//这是升序排法,前一个数和后一个数比较,如果前数大则与后一个数换位置
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
count = 1;
}
}
if (count == 0) //如果某一趟没有交换位置,则说明已经排好序,直接退出循环
break;
}
}
int main(){
float nums[5];
int i;
//1、生产5个2.0~10.0的随机数
//rand()%8:表示生产0-7的随机数
//rand()%10/10.00:表示生产0.0-0.9的随机数
//rand()%10/100.00:表示生产0.00-0.09的随机数
for(i=0;i<5;i++){
nums[i]=rand()%8+2.0+rand()%10/10.00+rand()%10/100.00;
}
sort(nums,5);
//2、输出排序后随机数
for(i=0;i<5;i++)
{
printf("%.2f ",nums[i]);
}
return 0;
}
????可以用数组吗?还是必须单独的5个变量啊?
升序还是降序?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
float a[5],t,sum=0;
int i,j;
srand(time(NULL));
for(i=0;i<5;i++)
{
a[i] = rand()%81/10.0+2;
sum += a[i];
}
printf("平均值为:%.1f\n",sum/5);
for(i=0;i<4;i++)
for(j=0;j<4-i;j++)
{
if(a[j] > a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
for(i=0;i<5;i++)
printf("%.1f ",a[i]);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int main()
{
// 随机数种子
srand((unsigned int)time(NULL));
float a[5], buf;
for (int i = 0; i < 5; i++)
{
//生成随机数取余0~799
a[i] = (rand() % 800) / 100.0 + 2;
printf("%.2f ", a[i]);
}
float sum = 0;
for (int i = 0; i < 5; i++)
{
sum += a[i];
}
float avg = sum / 5;
printf("\n平均值:%.2f", avg);
for (int i = 0; i < 4; ++i) //比较n-1轮
{
for (int j = 0; j < 4 - i; ++j) //每轮比较n-1-i次,
{
if (a[j] < a[j + 1])
{
buf = a[j];
a[j] = a[j + 1];
a[j + 1] = buf;
}
}
}
printf("\n");
for (int i = 0; i < 5; i++)
{
printf("%.2f ", a[i]);
}
return 0;
}
解答如下
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void sort(double arr[],int size)//冒泡排序
{
for(int i=0; i<size-1; i++)
{
for(int j=0; j<size-1-i; j++)
{
if(arr[j]>arr[j+1])
{
double tem=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tem;
}
}
}
}
void prin(double arr[],int size)
{
for(int i=0; i<size; i++)
{
printf("%.1lf ",arr[i]);
}
printf("\n");
}
int main()
{
int n=5;
double t[n];
srand(time(NULL));
for(int i=0;i<n;i++)
{
t[i]=rand()%80/10.0+2;
}
printf("排序前:\n");
prin(t,n);
sort(t,n);
printf("排序后:\n");
prin(t,n);
return 0;
}