目录
一.思路
//01数字随机生成a[10]的数据,(1-100),
// rand是0->num-1;
//02找到最小值;
//03把最小值,与a[0]位置进行交换;
//04把最大值,与a[9]位置进行交换;
//05使得数组有序(选择排序);
二.代码
#include "stdio.h"
#include "stdlib.h"
//01数字随机生成a[10]的数据,(1-100),
// rand是0->num-1;
//02找到最小值;
//03把最小值,与a[0]位置进行交换;
//04把最大值,与a[9]位置进行交换;
//05使得数组有序(选择排序);
main(){
int a[10];//array是数组的意思,数组用a
int num;
int i;
int j;
int n;
int min;
int max;
int flag;//记录下标
int data;
//01
//生成数组中随机数据
n=10;
num=100;
for(i=0;i<n;i++){
a[i]=rand()%num+1;
}
//打印数组
for(i=0;i<n;i++){
printf("%4d",a[i]);
}
printf("\n");
//02
//找到最小值
min=a[0];
flag=0;
for(i=0;i<n;i++){
if(min>a[i]){
min=a[i];//找到最小值的值
flag=i;//记录最小值的位置
}
}
//03
//交换min到a[0]的位置
data=a[flag];
a[flag]=a[0];
a[0]=data;
//打印
for(i=0;i<n;i++){
printf("%4d",a[i]);
}
printf("\n");
//04找最大值,将最大值放到数组最后
//找最大值
max=a[0];
flag=0;
for(i=0;i<n;i++){
if(max<a[i]){
max=a[i];
flag=i;
}
}
//交换位置
data=a[flag];
a[flag]=a[9];
a[9]=data;
//打印
for(i=0;i<n;i++){
printf("%4d",a[i]);
}
printf("\n");
//05
//交换min到a[j]
for(j=0;j<n-1;j++){
//数组元素有10个,比9次就可以
//第一次比10个数,第二次比9个数
min=a[j];
flag=j;//前面的已经排好顺序了,从后面开始比较
for(i=j;i<n;i++){
if(min>a[i]){
min=a[i];
flag=i;
}
}
data=a[flag];
a[flag]=a[j];
a[j]=data;
}
for(i=0;i<n;i++){
printf("%4d",a[i]);
}
printf("\n");
}
三.思考
1.打印这部分代码实际上是遍历一个数组,跟打印链表类似。
2.选择排序,总共10个数,第一次比10个数,第二次比后面9个,依次类推,因为前面的已经是排好的了,只需要排后面的即可实现有序。
四.rand函数
-
若要生成 a 与 b 之间的随机实数,应使用: RAND()*(b-a)+a
-
如果要使用函数 RAND 生成一随机数,并且使之不随单元格计算而改变,可以在编辑栏中输入“=RAND()”,保持编辑状态,然后按 F9,将公式永久性地改为随机数。 [3]
公式 | 说明(结果) |
=RAND() | 介于 0 到 1 之间的一个随机数(变量) |
=RAND()*100 | 大于等于 0 但小于 100 的一个随机数(变量) |