上一页 下一个

C语言编程基础

数组

在本节中,我们将创建一个小C程序,生成10个随机数并对它们进行排序。为此,我们将使用一个名为an的新变量排列数组

数组允许您声明和使用相同类型的值的集合。例如,您可能希望创建一个包含五个整数的集合。一种方法是直接声明5个整数:

广告

Int a, b, c, d, e;

这是可以的,但是如果需要1000个整数呢?更简单的方法是声明一个5个整数的数组:

int [5];

数组中5个独立的整数由指数.在c中,所有数组从下标0开始,一直到n-1,因此,int [5];包含五个元素。例如:

int [5];A [0] = 12;A [1] = 9;A [2] = 14;A [3] = 5;A [4] = 1;

数组索引的优点之一是可以使用循环来操作索引。例如,下面的代码将数组中的所有值初始化为0:

int [5];int我;(我= 0;我< 5;I ++) a[I] = 0;

下面的代码依次初始化数组中的值,然后将它们打印出来:

#include  int main() {int一个[5];int我;(我= 0;我< 5;I ++) a[I] = I;(我= 0;我< 5;I ++) printf("a[%d] = %d\n", I, a[I]);}

数组在c语言中一直都在使用。要理解一种常见用法,请启动编辑器并输入以下代码:

#include  #定义MAX 10 int [MAX];int rand_seed = 10;/* from 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; }

这段代码包含几个新概念。的#定义Line声明了一个名为马克斯并设置为10。常量名传统上全部用大写,以便在代码中很明显。这条线int一(马克思)展18新利最新登入示了如何在c语言中声明一个整数数组。注意,由于数组声明的位置不同,它对整个程序来说是全局的。

这条线int rand_seed = 10还声明了一个全局变量,这次命名为rand_seed,每次程序开始时初始化为10。此值是随后随机数代码的起始种子。在实随机数生成器中,种子应该初始化为一个随机值,比如系统时间。在这里,兰德函数将在每次运行程序时产生相同的值。

这条线int rand ()是函数声明。rand函数不接受参数,返回一个整数值。我们将在后面学习更多关于函数的知识。接下来的四行代码实现了rand函数。我们暂时忽略它们。

主要功能正常。声明了四个局部整数,使用for循环将数组填充为10个随机值。注意数组一个包含10个单独的整数。使用方括号指向数组中的特定整数。所以一个[0]指向数组中的第一个整数,一个[1]指的是第二个,依此类推。这一行开头是/** /叫做评论.编译器完全忽略这一行。您可以在注释中为自己或其他程序员放置注释。

的位置添加以下代码更多的东西……备注:

/*冒泡排序数组*/ (x=0;x < MAX-1;x++) for (y=0;y < MAX-x-1;if (a[Y] > a[Y +1]) {t=a[Y];[y] = [y + 1];(y + 1) = t;} / *打印排序数组* / printf ("--------------------\ n”);(我= 0;i < MAX; i++) printf("%d\n",a[i]);

这段代码排序随机值,并按顺序打印。每次运行它,都将得到相同的值。如果想要更改排序后的值,请在每次运行程序时更改rand_seed的值。

要真正理解这段代码在做什么,唯一简单的方法是“手动”执行它。也就是说,假设马克斯是4为了让它更易于管理,拿出一张纸,假装你是电脑。在纸上绘制数组,并将四个随机的、未排序的值放入数组中。执行代码排序部分的每一行,并准确地画出发生了什么。您会发现,每次通过内循环,数组中较大的值都被推到数组的底部,较小的值则向上推到顶部。

特色
Baidu