数组
在本节中,我们将创建一个小型的C程序,生成10个随机数和排序。要做到这一点,我们将使用一个新的变量安排称为数组。
数组允许您声明和使用相同类型的值的集合。例如,您可能想要创建5个整数的集合。一种方式将直接宣布五个整数:
广告
int a, b, c, d, e;
这是好的,但是如果你需要一千个整数呢?一个更简单的方法是声明一个数组的五个整数:
int [5];
五个独立的整数在这个数组的访问指数。所有数组从指数0到n - 1 c。因此,int [5];包含五个元素。例如:
int [5];一个[0]= 12;[1]= 9;[2]= 14;[3]= 5;[4]= 1;
关于数组索引的好处之一是,您可以使用一个循环操作指数。例如,下面的代码初始化数组中所有的值为0:
int [5];int我;(我= 0;我< 5;我+ +)[我]= 0;
下面的代码初始化数组中的值按顺序,然后打印出来:
# include < stdio。h > int main () {int [5];int我;(我= 0;我< 5;我+ +)[我]=;(我= 0;我< 5;我+ +)printf (" [% d] = % d \ n”,我,一个[我]);}
数组在使用c来理解一个共同使用,开始一个编辑器,输入以下代码:
# include < stdio。10 h > # define马克斯int (MAX);int rand_seed = 10;/ *从k和r -返回0到32767之间的随机数。* /int rand (){ rand_seed = rand_seed * 1103515245 +12345; return (unsigned int)(rand_seed / 65536) % 32768; } int main() { int i,t,x,y; /* fill array */ for (i=0; i < MAX; i++) { a[i]=rand(); printf("%d\n",a[i]); } /* more stuff will go here in a minute */ return 0; }
这段代码包含几个新概念。的#定义行声明了一个常数命名马克斯并将它设置为10。常数名称通常写在全部大写,使它们明显的代码中。这条线int一(马克思);向18新利最新登入您展示如何在c整数数组声明指出,因为数组的声明的位置,它是全球性的整个程序。
这条线int rand_seed = 10还声明一个全局变量,这次命名rand_seed,每次都被初始化为10程序开始。此值的起始种子随机数字代码。在一个真正的随机数发生器,种子应该初始化随机值,如系统时间。在这里,兰德函数将产生相同的值每次运行程序。
这条线int rand ()是一个函数声明。兰德函数不接受参数并返回一个整数值。稍后我们将了解更多关于函数。下面四行兰德函数实现。我们将忽略它们。
主要功能是正常的。四个地方整数宣布,充满了10个随机值数组使用for循环。请注意,该数组一个包含10个人整数。你点到一个特定的整数数组中使用方括号。所以一个[0]是指第一个整数数组,一个[1]指的是第二个,等等。行开始/ *和结束* /被称为评论。编译器完全忽略了。你可以把笔记在评论自己或其他程序员。
现在添加以下代码的地方更多的东西……备注:
/ *冒泡排序数组* / (x = 0;x < MAX-1;x + +) (y = 0;y < MAX-x-1;y + +)如果([y] > [y + 1]) {t = [y];[y] = [y + 1];(y + 1) = t;}/ *打印排序数组* / printf (" - - - - - - - - - - - - - - - - - - - - - - \ n”);(我= 0;我< MAX; i++) printf("%d\n",a[i]);
这段代码排序在顺序随机值并打印它们。每次你运行它,你将得到相同的值。如果你想改变值排序,改变rand_seed的值每次运行程序。
唯一真正简单的方法来理解这段代码所做的是执行“手工”。That is, assume马克斯是4使它更易于管理,拿出一张纸,假装你是电脑。你的纸上画出数组,把四个随机,无序值数组。执行的排序部分的每一行代码,画出到底发生了什么。你会发现,每一次内循环,更大的数组中的值被对数组和较小的值泡沫的底部向顶部。